欢迎投稿

今日深度:

SQLITE和ACCESS性能对比测试,sqlite对比测试

SQLITE和ACCESS性能对比测试,sqlite对比测试


一般来说,传统的桌面应用,尤其是ms平台下,多用access数据库,近年,sqllite越来越流行,而且其对手机终端的支持,更使得起使用率越来越高.access和sqlite有太多的相似之处.可他们性能究竟怎么样呢,我查询了一些对比资料,如下:

SQLite介绍
在介绍System.Data.SQLite之前需要介绍一下SQLite,SQLite是一个类似于Access的单机版数据库管理系统,它将所有数据库的定义(包括定义、表、索引和数据本身)都保存在一个单一的文件中。并且,SQLite是一个用C实现的类库,它在内存消耗、文件体积、简单性方面都有不错的表现,如果数据在10W条以下,查询速度也是相当快的。
SQLite具有以下特征:
实现多数SQL92的标准,包括事务(原子性、一致性、隔离性和持久性)、触发器和大多数的复杂查询。
不对插入或者更新的数据进行类型检查,你可以将字符串插入到整数列中(这个可能让有些用户不太适应)。
支持Windows/Linux/Unix等主流系统,还支持嵌入式系统如Android或Windows Mobile。
System.Data.SQLite
System.Data.SQLite是SQLite的加强版,它可以无需.NET Framework支持,由于它内部包含了一个ADO.NET 2.0引擎,所以.NET开发人员可以利用System.Data.SQLite方便地开发.NET程序。
System.Data.SQLite及SQLite也有一些限制,比如不支持行级及表级锁,当一个连接锁定数据库以用于写入数据,其它的数据库连接只能等待那个连接操作完成之后进行读写操作,SQLite.NET尝试在超时期内多次尝试。

ACCESS 插入性能测试:
平台:SYS:WINXP;CPU:2*1.6GHZ;RAM:1G;APP:VC+ADO
1.单条显式事务:
    1 00条: 0.55S
   1000条: 5s
10000条: 50s

2.单条非显式事务:
     100条:31ms
   1000条:156ms
10000条:1500ms

3.批量事务:
    1 00条:16ms
   1000条:141ms
10000条:1469ms

以上可以看出,ACCESS单条非显式事务插入的时间几乎和批量事务的插入时间一样,这大概就是网上得出ACCESS快于sqlite的原因吧,但是;单条非显式事务的

方式只能用单连接,如果有多个连接并发访问,则会出现严重问题,在一个链接插入后的相当长一段时间内(有时数S),其它链接都无法插入数据库。可以推理

ADO+ACCESS是采用了一种类似CACHE的做法缓存了操作,但是却一直锁住数据库。单条的显式事务可以保证多链接的访问,但是速度会慢很多,下面再对比一下

SQLITE的测试性能;
SQLITE PC平台插入性能测试:
平台:SYS:WINXP+VMWARE+FEDORA7(LINUX2.6.21);CPU;1.6GHZ;RAM:412M; APP:C+SQLITE
1.单条显式事务(SQLITE默认为每个操作开启事务)
    100条:0.587s
  1000条:6.962s
10000条:56.004s

2.批量事务
    100条:81ms(可能误差较大)
  1000条:124ms
10000条:1257ms

SQLITE 嵌入式平台插入性能测试:
平台:SYS:LINUX2.6.14;CPU:HI3512 ARM9 200MHZ级别;RAM:32M,ROM:32M NOR FLASH;APP:C+SQLITE
1.单条显式事务(SQLITE默认为每个操作开启事务)
    100条:1.98s
  1000条:19.97s
10000条:34.63s

2.批量事务
    100条:0.15s
  1000条:0.89s
10000条:8.24s

由这个测试可以看出,在微软平台下,access和sqlite性能基本相当,而在linux平台下,sqlite的并发性能要高出不少。

www.htsjk.Com true http://www.htsjk.com/SQLite/33673.html NewsArticle SQLITE和ACCESS性能对比测试,sqlite对比测试 一般来说,传统的桌面应用,尤其是ms平台下,多用access数据库,近年,sqllite越来越流行,而且其对手机终端的支持,更使得起使用率越来越高.access和...
相关文章
    暂无相关文章
评论暂时关闭