新debian服务器上的SQLite性能问题

时间:2012-12-15 11:52:27

标签: php performance sqlite debian

我最近安装了一个新服务器:

  • debian squeeze
  • apache2的
  • php5.3.3-7
  • 源码

从旧服务器迁移我的应用程序时,我发现它的运行速度要慢得多。 我解决了这个问题,sqlite更新运行速度慢了10多倍。

两个sqlite都是版本2.8.17,旧版服务器运行PHP版本5.2.6-1 + lenny3 这是我使用的基准脚本:

function write($value) {
    $dbh = sqlite_open('mt.sq');
    $sql = "REPLACE INTO hash (key,value,lm) VALUES ('test','$value','dummy')";
    sqlite_query($dbh, $sql);
    $dbh = sqlite_close($dbh);
}

$n = 100;
$start = microtime(true);
for($i=0;$i<$n;$i++) write($i);
$avg = (microtime(true) - $start) / $n;
echo "Average write time: ".$avg."[s]";

新服务器结果:平均写入时间:0.0795 [s]
旧服务器结果:平均写入时间:0.0032 [s]

以下是测试数据库:

BEGIN TRANSACTION;
CREATE TABLE hash(
    key PRIMARY KEY,
    value,
    lm
);
INSERT INTO hash VALUES('test',99,'dummy');
COMMIT;

我不知道在哪里搜索。有没有人观察到相同的性能问题? 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

这是一个已知的“问题” - ext4默认启用屏障(与ext3相反) - 请参阅Serious performance issues with ext4fs barriers

  

这方面从ext4fs到ext3fs的重要区别在于 ext4fs附带了屏障,这是一个文件系统功能(在ext3fs中是可选的),它试图提高文件系统的完整性。但这需要付出代价:根据您的应用程序用例,可能会大大降低文件系统吞吐量