关于sqlite3的性能(转自:http://hi.baidu.com/snailzone/blog/item/da9368662bc94f25aa184c2b.html)
来源:互联网 发布:斯维尔软件怎么用 编辑:程序博客网 时间:2024/04/30 08:44
我想对于80%的网站来说,它们的数据量采用access数据库已经足够了。使用mysql或者sqlserver这些中型数据库,往往需要增加额外的使用费,而且数据量不大的时候,它们所反映的性能跟access数据库并没有多大的区别,故对于一般"玩家"来说并不容易接受。最近sqlite数据库异军突起,采用其作为后台数据库的"玩家"也越来越多,我接触它也有一年多的时间了,但都是在嵌入式平台上面使用,因为数据量小,一直没有对其进行过特别的性能测试。近期我也想"玩"一个网站,sqlite和access之间的选择就摆在我面前了,事实胜于雄辩,就做了一个小程序来测试。
测试环境是奔4 3G + 512内存 + vs2005 c#。由于网上有人说加上下面的三句话:
PRAGMA synchronous = OFF;
PRAGMA page_size = 4096;
PRAGMA cache_size = 70000;
可以让sqlite的性能大幅度增加(不知道是否体现在超大数据量的时候),我也特地尝试了一下。
采用事务提交的方法,每次插入5w条数据。不执行上面三句话时执行时间大都是2 s,少数是3s。执行了上面三句话后大多数是3s ,少数是2 s。执行查询( id >10000 and id < 20000 ) 之间的数据,两者执行时间都是0.005s ,查询count(*) 获取所有数据条数时,加了三句话0.72~0.73s 比不加所耗的时间0.73s 快了一点点。25w条数据的文件大小为123兆。
access数据库用的是2003格式,这里不由得要郁闷一下,access其实本身并不支持事务提交,它是通过OleDbTransaction来实现的,它在事务提交中给我的感觉跟一条一条插入毫无区别,唯一的区别就是出错了会回滚事务。所以它插入完25w条数据所消耗的时间是远远无法跟sqlite比较的。反正应用中几乎也用不到大数据量事务提交,只好忍了。但是需要导入数据的话.....嘿嘿
相同的查询语句,access用了0.047~0.06s,与sqlite相比,差距明显。查询count(*) 获取所有数据条数时,用了0.06~0.07s,比sqlite稍有优势。25w条数据的文件大小为177兆。
综合来说,我觉得还是sqlite优势比较明显。但是access数据库维护要方便很多。
测试环境是奔4 3G + 512内存 + vs2005 c#。由于网上有人说加上下面的三句话:
PRAGMA synchronous = OFF;
PRAGMA page_size = 4096;
PRAGMA cache_size = 70000;
可以让sqlite的性能大幅度增加(不知道是否体现在超大数据量的时候),我也特地尝试了一下。
采用事务提交的方法,每次插入5w条数据。不执行上面三句话时执行时间大都是2 s,少数是3s。执行了上面三句话后大多数是3s ,少数是2 s。执行查询( id >10000 and id < 20000 ) 之间的数据,两者执行时间都是0.005s ,查询count(*) 获取所有数据条数时,加了三句话0.72~0.73s 比不加所耗的时间0.73s 快了一点点。25w条数据的文件大小为123兆。
access数据库用的是2003格式,这里不由得要郁闷一下,access其实本身并不支持事务提交,它是通过OleDbTransaction来实现的,它在事务提交中给我的感觉跟一条一条插入毫无区别,唯一的区别就是出错了会回滚事务。所以它插入完25w条数据所消耗的时间是远远无法跟sqlite比较的。反正应用中几乎也用不到大数据量事务提交,只好忍了。但是需要导入数据的话.....嘿嘿
相同的查询语句,access用了0.047~0.06s,与sqlite相比,差距明显。查询count(*) 获取所有数据条数时,用了0.06~0.07s,比sqlite稍有优势。25w条数据的文件大小为177兆。
综合来说,我觉得还是sqlite优势比较明显。但是access数据库维护要方便很多。
- 关于sqlite3的性能(转自:http://hi.baidu.com/snailzone/blog/item/da9368662bc94f25aa184c2b.html)
- struts2的配置详解(转自 http://hi.baidu.com/louhu/blog/item/52d2d1652bbeccfaf6365458.html)
- 会说话的猪 转自:http://hi.baidu.com/gg81/blog/item/91c088ef5b177114fdfa3c72.html
- 显示html/css的警告错误或错误(转自:http://hi.baidu.com/86727515/blog/item/f030f0050fa8c1c77b89471d.html)
- sqlite使用手册(转自:http://hi.baidu.com/zifengshen/blog/item/671240f7e148f428720eec32.html)
- BMP图像结构(转自:http://hi.baidu.com/zybabiao/blog/item/1357d5fb21c06567034f56ee.html)
- window下注册服务的命令(转自:http://hi.baidu.com/lijunliang/blog/item/cca6fb19179d306cdbb4bdf7.html)
- 一份详尽的IPC$资料 转载自:http://hi.baidu.com/h4ck3rsbr/blog/item/bf4282c328b73751b319a89b.html
- proteus 技巧(转自http://hi.baidu.com/strawxw/blog/item/fed0b6350684b61591ef3974.html)
- 创业须知[转自http://hi.baidu.com/rainstudy/blog/item/f5c48658c93e53dd9c8204a1.html]
- struts validate 动态平验证(转自http://hi.baidu.com/twobrushes/blog/item/ff088fdd66d484305982dda4.html)
- ATPCS【转自http://hi.baidu.com/cumtsun/blog/item/3307af1b909d361d8618bf82.html】
- 保护模式寻址(转自http://hi.baidu.com/sharppoint/blog/item/bc1b34393b2057f43a87ce95.html)
- Global.asax详解(转自:http://hi.baidu.com/mycolorwind/blog/item/45384980228cbfdf9023d960.html)
- ubuntu ibus开机启动(转自:http://hi.baidu.com/haitongz/blog/item/d07faadaccf8f53b32fa1c28.html)
- hash code相关(转载自http://hi.baidu.com/lkdlhw_2000/blog/item/c28a044a7ddeab2208f7ef41.html)
- 从设计的角度看待物流软件-转自http://hi.baidu.com/maimouse/blog/item/a59501a7e22e0396d14358b6.html
- 嵌入式linux WEB服务器BOA的移植方法 【转自:http://hi.baidu.com/549800946/blog/item/6f9a7b31d07268a05edf0ebf.html】
- 临时对象的(构造函数与析构函数)
- Android模拟器
- 利用javabean+jsp写一个计算器
- Linux 线程实现机制分析
- 引用本质 探讨
- 关于sqlite3的性能(转自:http://hi.baidu.com/snailzone/blog/item/da9368662bc94f25aa184c2b.html)
- (再续)HttpService读取本地XML文件
- unix环境高级编程-5.7-每行一次I/O
- .tracker中实现均衡负载的代码在哪
- HashMap与Hashtable的区别
- Windows下XAMPP的配置
- POJ 1269 Intersecting Lines (两直线之间的位置关系)
- Android中asset文件夹和raw文件夹区别
- http://acm.nyist.net/JudgeOnline/problem.php?pid=431