Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL INSERT ....ON DUPLICATE UPDATE - Ajoute un à l'auto-incrémentation

INSERT ... ON DUPLICATE KEY UPDATE est décrit comme un "insert en mode mixte" pour les besoins de AUTO_INCREMENT d'InnoDB manutention. Les inserts en mode mixte sont essentiellement ceux où le maximum nombre d'AUTO_INCREMENT requis les valeurs sont connues, mais le montant qui sera réellement nécessaire n'est pas.

Les insertions en mode mixte sont gérées spécialement par défaut, comme décrit dans le Documentation MySQL :

Si vous utilisez InnoDB, vos alternatives sont :

  1. Éviter INSERT ... ON DUPLICATE KEY UPDATE .
  2. Définissez le innodb_autoinc_lock_mode paramètre à 0 , pour le mode de verrouillage d'auto-incrémentation "traditionnel", qui garantit que tous les INSERT les instructions attribueront des valeurs consécutives pour AUTO_INCREMENT Colonnes. Cependant, cela est accompli en verrouillant pendant l'instruction, il y a donc une perte de performances associée à ce paramètre.
  3. (Recommandé) Ignorer les espaces dans le AUTO_INCREMENT colonne.

Remarque :AUTO_INCREMENT la gestion est totalement différente sous MyISAM, qui ne présente pas ce comportement.