【MySQL】ネクストキーロックについて
2021.12.05
みなさん、こんにちは
エンジニアの高橋です。
本日はMySQLのネクストキーロックについてお話したいと思います。
ネクストキーロックとは、実レコードが存在しないインデックスの隙間(ギャップ)をロックし、さらに指定範囲を超えた直近の実レコードもロックされることを指します。
下記のテーブルを例に説明すると
pkey, value
10, 10
20, 20
30, 30
① "where pkey > 16 and pkey <= 19"の場合
11〜19にギャップロックが発生するのですが、実レコードの20にもロックがかかってしまいます。
② "where where pkey > 16 and pkey <= 20"の境界に実レコードが存在する場合
11〜19にギャップロックが発生し、実レコードの20にもロックがかかり、さらに21〜29にギャップロックがかかり30にもロックがかかります。
自分の想定以上のレコードにロックがかかってしまいますので、queryを作成する際には気をつけてください。
--------------------------------------------------
社員を募集しております!
type
開発エンジニア*前職給与保証*リモート可*ブランクOK*案件還元率80%以上*月給35万円~*年休128日
社員のゲーム実況チャンネル
$fugaのゲーム実況
社員を募集しております!
type
開発エンジニア*前職給与保証*リモート可*ブランクOK*案件還元率80%以上*月給35万円~*年休128日
社員のゲーム実況チャンネル
$fugaのゲーム実況