1

MySQLのドキュメントによると、いずれかのセッションがテーブルの読み取りロックを保持している場合、別のセッションが同じテーブルの書き込みロックを要求し、書き込みロックを指定する必要があり、読み取りロックは待機します。

2台のコンソール(Windows 7)からMySQLサーバーに接続して試してみました。最初のコンソールからテーブルAをロックし(読み取りロック)、次に2番目のコンソールから同じテーブルをロックしようとしました(書き込みロック)が、2番目のコンソールは最初のロックが解放されるまで待機します。

誰が間違っていますか:私またはドキュメント?(MySQL Serverバージョン5.5.27)

MySQL公式ドキュメントからの引用:

「通常、書き込みロックは読み取りロックよりも優先度が高く、更新ができるだけ早く処理されるようにします。つまり、あるセッションが読み取りロックを取得し、別のセッションが書き込みロックを要求した場合、後続の読み取りロック要求は、要求したセッションまで待機します。 WRITEロックがロックを取得して解放しました。」

4

2 に答える 2

0

キーワードはの後に続きsubsequent READ lock requestsます。これは、既存のREADロックが一時停止されないことを意味していると思いますが、代わりに、WRITEロックが有効になっている間に発生するREADロックは延期されます。だから私はドキュメントが正しいと思います。

于 2012-08-29T21:41:06.417 に答える
0

そこに書かれています:

つまり、あるセッションがREADロックを取得し、次に別のセッションがWRITEロックを要求した場合、後続のREADロック要求は、WRITEロックを要求したセッションがロックを取得して解放するまで待機します。

すでに取得されているREADロックは、操作中に壊れることはありません。それは大混乱を引き起こすでしょう。待機するのは後続のリクエストです。

于 2012-08-29T21:41:18.577 に答える