innodb lock monitor

InnoDB lock monitorの有効化方法 (mysql 5.7以降??)

  • 以下を実行後、 SHOW ENGINE INNODB STATUS\G
set GLOBAL innodb_status_output=ON;
set GLOBAL innodb_status_output_locks=ON;

ロック種別の一覧

InnnoDB Lock Monitor上の表記 ロック種別
lock mode S ネクスキーロック(共有)
lock mode S locks gap before rec ギャップロック(共有)
lock mode S locks rec but not gap レコードロック(共有)
lock mode X ネクスキーロック(排他)
lock mode X locks gap before rec ギャップロック(排他)
lock mode X locks rec but not gap レコードロック(排他)
lock mode X insert intention インテンションギャップロック(排他)

Innodb Lock Monitorの読み方 [1]

  • innodbにおいて、クラスタ化インデックスを構成する各リーフノードは、以下から構成される。[2]
  • 上記の点を押さえておくと、ロックされたレコード一覧に表示されるデータ構造の意味が読み取りやすい。
  • supremum については、こちらの記事 が詳しい

f:id:smatsuzaki:20200717224941p:plain

参考文献

[1] トランザクション分離レベルの勉強記録(3) innodb_lock_monitorのTRANSACTIONS部分の読み方
[2] 『実践ハイパフォーマンスMySQL 第2版』P118-119

/* https://sunrise033.com/entry/hatena-blog-how-to-hierarchicalize-categories */