Incréments automatiques multiples pour des valeurs de clé primaire spécifiques
Question :
Comment un La base de données fournit-elle différentes clés d'incrémentation automatique pour des valeurs de clé primaire spécifiques, de sorte que chaque valeur de clé primaire ait sa propre séquence indépendante ? Par exemple, si une table contient une colonne "id" avec incrémentation automatique et une colonne "uid" pour l'ID utilisateur, est-il possible d'avoir une séquence d'auto-incrémentation différente pour chaque valeur "uid" ?
Réponse :
MySQL avec MyISAM Moteur
Le moteur MyISAM de MySQL prend en charge cette fonctionnalité. Lorsque AUTO_INCREMENT est spécifié sur une colonne secondaire dans un index à plusieurs colonnes, la valeur générée pour la colonne AUTO_INCREMENT est calculée comme suit : MAX(auto_increment_column) 1 WHERE prefix=given-prefix.
Autres solutions
Tableau Exclusif Verrouillage
Une solution alternative consiste à acquérir un verrou de table exclusif avant de tenter un INSERT. Cela empêche les INSERTs simultanés de créer des conditions de concurrence. Cependant, il sérialise l'accès à la table, limitant le débit.
Génération d'identifiant externe
Une autre approche consiste à générer le numéro d'identification en dehors de la portée de la transaction, en utilisant des mécanismes comme Memcached ou un service centralisé. Cela garantit des valeurs d'identifiant uniques sans dépendre de la fonctionnalité de la base de données.
Considérations
La mise en œuvre de cette fonctionnalité nécessite un examen attentif des problèmes potentiels, tels que :
Avertissement :
L'InnoDB Le moteur de MySQL ne prend pas en charge cette fonctionnalité.
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!