php - 为什么每一行提交交易这么慢?

标签 php mysql transactions

表格一开始是空的。
当我在 20000 行之后提交事务时,花费不到 1 秒。 enter image description here

  $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();

带时间命令

time php test.php



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

但是当我注释掉 $conn->query('BEGIN'); $conn->query('COMMIT'); ,它运行了 20 多分钟,不知道我要等多少时间才能完成。我必须用 ctrl-c 停止它。

      $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();

enter image description here

最佳答案

尝试开启自动提交

$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();

关于php - 为什么每一行提交交易这么慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43410765/

相关文章:

javascript - 如何使用表从动态构建的表单中捕获

javascript - 用户如何从我的服务器获取数据作为通往 facebook 的桥梁?

mysql - 为组选择 SUM() 的 Max()

mysql - Java 事务是否传播到 MySQL 存储过程?

php - 让 AJAX GET 处理空白时出现问题

PHP Curl 未加载

mysql - 上传 .xls 到 phpmyadmin - mysql#2006

PHP Ubuntu - 备份和恢复 MySQl

session 关闭时的 NHibernate 事务管理

java - 如何测试 @Transactional 方法,其中两个表正在更新