我被告知,RedHat 7.3 中预设的PostgreSQL配置是非常落后的(它必须在具有 8MB RAM 的机器上工作)。 and that PostgreSQL则可以通过调整一些配置来运行的快些。 Matt Sergeant 报道说他已经调整了他的PostgreSQL装置,并且像下面所显示的一样重新进行测试。他的结果显示 PostgreSQL和MySQL运行速度一样。如想查看结果,访问:http://www.sergeant.org/sqlite_vs_pgsync.htmlSQLite实在同样的配置下被测试的,它是用 -O6 optimization 和 -DNDEBUG=1 交叉编写,这样使许多SQLite代码中的"assert()"语句 无法运行。
所有的测试都是在一个静止的机器上进行的。所有的测试时由一个简单的TCL文稿编排程序产生和运行的。 A copy of this Tcl script can be found in the你可以在源文件目录文件SQLite source tree in the filetools/speedtest.tcl中发现TCL文稿编排程序的副本. 所有测试中的时间都是以精确到秒的背景时钟来计算的.SQLite有两个单独的时间值. 第一个时间值在一个完整磁盘同步化打开的默认装置里.同步话打开后,为了确保重要数据已被真正的写入磁盘驱动表面,SQLite在关键的时候执行fsync()系统调用. 在数据库更新过程中,当操作系统崩溃时或者计算机突然断电时,为了保证数据库的完整性,同步化是非常有必要的.第二个时间值是当同步化关闭的时候.关闭同步化, SQLite有时会运行的快些,但如果系统崩溃或者突然断电数据库将会受到损失. 通常来说,同步化的SQLite的时间是为了和PostgreSQL(因为他也是同步化的)比较,异步化的SQLite是为了和也是异步化的MySQL引擎比较.
测试 1: 1000 INSERTs
CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100));
INSERT INTO t1 VALUES(1,13153,'thirteen thousand one hundred fifty three');
INSERT INTO t1 VALUES(2,75560,'seventy five thousand five hundred sixty');
... 995 lines omitted
INSERT INTO t1 VALUES(998,66289,'sixty six thousand two hundred eighty nine');
INSERT INTO t1 VALUES(999,24322,'twenty four thousand three hundred twenty two');
INSERT INTO t1 VALUES(1000,94142,'ninety four thousand one hundred forty two');
PostgreSQL: 4.373
MySQL: 0.114
SQLite 2.7.6: 13.061
SQLite 2.7.6 (nosync): 0.223