表格一开始是空的。
当我在 20000 行之后提交事务时,花费不到 1 秒。
$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();
最佳答案
尝试开启自动提交
$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/