MySQL Community Edition ロック範囲をInnoDBの具体例から理解する
MySQL Community EditionのInnoDBで、SELECT ... FOR UPDATEが想定以上の範囲をロックし、INSERT待ちを生む仕組みが解説されています。レコードロック、ギャップロック、ネクストキーロックの違いを、非ユニークインデックスとタグ更新処理の例から整理できます。
📄
記事では、MySQL 8.0.43のInnoDBとREPEATABLE READを前提に、価格インデックスへのSELECT ... FOR UPDATEで複数のINSERTが待たされる例が示されています。さらに、ブログ記事のタグ更新を並列実行した際にデッドロックが発生する例が紹介されています。
- レコード・ギャップ・ネクストキーロックの整理
- 非ユニークインデックスで広がるロック範囲
- INSERTがロック待ちになる具体例
- タグ更新の並列実行で起こるデッドロック例
記事は著者の方がZennに公開されているものです。当社は内容を転載していません。上のリンクから元記事が開きます。
MySQL Community Edition とは
Webシステムで広く利用されるオープンソースのリレーショナルデータベースです。
MySQL Community Edition を実務で使うための情報
MySQL Community Edition の他のテーマ
よくある質問
MySQL Community Edition は商用利用できますか?
MySQL Community Edition はオープンソースとして公開されています。ライセンスの条件(改変版を配布する場合の義務など)は元のリポジトリで確認してください。当社のカタログページでは、ライセンスの区分と実務上の注意点をまとめています。
MySQL Community Edition ロック範囲 で調べています。まず何を読めばよいですか?
このページで紹介しているZennの記事「MySQL (InnoDB) のロック範囲に気をつけよう」が、実際に手を動かした人の記録です。導入の可否や費用の考え方まで含めて判断したい場合は、あわせて当社のカタログページをご覧ください。
自分で導入するのが難しい場合はどうすればよいですか?
当社がOSSの導入・日本語化・サーバー構築を代行しています(税込110,000円〜)。相談は無料で、Zoomでの打ち合わせにも対応しています。「そのOSSは御社には向かない」という結論になることもあり、その場合はそうお伝えします。
読んだうえで、自分でやるか任せるか
OSSは「入れる」より「日本語で運用に乗せる」ほうが手間です。記事のとおりに進めて詰まったら、そこから先は任せてください。