LoginSignup
3
2

More than 5 years have passed since last update.

読み取りロック

Posted at

InnoDBではデフォルトでトランザクション分離レベルが
REPEATABLE READになっています。

REPEATABLE READの場合は
トランザクション開始後の最初のクエリの時点のスナップショットを参照するします。

たとえば

tags tableというものがあるとします。

このテーブルに二つのターミナルを使って
トランザクションでデータを挿入します。

スクリーンショット 2017-06-21 14.52.46.png

1.左と右でトランザクション開始(begin)
2.スナップショットを取得するため、両方でselectを実行
3.左側で value 20を代入し、commit

を行うと
右側のターミナルでは name:20の値を取得することができません。

解決方法

for update

select ... for updateを使うことで読み取ることができます。

スクリーンショット 2017-06-21 14.57.33.png

LOCK IN SHARE MODE

select ... OCK IN SHARE MODEを使うことで読み取ることができます。

このモードは読み取ることができるすべての行にロックをかけて、
他の

スクリーンショット 2017-06-21 15.00.21.png

参考

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2