SqlCe和SQLite的对比试验、结论
前端时间做WINCE手持机应用时,用到了SQLCE,在SQL CE的数据流读写里头,我想插入数据,就直接把数据插入进去: 1 public static void InsertIntoSqlCe() 结论是插入的数据(每个插入200次) 老大喊程序慢,让优化一下.忽然间想起来以前看到一篇文章里面说,插入多条数据用事务的话会快很多.立马写代码试验: 带有事务的插入 简单插入耗时:51422.969ms,大约50s, 用事务插入: 915.7294ms,不到1s,有时候测试会略微多余1s的. 可见用事务插入效率高很多,单次插入在锁上面的花费巨大...........
闲暇之余,顺手测试了一下sqlite的效率: 简单的插入: 1 public static void InsertIntoSqlite() 带有事务的插入: sqlite上面用事务插入 运行时间: 简单插入:22952.6452ms,约21s到22s. 事务插入:245.404ms(非常强悍啊).
RT.没有最烂的程序员,只有更烂的程序员. PS: SQL CE不是一般的烂,现在极其不想用SQL CE了,版本众多,功能简单,部署困难....有机会的话用SQLite吧~~
PS: 1.这次加上主键 num Pk 自增,其他的不变,插入200条分别是47--55.7s和1.0--1.1s. Sqlite上面表也一样,插入200条数据分别是20--22s和270--310ms. 2.关于Update 通过主键update另外两个字段的值,update200次. Sql Ce 耗时为53850.4612--54642.9023ms和2103.0424--2188.6178ms. Sqlie耗时为 14469.8865--15233.3454ms和181.2472--244.342ms. 注意,这些都为典型值,如果对性能有要求,可以多次测量估算平均值.
PS:特别订正: 1. 在sql ce上面,事务并不能提高程序的性能,反而会有降低.之所以之前的程序表现"良好",是因为事务的使用降低了 SqlConnection打开的时间消耗,在只用一个Connection的情况下,事务的的确确降低了程序的性能.这一点需要注意. 2. 在sqlite上面,怪异的事,事务反而提高的程序的性能.这就只能解释为,sqlite的锁消耗是非常大.据说sqlite的锁是用文件锁实现的,所以效率较低....... 3. 嵌入式数据库一般不存在并发问题,请在操作的时候使用长连接形式访问数据库,减小Connection上面的消耗. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |