3

例として、次のスクリプトを使用します。

mysql_query("LOCK TABLES mytest WRITE;");

for ($i = 1; $i < 100000; ++$i) {
    mysql_query("INSERT INTO mytest (Value, Value2, Value3) VALUES ($i, $i, $i);");
}

mysql_query("UNLOCK TABLES;");

UNLOCK TABLESステージに到達する前に、スクリプトがタイムアウトになったり、ユーザーのコンピューターがクラッシュしたりした場合はどうなりますか? mysql は、ロックを要求しているクライアントが切断されたことに「気づき」、ロックを適切に解放しますか、それとも無限にスタックしますか?

4

1 に答える 1

8

MySQLのドキュメントによると:

クライアント セッションの接続が終了すると、正常または異常にかかわらず、サーバーはセッションによって保持されているすべてのテーブル ロック (トランザクションおよび非トランザクション) を暗黙的に解放します。クライアントが再接続すると、ロックは無効になります。

于 2012-04-21T19:07:48.377 に答える