首页 > 数据库 > SQLite > 正文

SQLite与其他数据库的速度比较(3)

2024-09-07 00:10:04
字体:
来源:转载
供稿:网友

测试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
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表