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快一倍。
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也很慢,一個有經驗的管理者可以通過調試服務器使之運行的快些。
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。
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()。
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比前兩者都要快。
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 |
|
新聞熱點
疑難解答