哪些人,哪些公司或软件在用SQLite:

Nokia's Symbian,Mozilla,Abobe,Google,阿里旺旺,飞信,Chrome,FireFox
可见SQLite的稳定性及性能是不会有什么问题的,详细列表请参见:http://www.sqlite.org/famous.html。

网上关于SQLite的介绍一抓一大把,总结起来,他有如下特点:

SQLite优点及适应场合:

轻量级
绿色组件
单一文件
跨平台
查询效率极高
使用事务插入速度极快
支持limit分页
适合查询速度要求较高,内存占用较少的场合,尤其是嵌入式操作系统,如各种手机操作系统,低并发web(99.9%网站是低并发),php环境里原生支持SQLite,asp.net/.net winform里可以很方便的使用System.Data.SQLite

缺点与不适应场合:

不适合并发性高的场合 如大量insert,update访问,SQL标准支持不全

SQLite vs Access

SQLite官方网站没有与Access对比的说明,我觉得应该是:SQLite是开源的,单文件,不仅可以运行在Windows上,也可以运行在各种Linux系统上,而他的很多场合跟Access是不同的,他的优势足以站在一个比Access更高的位置,所以没有可比性,但我们普通人拿Access跟SQLite比,是因为他们交集的地方,关系到我们取舍。

交集处有:windows系统里web/winform,

在我的测试中
一次插入5行及以上,每行有20来个字符,SQLite使用事务速度远快于access
一次插入多行,每行有8000以上字符,SQLite使用事务速度 快于 access 一倍左右
SQLite查询速度极快,甚至快过SQL Server 2008 r2 10倍(因为MSSQL索引列不能超过900个字符,所以varchar(max)不能建索引)
单条数据插入速度比Access略慢,事务插入大量数据,在每行数据量不大时,远快于Access
Access经常出现数据库坏的情况,SQLite听说没有这个问题。

SQLite极速Select测试

同样的数据,同样的SQL语句:
SELECT * FROM dbo.Articles WHERE txtContent LIKE '%柳永法%'
在SQLite及MSSQL上执行效率让人震撼,SQLite竟然快MSSQL 10倍,
并且SQLite没有进程只看到程序进程内存没有任何升高,而MSSQL的进程则从1G多升到了3G多

数据库 条数 查询用时
SQLite 118848 60s
MSSQL 118848 540s
     
SQLite 7428 6s
MSSQL 7428 60s

关于SQLite多线程及ASP.net并发测试

