La clé primaire dans MySQL est divisée en : 1. Séquence d'incrémentation automatique ; 2. Valeur aléatoire générée par la fonction UUID 3. Nom de compte unique enregistré par l'utilisateur 4. Générer une valeur d'incrémentation automatique similaire ; sur un ensemble de mécanismes, tels qu'un générateur de séquence.
(pour le moteur InnoDB) Notre environnement de production actuel peut utiliser quatre types d'attributs comme clés primaires :
(1). séquence ;
(2). Valeur aléatoire générée par la fonction UUID()
(3). Nom de compte unique enregistré par l'utilisateur, type de chaîne, généralement longueur : 40 caractères ; >
(4). Générez des valeurs auto-incrémentées basées sur un ensemble de mécanismes, tels que des générateurs de séquences Analysons ensuite les avantages et les inconvénients de chacun de ces quatre types d'attributs sous forme de tableau ; clés primaires. :(1)Séquence d'incrémentation automatique : Ajoutez de nouvelles valeurs dans un modèle séquentiel de petit à grand ou de grand à petit, le type de données est également propice à ; comparaison des valeurs de clé primaire ; l'espace de stockage est également relativement petit. Minimum, généralement défini sur : type INT à 4 octets ou type BIGINT à 8 octets ; si vous souhaitez diviser les données horizontalement, vous pouvez également définir deux paramètres de l'instance mysqld : auto_increment_increment et auto_increment_offset; en outre, le seul inconvénient La séquence d'auto-incrémentation est un verrou global au niveau de la table. Lorsque l'écriture simultanée à grande échelle se produit dans la série 5.0, des goulots d'étranglement sont susceptibles de se produire en raison de problèmes de mécanisme de libération du verrou. La série 5.1 a apporté des améliorations et ce problème n'existe fondamentalement pas ;
(2)Fonction UUID() : La valeur est aléatoire + partie fixe, la génération de valeur n'est pas ordonnée, et la même chose une partie de la valeur générée sur le même serveur est de 77,8 % ; le caractère de valeur généré est 36, calculé selon le codage utf8, et l'espace de stockage occupé est de 36 octets pour la prise en charge de la division horizontale des données, aucun paramètre spécial n'est requis ; 🎜>(3)
Utilisez le nom de compte enregistré par l'utilisateur, type String, la génération de sa valeur dépend de la saisie de l'utilisateur. Par conséquent, les données sont essentiellement ajoutées de manière non ordonnée, et le. la longueur de la chaîne est également variable. La restriction de la valeur de longueur la plus courte et la plus maximale ne peut être contrôlée que par la technologie précédente, et le fractionnement horizontal est pris en charge, aucun paramètre spécial n'est requis (4)
Le ; L'architecture du générateur de séquencesest similaire à la séquence à incrémentation automatique, mais nécessite un travail de développement supplémentaire et la fourniture d'un service tiers. Elle peut éviter le problème des verrous globaux augmentant les mots dans les séquences à incrémentation automatique, et s'améliorer. concurrence et meilleure prise en charge du fractionnement horizontal des données ; (5) Scénarios de rencontre probabilistes d'une architecture de réplication à double maître : serveur maître Lorsque les données sont exécutées avec succès mais ne sont pas copiées sur le serveur de sauvegarde en ligne, la probabilité de problèmes existe.D'autres types de méthodes doivent également être résolus par une intervention manuelle.Il n'existe pas de méthode automatisée simple et raisonnable.Les quatre méthodes ci-dessus ne peuvent être évitées ; clés primaires et comparez les excellentes qualités requises pour les clés primaires comme nous l'avons expliqué précédemment. Si le problème de division horizontale n'est pas pris en compte, ce qui entraînera des problèmes de configuration supplémentaires, la séquence sera automatiquement incrémentée. C'est le meilleur choix de champ de clé primaire. ; dans le scénario où le compte enregistré de l'utilisateur lui-même nécessite un caractère unique et non vide, il peut être utilisé comme choix de champ de clé primaire si la question du fractionnement horizontal est prise en compte, l'architecture du générateur de séquence à incrémentation automatique est utilisée ; qui est très facile à utiliser et à mettre en œuvre de manière fiable, la valeur générée est le meilleur choix de champ de clé primaire
;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!