MySQLのドキュメントによると、いずれかのセッションがテーブルの読み取りロックを保持している場合、別のセッションが同じテーブルの書き込みロックを要求し、書き込みロックを指定する必要があり、読み取りロックは待機します。
2台のコンソール(Windows 7)からMySQLサーバーに接続して試してみました。最初のコンソールからテーブルAをロックし(読み取りロック)、次に2番目のコンソールから同じテーブルをロックしようとしました(書き込みロック)が、2番目のコンソールは最初のロックが解放されるまで待機します。
誰が間違っていますか:私またはドキュメント?(MySQL Serverバージョン5.5.27)
MySQL公式ドキュメントからの引用:
「通常、書き込みロックは読み取りロックよりも優先度が高く、更新ができるだけ早く処理されるようにします。つまり、あるセッションが読み取りロックを取得し、別のセッションが書き込みロックを要求した場合、後続の読み取りロック要求は、要求したセッションまで待機します。 WRITEロックがロックを取得して解放しました。」