2
テーブルは最初は空です。
私は20000行の後にトランザクションをコミットすると、1秒未満です。トランザクションがすべてのローが遅い理由は何ですか?
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->クエリからコメントしたときに( '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)なし;それは遅く走る? –
私はautocommitがどこかにfalseに設定されていると思います。つまり、falseに設定されていると、トランザクションを開始するタイミングと終了するタイミングを指定する必要があるため、機能していませんでした。これでオートコミットは真です。実行するたびにdbに変更が加えられます。 – noyanc