1

現在、MySQL と PHP をいじっていますが、テーブル ロックについて疑問に思っていました。MySQL のドキュメントから、MySQL がテーブル全体の読み取りロックを適用することを知っています。これにより、選択クエリが完了するまで他のクエリが待機する可能性があります。

この例のように、PHP を使用してデータをクエリする場合:

$dbConnection = mysql_connect($dbHost, $dbUser, $dbPass) 
mysql_select_db($dbName, $dbConnection) 

$qry = "select * from bigTable";
$result = mysql_query($qry, $dbConnection);

//Read Data

mysql_close($dbConnection);

PHP コードの観点から、「bigTable」から読み取りロックが解除されるのはいつですか?

ありがとう、エミ

4

2 に答える 2

3

ロックは読み取りクエリの最後に解放されます。

$result = mysql_query($qry, $dbConnection);

クエリごとのトランザクションを行っているためです。

より複雑なトランザクションを実行する場合は、必ず innodb エンジンを使用してトランザクションを開始してください。

mysql_query("START TRANSACTION", $dbConnection)
mysql_query("BEGIN", $dbConnection);

次に、作業を行います。

  • たとえば、テーブルを読む
  • 次に、いくつかの値などを書き込みます。

トランザクションをコミットまたはロールバックします。

mysql_query("COMMIT", $dbConnection);
mysql_query("ROLLBACK", $dbConnection);

変更を通過させるかどうかによって異なります。

于 2012-09-03T12:49:35.613 に答える