【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を作成する際には気をつけてください。

この記事を書いた人

高橋 希望

入社10年目の元不動産営業、現ゲームエンジニア 得意言語はphp,javascript,python,elixirなど