LOG数据库查询

时间:2013-05-05 06:11:09

标签: php logging pdo

我需要记录数据库中每个事务的日志,但是我注意到使用COMMIT而不使用的不同行为。
当我使用commit时,循环中的每个转弯几乎为零,而当我不使用提交时间时则更大 我想知道这种行为是否正常,并且可以通过某种方式准确地管理时间 谢谢

$microtimeA = microtime( true );
$pdo->beginTransaction();

$i=1;
while($i<=5)
{
    $microtimeB = microtime( true );
    $stmt = $pdo-> prepare( "INSERT INTO BLOG ( TITLE ) VALUES ( $i ) ");
    $stmt-> execute();
    $i++;
    echo "<p>" , number_format( microtime( true ) - $microtimeB , 4 ) , "</p>";
}
$pdo-> commit();

echo "<p>[" , number_format( microtime( true ) - $microtimeA , 4 ) , "]</p>";

提交:
1:0.0003
2:0.0002
3:0.0002
4:0.0002
5:0.0002
[0.0228]

没有承诺:
1:0.0149
2:0.0197
3:0.0416
4:0.0135
5:0.0332
[0.1229]

1 个答案:

答案 0 :(得分:0)

提交事务时,您的数据库正在将数据刷新到磁盘。这通常是一个缓慢的操作,因为它需要等待旋转硬盘的至少一次旋转。

在“无提交”的情况下,您的数据库将自动提交每个事务。因此,您有5个单独的磁盘刷新。

在“提交”情况下,您只需刷新一次磁盘。

数字支持这个数字:0.1229几乎是0.0228

的五倍