为什么每行提交事务都这么慢?

时间:2017-04-14 11:37:56

标签: php mysql transactions

表格首先是空的  当我在20000行之后提交交易时,它的成本不到1秒。 enter image description here

time php test.php



real    0m0.785s
user    0m0.220s
sys     0m0.096s

时间命令

      $stmt = $conn->prepare("INSERT INTO ipTable (ip) VALUES (?)");
      $stmt->bind_param("i", $ip);
       //$conn->query('BEGIN');
      for( $count = 0  ; $count < 20000 ; $count ++){
      $ip = rand(1,10000000);
      $stmt->execute();
      }
      //$conn->query('COMMIT');
      $stmt->close();
      $conn->close();

但是当我注释掉 $ conn-&gt;查询时(&#39; BEGIN&#39;); $ conn-&GT;查询(&#39; COMMIT&#39); ,它运行超过20分钟并且不知道我需要等多少时间才能完成。我必须用ctrl-c来阻止它。

Customer1   21631512435 2   1449540003.803  1449540363.571  25566530    27670   1557041 19491   65664   1   197.26.8.142    197.31.74.208
Customer2   21631526589 4   1449540003.821  1339540363.565  25536520    27369   1545811 19487   65659   5   197.25.2.135    197.31.74.206

enter image description here

1 个答案:

答案 0 :(得分:1)

尝试启用自动提交

$conn->autocommit(TRUE);

$conn->autocommit(TRUE);
$stmt = $conn->prepare("INSERT INTO ipTable (ip) VALUES (?)");
$stmt->bind_param("i", $ip);
//$conn->query('BEGIN');
for( $count = 0  ; $count < 20000 ; $count ++){
    $ip = rand(1,10000000);
    $stmt->execute();
}
//$conn->query('COMMIT');
$stmt->close();
$conn->close();