view plaincopy to clipboardprint?
  1. //Winform 1000个线程同时操作,仅cpu占用很高外,数据正常插入,没有使用Lock
  2. ThreadPool.SetMinThreads(1000, 1000);
  3. ThreadPool.SetMaxThreads(1000, 1000);
  4. for (int i = 0; i < 1000; i++)
  5. {
  6. ThreadPool.QueueUserWorkItem((obj) =>
  7. {
  8. SQLiteParameter[] parms ={
  9. new SQLiteParameter("@txtTitle", "标题"+obj),
  10. new SQLiteParameter("@txtContent", "内容可以大于8000"+obj+new string('=',8000+1000)),
  11. new SQLiteParameter("@Adder", "添加人"+obj),
  12. new SQLiteParameter("@AddTime", DateTime.Now),
  13. new SQLiteParameter("@DeptId", 1),
  14. };
  15. SQLiteHelper.ExecuteNonQuery(SQLiteConnectionString, CommandType.Text, @"
  16. insert into Articles(txtTitle,txtContent,Adder,AddTime,DeptId) values (@txtTitle,@txtContent,@Adder,@AddTime,@DeptId)
  17. ", parms);
  18. }, i);
  19. }

ASP.net使用Microsoft Web Application Stress Tool进行1000个线程的压力测试1分钟,使用Elmah.dll记录错误,测试后没发现程序报错,也只是很占CPU而已

通过本人测试,SQLite也应该算是比较适合高并发,及多线程,但官方说不适合,不知道是不是我测试方法不对

SQLite资源地址:

SQLite的官方主页:
http://www.sqlite.org/

SQLite中文站:
http://www.sqlite.com.cn/

System.Data.SQLite:
http://sqlite.phxsoftware.com/

sql学习笔记之 嵌入式数据库(sqlite,firebird)
http://www.cnblogs.com/ljzforever/archive/2010/03/09/1681453.html

SQLite GUI图形管理工具:

SQLite Expert(可选数据库编码,支持原生配置各种参数,软件更新速度极快,一天一个或多个版本,经试用,发现还有很多不完善的地方):
http://www.sqliteexpert.com/download.html

Navicat for SQLite(导入,导出功能强大,功能实用,操作直观,有些小缺陷,更新速度还行):
http://www.navicat.com/en/download/download.html

SQLite Administrator(古老,但还是有很多人觉得不错,编码支持不强,可能乱码):
http://sqliteadmin.orbmu2k.de/

FireFox管理SQLite的插件 SQLite Manager(没多使用。看起来不错):
https://addons.mozilla.org/en-US/firefox/addon/5817/

SQLite参考资料:

开源有感系列 之开源数据库有感[新内容添加版本]:
http://www.cnblogs.com/unruledboy/archive/2005/02/04/98604.html

到底SQLite有多强?在我的2台机器上的压力测试:
http://www.cnblogs.com/unruledboy/archive/2005/03/26/sqliteperformance.html

Access和Firebird及SQLite的性能比较
http://www.cnblogs.com/kevin-moon/archive/2008/12/01/1344658.html
http://www.cnblogs.com/Kevin-moon/archive/2008/11/14/1333285.html

浅谈SQLite——实现与应用:
http://www.cnblogs.com/hustcat/archive/2010/01/27/1657821.html

SQLite数据库是中小站点CMS的最佳选择:
http://www.dbanotes.net/database/sqlite_cms.html

SQLite的局限性:
http://dev.firnow.com/course/7_databases/sql/sqlServer/200838/103309.html

sqlite常见问题:
http://dev.firnow.com/course/7_databases/sql/sqlServer/200838/103310.html

MySQL大战SQLite(PostgreSQL强势乱入):
http://obmem.com/?p=493


★SQLite技术上的优点和特性

  SQLite是一个轻量级、跨平台的关系型数据库。既然号称关系型数据库,支持SQL92标准中常用的玩意儿(比如视图、事务、触发器等)就是理所当然的了,咱今天就不细说了。今天主要聊聊一些有点特色的玩意儿。

  ◇轻量级
  先说它的第一个特色:轻量级。想必SQLite的作者很看重这个特性,连它的Logo都是用的“羽毛”,来显摆它的轻飘飘。
SQLite和C/S模式的数据库软件不同,它是进程内的数据库引擎,因此不存在数据库的客户端和服务器。使用SQLite一般只需要带上它的一个动态库,就可以享受它的全部功能。而且那个动态库的尺寸也挺小,3.6.27版本也就几百K

  ◇绿色软件
SQLite的另外一个特点是绿色:它的核心引擎本身不依赖第三方的软件,使用它也不需要“安装环境”(如:Oledb等)。所以在部署的时候能够省去不少麻烦。

  ◇单一文件
所谓的“单一文件”,就是数据库中所有的信息(比如表、视图、触发器、等)都包含在一个文件内。这个文件可以copy到其它目录或其它机器上,也照用不误。

  ◇跨平台/可移植性
  如果光支持主流操作系统(Windows,Linux),那就没啥好吹嘘的了。除了主流操作系统,SQLite还支持了很多小型嵌入式系统,比如Android、Windows Mobile、Symbin、Palm、VxWorks等,也就是说iPhone,Android等手机上都可以用。

  ◇内存数据库(in-memory database)
这年头,内存越来越便宜,很多普通PC都开始以GB为单位来衡量内存(服务器就更甭提了)。这时候,SQLite的内存数据库特性就越发显得好用。
SQLite的API不区分当前操作的数据库是在内存还是在文件(对于存储介质是透明的)。所以如果你觉得磁盘I/O有可能成为瓶颈的话,可以考虑切换为内存方式。切换的时候,操作SQLite的代码基本不用大改,只要在开始时把文件Load到内存,结束时把内存的数据库Dump回文件就OK了。在这种情况下,前面提到的“online backup API”就派上用场了,聪明的同学应该明白我为啥这么期待backup功能了吧?

★技术上的缺点和不足

  前面光聊了特性和优点,为了避免枪手写软文的嫌疑,再来说说SQLite的一些缺点。列位看官将来如果想用它,这些缺点要权衡一下。

  ◇并发访问的锁机制
SQLite在并发(包括多进程和多线程)读写方面的性能一直不太理想。数据库可能会被写操作独占,从而导致其它读写操作阻塞或出错。

  ◇SQL标准支持不全
在它的官方网站上,具体列举了不支持哪些SQL92标准。我个人感觉比较不爽的是不支持外键约束。

  ◇网络文件系统(以下简称NFS)
  有时候需要访问其它机器上的SQLite数据库文件,就会把数据库文件放置到网络共享目录上。这时候你就要小心了。当SQLite文件放置于NFS时,在并发读写的情况下可能会出问题(比如数据损坏)。原因据说是由于某些NFS的文件锁实现上有Bug。

★编程语言接口

  SQLite支持很多种语言的编程接口。这对于我这种喜欢混用多种编程语言的人来说,是很爽的。下面我大概介绍一下。

  ◇C/C++
  由于SQLite本身是C写的,它自带的API也是C接口的。所以C/C++用起来最直接了。假如你不喜欢面向过程的C API风格,可以另外找个C++的包装库。想重新发明轮子的同学,也可以自己包装一个。
◇Java
如果要用Java访问SQLite,可以通过SQLite的JDBC驱动,或者通过专门的SQLite包装库。我个人建议走JDBC方式,万一将来要换数据库,代码就不用大改。
◇Python
pysqlite是Python操作SQLite的首选。从Python 2.5开始,它已经被整合到Python的标准库中。看来Python社区还是蛮喜欢SQLite嘛。
◇.net
对于喜欢.net的同学,可以通过System.Data.SQLite来访问。
◇Ruby
Ruby可以通过SQLite-Ruby操作SQLite数据库,不过我没用过。
◇Perl
在CPAN上有DBD::SQLite,不过我也没用过。

★一些非技术的参考因素

  前面讲的都是技术层面的话题,如果你考虑在公司的商业软件项目中使用SQLite。还需要根据“如何选择开源项目”里面提到的几个参考因素,再评估一下。
◇授权协议(License)
SQLite使用的是Public Domain协议,这是最爽一种,可以放心大胆地用。
◇用户的普及程度
最近这几年,使用SQLite的人越来越多(从Google Trends可以反应出来)。包括一些大公司也开始把它整合到产品中(比如Google的Gears、Apple的Safari、Adobe的AIR)。这说明它的健壮性、稳定性等方面不会有太大问题。
◇开发的活跃程度
如果到SQLite的Change Log上大致了解一下,可以看出最近5年基本上每1-2个月都会有更新。说明开发的活跃度还是非常高的。
从上述几个非技术因素来看,SQLite用于商业公司的软件项目还是非常靠谱的。

引用:
SQLite介绍、学习笔记、性能测试
http://www.yongfa365.com/item/SQLite.html

转载于:https://www.cnblogs.com/goody9807/archive/2012/03/18/2404284.html

SQLite介绍、学习笔记、性能测试相关推荐

  1. DMU-参数介绍-学习笔记1

    DMU软件介绍 DMU是一个数量遗传学工具包,主要功能包括估计方差组分和固定效应,预测育种值.DMU的开发历史可以追溯到25年前,大部分功能基于数量遗传学研究的需求而开发.在丹麦动物育种研究中,DMU ...

  2. WEB 性能测试-介绍 学习笔记

    WEB 性能测试-介绍 定义:针对系统的性能指标制定性能测试方案,执行测试用例,得出测试结果来验证系统的性能指标是否满足既定值. 设计性能测试 一.如何设计 模拟业务场景中一个用户的行为 模拟业务场景 ...

  3. SQLite数据库学习笔记1:报错:The database disk image is malformed

    目录 问题现象: 问题分析: 解决方法: 问题现象: 今天在项目中用到了SQLite数据库,此前并未学习过,因此就简单的了解了一下,很快就遇到了第一个小问题,报错如下: The database di ...

  4. USB驱动程序之概念介绍学习笔记

    现象:把USB设备接到PC 1. 右下角弹出"发现android phone" 2. 跳出一个对话框,提示你安装驱动程序 问1. 既然还没有"驱动程序",为何能 ...

  5. Eclipse中Build Path的使用介绍---学习笔记

    什么是Build Path? Build Path是指定Java工程所包含的资源属性集合. 在一个成熟的Java工程中,不仅仅有自己编写的源代码,还需要引用系统运行库(JRE).第三方的功能扩展库.工 ...

  6. openTSDB/Bosun报警语法 介绍/学习笔记

    openTSDB表达式概述 /api/query, 内含rate options, filters Filters Metric Query String Format openTSDB中文版 Bos ...

  7. metaq 主要配置介绍 ——————学习笔记

    zk.zkEnable=true(是否注册到zk,默认为true) zk.zkConnect=localhost:2181 (zk的服务列表) zk.zkSessionTimeoutMs=30000( ...

  8. DMU-单性状重复力模型-学习笔记3

    单性状重复力模型 本次主要是演示如何使用DMU分析单性状重复力模型. 重复力模型和动物模型的区别: 不是所有的性状都可以分析重复力模型, 首先重复力模型是动物模型的拓展, 它适合一个个体多个观测值的情 ...

  9. 学习笔记:CentOS7学习之十六:LVM管理和ssm存储管理器使用

    目录 学习笔记:CentOS7学习之十六:LVM管理和ssm存储管理器使用 16.1 LVM的工作原理 16.1.1 LVM常用术语 16.1.2 LVM优点 16.2 创建LVM的基本步骤 16.2 ...

  10. 学习笔记----SLAM的概论与架构

    文章目录 学习笔记----SLAM的概论与架构 一.SLAM的提出与发展 二.从滤波器谈SLAM 1.基于概率估计做出定位 2.通过概率不断更新自身位置 三.SLAM的新突破--图优化 四.SLAM的 ...

最新文章

  1. eclipse 中配置maven环境
  2. 波形的转换与信号处理
  3. Elasticsearch 2.0以上版本根据条件批量删除Java如何实现
  4. boost::statechart模块实现状态迭代测试
  5. 《大众创业做电商——淘宝与微店 开店 运营 推广 一册通》一一1.3 选择创业的行业...
  6. Anu Has a Function CodeForces - 1300C(二进制位运算)
  7. JAVA学习:maven开发环境快速搭建
  8. 年金计算机在线,年金终值复利计算器在线(企业年金计算方法)
  9. 51单片机制作简易计算器(动态数码管、矩阵按键)
  10. 一张图读懂系列|量子三大特性之纠缠
  11. VMware16安装Win10系统图文教程
  12. java合成wav在linux出错,Java audio fails to play wav file in Linux
  13. windows屏幕亮度调节失灵的解决方法
  14. 优化网页加载各项的讨论
  15. 自定义组件使用el-dialog,且内含表单时,表单提交时字段报错undefined
  16. 安兰德《源泉》读后感:愿年轻人都能有志气
  17. App详细测试流程及测试点
  18. 解决wps VBA安装的问题
  19. 模拟量、数字量与开关量的区别
  20. python爬取前程无忧职位信息

热门文章

  1. Nginx 代理服务的配置说明
  2. VMware快照管理器
  3. 【软考-软件设计师】计算机体系结构的分类
  4. 使用jQuery OCUpload实现excel文件一键上传功能
  5. XMLHTTP.readyState的五种状态
  6. 三维数据平滑处理_你该如何正确的处理思看科技三维扫描仪得到的数据?
  7. win7蓝屏_Win7大面积蓝屏?急!解决办法在这儿~
  8. SQL各种join用法
  9. 数据结构与算法 / 编辑器和编译器如何判定括号是否合法
  10. oracle 表分析 影响,oracle 表分析