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

MySQL atomic insert-if-not-exists avec auto-incrémentation stable

La question est vraiment de savoir comment normaliser les données lorsque vous vous attendez à ce qu'il y ait des doublons. Et évitez ensuite de "brûler" les identifiants.

http://mysql.rjweb.org/doc.php/staging_table#normalization décrit un processus en 2 étapes et vise les mises à jour massives en raison de l'ingestion à grande vitesse des lignes. Il dégénère en une seule ligne, mais nécessite toujours les 2 étapes.

Étape 1 INSERTs tout nouveau lignes, créant de nouveaux identifiants auto_inc.

L'étape 2 récupère les identifiants en masse.

Notez que le travail est mieux fait avec autocommit=ON et en dehors de la transaction principale qui charge les données. Cela évite une cause supplémentaire de gravure des identifiants, à savoir les restaurations potentielles.