blog

ロックに関連する MySQL システム・テーブル

1.列名は、変更された行の数とトランザクションによってロックされた行の数を反映する、TRX_IDトランザクションの重みを記述します。デッドロックを解決するには、Inno...

Apr 29, 2020 · 5 min. read

information_schema.INNODB_TRX

カラム名説明
変更された行の数とトランザクションによってロックされた行の数を反映したトランザクションの重み。デッドロックを解決するために、InnoDBはウェイトが最も低いトランザクションをロールバックの "犠牲者 "として選択します。非トランザクションテーブルを変更したトランザクションは、変更された行数とロックされた行数に関係なく、他のトランザクションよりも重いとみなされます。
TRX_STARTED取引開始時間
TRX_STATEがLOCK WAITの場合、トランザクションが現在待機しているロックのID。
TRX_STATEがLOCK WAITの場合、トランザクションがロック待ちを開始するまでの時間。
MySQLスレッドID(show processlistのID値に対応
トランザクションが実行するSQL文
trx_operation_stateもしあれば、トランザクションの現在の操作。
trx_tables_in_useこのトランザクションの現在の SQL 文を処理するために InnoDB によって使用されるテーブルの数。
trx_tables_locked現在の InnoDB SQL 文の行ロックを持つテーブルの数。
trx_lock_structsトランザクションが保持するロックの数。
trx_lock_memory_bytesこのトランザクションがメモリ上で占有するロック構造の合計サイズ
trx_rows_lockedこのトランザクションによってロックされたおおよその行数。この値には、実際には存在するがトランザクションからは見えない削除タグ付き行が含まれる場合があります。
trx_rows_modifiedこのトランザクションで変更および挿入された行の数。
LOCK_INDEX現在のトランザクションがスワップアウトされたときに実行できる仕事量を示す値。
trx_isolation_level現在のトランザクションの分離レベル。
trx_unique_checks現在のトランザクションで一意チェックをオンまたはオフにするかどうか。例えば、一括データ・ロード中はオフにすることができます。
trx_foreign_key_checks現在のトランザクションで外部キー・チェックをオンまたはオフにするかどうか。例えば、データの一括ロード時に外部キーチェックをオフにすることができます。
trx_last_foreign_key_error最後の外部キーエラーに対する詳細なエラーメッセージ; else NULL
trx_adaptive_hash_latched適応ハッシュインデックスが現在のトランザクションによってロックされているかどうか。適応ハッシュインデックス検索システムがパーティショニングされている場合、単一のトランザクションが適応ハッシュインデックス全体をロックすることはありません。適応ハッシュインデックスのパーティショニングはで定義され、デフォルトでは 8 に設定されています。
trx_adaptive_hash_timeoutアダプティブ ハッシュ インデックスの検索ラッチをすぐに削除するか、MySQL 呼び出しの間に保持するかどうか。アダプティブ ハッシュ インデックスの競合がない場合、この値はゼロに保持され、ステートメントは完了するまでラッチを保持します。競合中はゼロにカウントダウンされ、ステートメントは各行ルックアップの直後にラッチを解放します。アダプティブハッシュインデックス検索システムがパーティショニングされている時、値はゼロのままです。
trx_is_read_only値1は、トランザクションが読み取り専用であることを示します。
trx_autocommit_non_locking1という値は、トランザクションがFOR UPDATEorまたはLOCK IN SHARED MODE句文を含まない であり、 実行されるため、トランザクションにはこの1つの文しか含まれないことを示します。この列とTRX_IS_READ_ONLYの両方が1の時、InnoDBはテーブルデータを変更するトランザクションに関連するオーバーヘッドを減らすためにトランザクションを最適化します。

information_schema.INNODB_LOCKS

TRX_LOCK_STRUCTS説明
LOCK_IDInnoDB 内部でユニークなロック ID 番号。
LOCK_TRX_IDロックを保持しているトランザクションのID
ロックの種類ロックの要求方法。ロッキング・モード記述子S、X、IS、IX、GAP、AUTO_INC、およびUNKNOWNを許可します。ロッキング・モード記述子は、特定のロッキング・モードを識別するために組み合わせて使用することができます。
LOCK_TYPEロックの種類
ロックの種類ロックされている、またはロックされたレコードを含むテーブル名
LOCK_INDEXLOCK_TYPEがRECORDの場合はインデックス名、それ以外の場合はNULL。
ロックの種類LOCK_TYPEがRECORDの場合はロックされたレコードのテーブルスペースID、それ以外の場合はNULL
ロックの種類LOCK_TYPEがRECORDの場合はロックされたレコードのページ番号、それ以外の場合はNULL。
LOCK_RECLOCK_TYPEがRECORDの場合、ページ内のロックされたレコードのヒープ番号。
LOCK_DATAロックに関連付けられたデータ。LOCK_TYPEがRECORDの場合、ロックされた行の主キー値で、そうでなければNULLです。この列には、ロックされた行の主キー列の値が有効なSQL文字列の形式で格納されます。主キーがない場合、LOCK_DATAは一意のInnoDB内部行ID番号です。ギャップがインデックス内の最大値よりも高いキー値や範囲に対してロックされている場合、LOCK_DATAは
最大値
擬似レコード
.ロックされたレコードを含むページがバッファプール内にない場合、InnoDBは不必要なディスク操作を避けるためにディスクからページをフェッチしません。代わりに、LOCK_DATA は NULL に設定されます。

information_schema.INNODB_LOCK_WAITS

カラム名説明
リクエスト_trx_idリクエストトランザクションのID。
要求されたロック IDトランザクションが待機しているロックの ID。
blocking_trx_idブロッキング・トランザクションのID。
blocking_lock_id他のトランザクションの進行を妨げる、トランザクションが保持するロックのID



Read next

Redisオブジェクト・システム

redisはキー・バリュー・ベースのデータベースですが、メモリを最大限に利用するために、すべてのオブジェクトをsdsを使って値として格納するのではなく、値として格納します。 つまり、このように5つのデータ構造をカプセル化することで格納します。そして、エンコードとは...の使用を示すことです。

Apr 28, 2020 · 2 min read