次のエディタでは、MySQL innodb_autoinc_lock_mode の概要を説明します。編集者はこれがとても良いと思ったので、参考として共有します。エディターに従って見てみましょう。
innodb_autoinc_lock_mode このパラメーターは、auto_increment 列を持つテーブルにデータを挿入するときの関連するロックの動作を制御します。
【0】まず挿入を分類しましょうまず、挿入は大きく3つに分類できます
1. t(name)の値('test')への挿入などの単純な挿入
2. データのロードなどの一括挿入 | ... への選択 ....
3. t(id,name) への挿入などの混合挿入 (1,'a') ) ,(
[1] innodb_autoinc_lock_mode の説明innodb_auto_lockmode には 3 つの値があります:
1, 0 これは伝統を表します
2つのコヒーレンテーションを意味しますこのモードでは、すべての挿入ステートメント (「insert like」) はステートメントの先頭でテーブル レベルの auto_inc ロックを取得し、ステートメントの最後でロックを解放する必要があります。ここではステートメント レベルではなくステートメント レベルについて話していることに注意してください。トランザクション レベル。トランザクションには 1 つ以上のステートメントが含まれる場合があります。
3. 値の配布の予測可能性、継続性、再現性を保証できます。これにより、挿入ステートメントがスレーブにコピーされたときにマスターと同じ値を生成できるようになります (ステートメントのレプリケーション ベースのセキュリティが保証されます)。
4. このモードでは auto_inc ロックがステートメントの終わりまで保持されるため、同時挿入に影響します。
【1.2】consecutive(innodb_autoinc_lock_mode=1) モード:
1. このモードでは、単純挿入で一度に挿入される値の数がすぐに決まるため、 mysql は一度だけ使用できます。この挿入ステートメントに対して複数の連続した値を生成します。一般に、これはレプリケーションでも安全です (ステートメントベースのレプリケーションの安全性が保証されます)
2。このモードの利点は、ステートメントが対応する値を取得する限り、auto_inc ロックが事前に解放できることです
[1.3] interleaved(innodb_autoinc_lock_mode=2)。モード
1. このモードでは auto_inc ロックがないため、このモードのパフォーマンスは最高ですが、同じステートメントに対して取得される auto_incremant 値が異なる可能性もあります。連続的ではないこと。
【2】バイナリファイル形式が混在している場合、これらの 3 つの値のいずれもコピーセーフになります。現在、mysql はバイナリ形式を row に設定することを推奨しているため、binlog_
format がステートメントではない場合は innodb_autoinc_lock_mode=2 を使用するのが最適です。これによりパフォーマンスが向上する可能性があります。 auto_incrementsexampleに関する例で説明することで、auto_increment列の値を行いませんcolumnStep1:シーンを再現します
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 | +---+step2:問題の原因となったSQL
update t set x=4 where x=1; select * from t; +---+ | x | +---+ | 2 | | 3 | | 4 | +---+
insert into t(x) values(0); ERROR 1062 (23000): Duplicate entry '4' for key 'PRIMARY'
4番目のステップ: 問題の概要最初のステップを実行した後、1つのステップで、 mysql は、次の auto_increment 値が 4 であることを認識しています。
2 番目のステップを実行した後、mysql は 4 が人為的に占有されたことを認識しなかったため、3 番目のステップの実行時にエラーが発生しました。 【関連する推奨事項】
1.
Mysqlの無料ビデオチュートリアル
2. innodb_index_statsがデータをインポートする際のテーブル主キーの競合エラーの詳細な説明
3. mysqlのinnodb_autoinc_lock_modeの例の詳細な説明
4. MySQL での新しいユーザー権限の追加の詳細な例
5.
以上がinnodb_autoinc_lock_mode メソッドの詳細な例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。