10

所有者が読み書きできるようにテーブルをロックし、他のセッションは読み取りしかできないようにすることは可能ですか?

ドキュメントは、読み取りロックでは全員が読み取りのみを許可し、書き込みロックでは所有者のみが読み取りと書き込みを許可され、他のセッションはアクセスできないことを示唆しているようです。所有者に読み書きを許可し、他のセッションに読み取りのみを許可することは、かなり頻繁に必要とされる動作であり、おそらく最も頻繁に必要とされる動作です。

このシナリオを実装すると、パフォーマンス ヒットが大きすぎるのではないでしょうか?

4

4 に答える 4

3

LOCK IN SHARE MODEをご覧ください。

これにより、ノンブロッキング読み取りロックを設定できます。

ただし、これはデッドロックにつながる可能性があることを忘れないでください。古い情報を持つプロセスに問題がないことを確認してください。

于 2011-10-24T21:49:18.563 に答える
0

SELECT ... FOR UPDATEを行う他の呼び出し元に対しては行をロックしますが、SELECT ... FOR UPDATE単に を行う人に対してはロックしませんSELECTUPDATEs もロックを待ちます。

これは、値をフェッチし、誰も値を変更せずに更新をプッシュバックし、気付かない場合に役立ちます。これらを追加しすぎると、デッドロックが発生するので注意してください。

于 2012-12-13T07:37:23.360 に答える
-1

InnoDBエンジンがデフォルトで必要なことを実行していることに気付くかもしれません。書き込みは読み取りをブロックしません。必要なときに書き込みを利用できるように、トランザクション分離レベルに注意する必要があります。

于 2011-10-24T22:00:58.847 に答える