次のエディターは、MySQL innodb_autoinc_lock_mode の概要を示します。編集者はこれが非常に良いものだと思ったので、皆さんの参考として今から共有します。エディターに従って見てみましょう。
innodb_autoinc_lock_mode このパラメーターは、auto_increment 列を持つテーブルにデータを挿入するときの関連するロックの動作を制御します。
【0】まず挿入を分類しましょうまず、挿入は大きく3つに分類できます
1. t(name)の値('test')への挿入などの単純な挿入
2. データのロードなどの一括挿入 | ... への選択 ....
3. t(id,name) への挿入などの混合挿入 (1,'a') ) . 2. 1 これはコヒーレントを意味します
【1.1】tradition(innodb_autoinc_lock_mode=0) モード:
1. 下位互換性機能を提供します
2.このモードでは、すべての挿入ステートメント (「挿入のような」) はステートメントの先頭でテーブル レベルの auto_inc ロックを取得し、ステートメントの最後でロックを解放する必要があります。ここで述べられていることはむしろステートメント レベルであることに注意してください。トランザクション レベルよりも、トランザクションには 1 つ以上のステートメントが含まれる場合があります。
3. 値の配布の予測可能性、継続性、再現性を保証できます。これにより、挿入ステートメントがスレーブにコピーされたときにマスターと同じ値を生成できるようになります (ステートメントのレプリケーション ベースのセキュリティが保証されます)。
【1.2】consecutive(innodb_autoinc_lock_mode=1) モード:
1. このモードでは、単純挿入で一度に挿入される値の数がすぐに決まるため、 mysql は一度だけ使用できます。この挿入ステートメントに対して複数の連続した値を生成します。一般に、これはレプリケーションでも安全です (ステートメントベースのレプリケーションの安全性が保証されます)
2。このモードの利点は、ステートメントが対応する値を取得する限り、auto_inc ロックが事前に解放できることです
1. このモードでは auto_inc ロックがないため、このモードのパフォーマンスは最高ですが、同じステートメントに対して取得される auto_incremant 値が異なる可能性もあります。連続的ではないこと。
【2】バイナリファイル形式が混在している場合、これらの 3 つの値のいずれもコピーセーフになります。
format がステートメントではない場合は innodb_autoinc_lock_mode=2 を使用するのが最適です。これによりパフォーマンスが向上する可能性があります。
最後に auto_increment に関する例で終わります例:
auto_increment 列の値を更新
ステップ 1: シーンを再現します
create table t(x int auto_increment not null primary key); insert into t(x) values(0),(null),(3); select * from t; +---+ | x | +---+ | 1 | | 2 | | 3 | +---+
update t set x=4 where x=1; select * from t; +---+ | x | +---+ | 2 | | 3 | | 4 | +---+
ステップ 3: 通常の式の形式を再現します
insert into t(x) values(0); ERROR 1062 (23000): Duplicate entry '4' for key 'PRIMARY'
2 番目のステップを実行した後、mysql は 4 が人為的に占有されたことを認識しなかったため、3 番目のステップの実行時にエラーが発生しました。
以上がMySQL innodb_autoinc_lock_mode の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。