ホームページ  >  記事  >  データベース  >  Mysql-InnoDB ロックの関連コンテンツの紹介

Mysql-InnoDB ロックの関連コンテンツの紹介

不言
不言転載
2019-02-21 12:00:492079ブラウズ

この記事は、Mysql-InnoDB ロックに関する情報を提供します。必要な方は参考にしていただければ幸いです。

ロック タイプ

行レベル ロック

ロック モードは LOCK_S と LOCK_X のみで、他の FLAG はロックの説明に使用されます。 , 前述したように、LOCK_GAP、LOCK_REC_NOT_GAP、LOCK_ORDINARY、LOCK_INSERT_INTENTION の 4 つの記述があります。 (関連する推奨事項: MySQL チュートリアル )

LOCK_REC_NOT_GAP

LOCK_GAP

LOCK_ORDINARY(ネクスト キー ロック)

LOCK_INSERT_INTENTION

static const byte lock_compatibility_matrix[5][5] = {
/** IS IX S X AI /
/ IS / { TRUE, TRUE, TRUE, FALSE, TRUE},
/ IX / { TRUE, TRUE, FALSE, FALSE, TRUE},
/ S / { TRUE, FALSE, TRUE, FALSE, FALSE},
/ X / { FALSE, FALSE, FALSE, FALSE, FALSE},
/ AI / { TRUE, TRUE, FALSE, FALSE, FALSE}
};

GAP タイプ (ロック オブジェクトが最高値で確立されるか、適用されるロック タイプが LOCK_GAP) の場合、アプリケーションは挿入目的のロックではないため、ロックを待つ必要はありません。これは、セッションが異なるためです。は、同じ GAP の異なるタイプのロックに適用される可能性があり、GAP ロック自体は互いに競合しないように設計されています。
LOCK_ORDINARY または LOCK_REC_NOT_GAP タイプのロック オブジェクトは、LOCK_GAP タイプのロックを待つ必要はありません。ロックは、LOCK_REC_NOT_GAP タイプのロック オブジェクトを待つ必要はありません。
ロック リクエスト インテント ロックが挿入されるのを待つ必要はありません。

テーブル レベル ロック

InnoDB テーブル レベル ロックには、LOCK_IS、LOCK_IX、LOCK_X、LOCK_S、LOCK_AUTO_INC ロックの 5 つのロック モードがあり、ロック間の互換性があります。次の定義に従います。配列lock_compatibility_matrix。

InnoDB テーブル レベルのロックの目的は、DDL と DML 間の同時実行性の問題を防ぐことです。ただし、バージョン 5.5 での MDL ロックの導入後、InnoDB レイヤーにおけるテーブル レベルのロックの意味は、MDL ロック自体でその機能のほとんどをカバーするようになりました。

インテンション ロックはテーブル レベルであり、IS ロックと IX ロックは互いに競合しませんが、テーブル レベルの S/X ロックとは競合します。

S ロックまたは X ロックをレコードに追加する場合は、対応するインテンション ロック、または同じテーブル上でより高いロック強度を持つテーブル レベルのロックがあることを確認する必要があります。



以上がMysql-InnoDB ロックの関連コンテンツの紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。