Sqlite China  
首页 | 各种语言的sqlite编程 | sqlite研究 |sqlite应用实例与杂谈 | sqlite相关下载 | SQlite论坛
当前位置 : 主页>sqlite研究>列表
SQLite与其他数据库的速度比较(3)
来源:工友 作者:工友 时间:2007-12-21

测试9: 有索引的25000 UPDATEs

BEGIN;
UPDATE t2 SET b=468026 WHERE a=1;
UPDATE t2 SET b=121928 WHERE a=2;
... 24996 lines omitted
UPDATE t2 SET b=35065 WHERE a=24999;
UPDATE t2 SET b=347393 WHERE a=25000;
COMMIT;
PostgreSQL:    18.797
MySQL:    8.134
SQLite 2.7.6:    3.520
SQLite 2.7.6 (nosync):    3.104

在这个测试中,最近的2.7.0 版 SQLite和MYSQL运行速度一样,但是最近对SQLite的优化使它速度比UPDATEs快一倍。

测试10: 有索引的25000 text UPDATEs

BEGIN;
UPDATE t2 SET c='one hundred forty eight thousand three hundred eighty two' WHERE a=1;
UPDATE t2 SET c='three hundred sixty six thousand five hundred two' WHERE a=2;
... 24996 lines omitted
UPDATE t2 SET c='three hundred eighty three thousand ninety nine' WHERE a=24999;
UPDATE t2 SET c='two hundred fifty six thousand eight hundred thirty' WHERE a=25000;
COMMIT;
PostgreSQL:    48.133
MySQL:    6.982
SQLite 2.7.6:    2.408
SQLite 2.7.6 (nosync):    1.725

2.7.0 版本的SQLite过去和MYSQL运行速度一样,但现在2.7.6 版的SQLite的速度是MYSQL的两倍,是PostgreSQL的20倍。

在这个测试中,PostgreSQL也很慢,一个有经验的管理者可以通过调试服务器使之运行的快些。

Test 11: 来于SELECT的INSERTs

BEGIN;
INSERT INTO t1 SELECT b,a,c FROM t2;
INSERT INTO t2 SELECT b,a,c FROM t1;
COMMIT;
PostgreSQL:    61.364
MySQL:    1.537
SQLite 2.7.6:    2.787
SQLite 2.7.6 (nosync):    1.599

在这个测试中,异步的SQLite比MYSQL慢(MYSQL似乎特别擅长INSERT...SELECT语句)。 PostgreSQL引擎仍然是非常慢的, 61秒中的大部分时间被用来等待磁盘I/O。

测试 12: 没有索引的DELETE

DELETE FROM t2 WHERE c LIKE '%fifty%';
PostgreSQL:    1.509
MySQL:    0.975
SQLite 2.7.6:    4.004
SQLite 2.7.6 (nosync):    0.560

在这个测试中,The synchronous version of同步版本的 SQLite是这组中最慢的,但异步版本的SQLite是最快的。不同的是,它需要额外的时间去执行fsync()。

测试 13: 有索引的DELETE

DELETE FROM t2 WHERE a>10 AND a<20000;
PostgreSQL:    1.316
MySQL:    2.262
SQLite 2.7.6:    2.068
SQLite 2.7.6 (nosync):    0.752

这个测试非常重要,因为在这里PostgreSQL比MySQL要快。SQLite比前两者都要快。

测试 14: 一个大 DELETE之后的一个大INSERT

INSERT INTO t2 SELECT * FROM t1;
PostgreSQL:    13.168
MySQL:    1.815
SQLite 2.7.6:    3.210
SQLite 2.7.6 (nosync):    1.485

一些老版的SQLite(2.4.0 以前的版本)在执行完DELETEs及新INSERTs后明显慢下来,但在这个测试中我们可以看到,这个问题已经被解决了。

测试 15: 一个大的DELETE及许多小INSERTs

BEGIN;
DELETE FROM t1;
INSERT INTO t1 VALUES(1,10719,'ten thousand seven hundred nineteen');
... 11997 lines omitted
INSERT INTO t1 VALUES(11999,72836,'seventy two thousand eight hundred thirty six');
INSERT INTO t1 VALUES(12000,64231,'sixty four thousand two hundred thirty one');
COMMIT;
PostgreSQL:    4.556
MySQL:    1.704
SQLite 2.7.6:    0.618
SQLite 2.7.6 (nosync):    0.406

SQLite通常总是会在一个事务处理程序中执行INSERTs,这也许就是为什么在这个测试中SQLite通常比其它数据库快很多的原因。

测试 16: DROP TABLE

DROP TABLE t1;
DROP TABLE t2;
DROP TABLE t3;
PostgreSQL:    0.135
MySQL:    0.015
SQLite 2.7.6:    0.939
SQLite 2.7.6 (nosync):    0.254

SQLite在执行撤销表格这一操作时比其它数据库要慢一些。 这也许是因为当SQLite撤销一个表格的时候,它必须全面检查并清除数据库文件中的记录。与之不同的是,MySQL和 PostgreSQL分别的文件夹来代表每个表格,所以如果它们想撤销一个表格,它们只需删除一个文件,这当然要快一些了。

但是,撤销表格并不是一个常用的操作,所以SQLite慢一些也不会有什么问题。

(阅读次数:
上一篇:SQLite与其他数据库的速度比较(2) 下一篇:SQLite中的空处理与其它数据库引擎的比较
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
§最新评论
热点文章
·SQLite数据库的体系结构
·SQLite与其他数据库的速度
·SQL 语言参考资料
·SQLite语法备忘录
·sqlite 的相关调查1
·嵌入式数据库SQLite的一份
·SQLite在嵌入式Web服务器
·点评主流开源数据库的技术
·基于ARM-Linux的SQLite嵌
·SQLite与其他数据库的速度
·SQLite数据库编程--创建数
·SQL 语法手册
·SQLite Mode 数据库交互的
·SQLITE3 使用总结(3)
·XXTEA加密算法为SQLite 3.
·SQLite 第三版总览(简介)
·SQLite 第三版中的数据类
·用sqlite 执行标准 sql 语
·System.Data.Sqlite 上手
·SQLite编译安装步骤
相关文章
·SQLite Mode 数据库交互的
·SQL 语言参考资料
·SQLite在嵌入式Web服务器
·SQL 语法手册
·System.Data.Sqlite 上手
·SQLite数据库编程--创建数
·SQLite数据库编程--数据库
·SQLite在TorqueScript中的
·关于sqlite_exec回调函数
·用sqlite 执行标准 sql 语

版权Power by DedeCms   后台登陆
Copyright @ 2007