Maison > Article > base de données > Exemple détaillé de la méthode innodb_autoinc_lock_mode
L'éditeur suivant vous présentera une introduction à MySQL innodb_autoinc_lock_mode. L'éditeur pense que c'est plutôt bien, alors je vais le partager avec vous maintenant et le donner comme référence. Suivons l'éditeur pour y jeter un œil.
Le paramètre innodb_autoinc_lock_mode contrôle le comportement des verrous associés lors de l'insertion de données dans une table avec une colonne auto_increment
En le définissant, les performances et les performances peuvent être améliorées ; atteint Équilibre de sécurité (cohérence des données maître-esclave)
[0] Classons d'abord les insertions
Tout d'abord, l'insertion peut généralement être divisée en trois catégories :
1. Insertion simple telle que l'insertion dans les valeurs t(name) ('test')
2. into.. select .... from ....
3. insertion mixte telle que insérer dans t(id,name) valeurs(1,'a'),( null,'b'),(5,'c');
[1] La description de innodb_autoinc_lock_mode
innodb_auto_lockmode a trois valeurs :
1. 0 Cela signifie tradition
2. 1 Cela signifie cohérent
3 Cela signifie entrelacé
【1.1】mode tradition(innodb_autoinc_lock_mode=0) :
1. Il offre une capacité de compatibilité ascendante[1.2] mode consécutif(innodb_autoinc_lock_mode=1) :
1. Dans ce mode, l'insertion simple a été optimisée depuis l'insertion simple. Le nombre de valeurs insérées en même temps peut être déterminé immédiatement, de sorte que MySQL peut générer plusieurs valeurs consécutives à la fois pour cette instruction d'insertion. En général, cela est également sûr pour la réplication (cela garantit la sécurité des instructions basées sur l'instruction ; réplication)
【1.3】entreleaved(innodb_autoinc_lock_mode=2) mode
【2】Si votre format de fichier binaire est mixte | alors l'une de ces trois valeurs est protégée contre la copie pour vous.
Étant donné que mysql recommande désormais de définir le format binaire sur row, il est préférable d'utiliser innodb_autoinc_lock_mode=2 lorsque binlog_format n'est pas une instruction. Cela peut être connu. .Meilleures performances.
Enfin, terminez par un exemple sur auto_incrementExemple :Ne vous embêtez pas à mettre à jourla valeur d'une colonne auto_increment
Étape 1 : Reproduire la scène
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 | +---+
Étape 2 : Reproduire le SQL à l'origine du problème
update t set x=4 where x=1; select * from t; +---+ | x | +---+ | 2 | | 3 | | 4 | +---+
Étape 3 : Reproduire l'expression habituelle
insert into t(x) values(0); ERROR 1062 (23000): Duplicate entry '4' for key 'PRIMARY'
Étape 4 : Résumé du problème
Après avoir exécuté la première étape, mysql sait que la prochaine valeur d'auto_increment est 4. Après avoir exécuté la deuxième étape, mysql ne savait pas que 4 avait été artificiellement occupé, donc une erreur s'est produite lors de l'exécution de la troisième étape. [Recommandations associées]1. 2.Explication détaillée de l'erreur de conflit de clé primaire de table lorsque innodb_index_stats importe des données
3.Exemple détaillé d'innodb_autoinc_lock_mode dans MySQL
4Exemple détaillé d'ajout de nouvelles autorisations utilisateur dans MySQL
5.Exemple détaillé de la méthode init_connect dans mysql
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!