Maison base de données tutoriel mysql La connexion entre les verrous MySQL et les index

La connexion entre les verrous MySQL et les index

Mar 17, 2018 am 10:33 AM
mysql 索引 联系

Lorsque nous utilisons habituellement les verrous MySQL, nous considérons rarement l'efficacité des verrous lorsque nous sommes nouveaux dans les bases de données. En général, nous souhaitons uniquement atteindre l'objectif d'empêcher la concurrence. Cependant, à mesure que la quantité de données augmente, nous constaterons cela. il y en a beaucoup Nous avons écrit du SQL qui est très optimisé, mais parfois il est encore très lent et il est difficile d'en trouver la raison. À ce stade, nous devrions nous demander si cela est dû au verrouillage de MySQL.

Nous créons d'abord une nouvelle table de données :


Ici notre clé primaire est indexée par défaut ; ajoutez quelques données ici


Ensuite, nous ouvrons deux processus de test :


Ajoutez d'abord une condition Where qui n'implique pas de verrouillage d'index :


Ensuite on met à jour les données de cette ligne dans la deuxième fenêtre, on va On le trouve que cette opération sera bloquée,



Ensuite, lorsque nous soumettrons la transaction, nous trouverons les données de la deuxième fenêtre Il sera exécuté immédiatement.

D'après ce qui précède, il ne semble y avoir aucun problème. Cela atteint l'objectif que nous souhaitons, mais vous pouvez ajouter le même verrou et essayer de mettre à jour d'autres données, telles que. ce que j'ai exécuté ci-dessous Data :

J'ai testé les trois situations ci-dessus en utilisant le même processus. Elles seront toutes bloquées, donc le problème se pose. Nous verrouillons en fait name='test name'. Peut-être que nous venons juste de le faire. Nous voulons verrouiller les deux lignes id=133 et id=134. Nous ne voulons pas verrouiller 135, 136, 137, mais nous ne pouvons pas accéder à ces trois lignes car notre verrou est un verrou de table. en utilisant l'index :

L'index est utilisé lors de l'utilisation du verrou ci-dessus, mais nous sommes toujours bloqués lors de la mise à jour des données, ici nous sentirons que l'index est en fait aussi C'est ; inutile, mais si vous rencontrez le même verrou et utilisez l'index lors de la mise à jour des données, vous pouvez voir l'effet :


Nous constaterons que ce n'est pas verrouillé . Live, mis à jour directement ;

Ce qui suit est un résumé : si notre verrou utilise un index, c'est un verrou de ligne, s'il n'utilise pas d'index, c'est un verrou de table, mais le les données que nous exploitons doivent utiliser un verrou ;

Parlons de pourquoi c'est le cas :

Tout d'abord, nous savons que s'il n'y en a pas. index, nous l'utiliserons lors de la sélection ou du positionnement des données. Elle s'effectue sous la forme d'une analyse complète de la table, qui formera un verrou de table. S'il y a un index, il localisera directement la ligne spécifiée, qui formera un. verrouillage de ligne Cependant, sachez que lorsque vous mettez à jour les données, si vous n'utilisez pas l'index, l'ensemble de la table sera verrouillé. Lorsque la ligne verrouillée est analysée, elle sera également verrouillée, donc l'effet souhaité ne peut pas être obtenu. être atteint ;

Recommandations associées :

mécanisme de verrouillage mysql_MySQL

Verrouillage au niveau de la table d'utilisation du verrouillage MySQL

Comment optimiser le verrouillage 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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Article chaud

Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Compétences de traitement de structures de données volumineuses de PHP Compétences de traitement de structures de données volumineuses de PHP May 08, 2024 am 10:24 AM

Compétences de traitement de structures de données volumineuses de PHP

Comment optimiser les performances des requêtes MySQL en PHP ? Comment optimiser les performances des requêtes MySQL en PHP ? Jun 03, 2024 pm 08:11 PM

Comment optimiser les performances des requêtes MySQL en PHP ?

Comment utiliser la sauvegarde et la restauration MySQL en PHP ? Comment utiliser la sauvegarde et la restauration MySQL en PHP ? Jun 03, 2024 pm 12:19 PM

Comment utiliser la sauvegarde et la restauration MySQL en PHP ?

Quels sont les scénarios d'application des types d'énumération Java dans les bases de données ? Quels sont les scénarios d'application des types d'énumération Java dans les bases de données ? May 05, 2024 am 09:06 AM

Quels sont les scénarios d'application des types d'énumération Java dans les bases de données ?

Comment insérer des données dans une table MySQL en utilisant PHP ? Comment insérer des données dans une table MySQL en utilisant PHP ? Jun 02, 2024 pm 02:26 PM

Comment insérer des données dans une table MySQL en utilisant PHP ?

Comment corriger les erreurs mysql_native_password non chargé sur MySQL 8.4 Comment corriger les erreurs mysql_native_password non chargé sur MySQL 8.4 Dec 09, 2024 am 11:42 AM

Comment corriger les erreurs mysql_native_password non chargé sur MySQL 8.4

Comment utiliser les procédures stockées MySQL en PHP ? Comment utiliser les procédures stockées MySQL en PHP ? Jun 02, 2024 pm 02:13 PM

Comment utiliser les procédures stockées MySQL en PHP ?

Stratégies d'optimisation des performances pour la pagination des tableaux PHP Stratégies d'optimisation des performances pour la pagination des tableaux PHP May 02, 2024 am 09:27 AM

Stratégies d'optimisation des performances pour la pagination des tableaux PHP

See all articles