为什么 SQLite 在特定机器上如此缓慢(~2 q/s)?
在我的一台服务器上(i7 Ivy Core,32 GB RAM,Debian 6 @ 64bit,PHP 5.4.10),我遇到了SQLite的极慢插入速度。以下测试程序报告仅 2.2 次插入/秒(插入 30 行为 14 秒)。
unlink("test.db");
$db = new PDO('sqlite:test.db');
$db->exec("CREATE TABLE test (dummy INT)");
$count = 30;
$t = microtime(true);
for ($i=0; $i<$count; $i++) {
$db->exec("INSERT INTO test VALUES ($i)")
or die("SQLite error: ".$db->errorInfo()[2]."\n");
}
$elapsed = microtime(true)-$t;
echo sprintf("%d inserts in %.3f secs (%.1f q/s)\n",
$count, $elapsed, $count/$elapsed);
输出:
$ time php test.php
30 inserts in 13.911 secs (2.2 q/s)
real 0m14.634s
user 0m0.004s
sys 0m0.016s
我知道我可以通过包装/围绕插入语句(这给了我200000 q / s)来加速这一点,但即使没有事务,这应该更快。在其他(较旧的)机器(相同的PHP版本)上,我达到300多个查询/秒,没有显式事务。BEGIN
END
这可能是什么原因?我是否必须调整 Sqlite 或 O/S?