当前位置:网站首页>Verrouillage [MySQL]
Verrouillage [MySQL]
2022-07-06 08:23:00 【Il y a le ciel quand on vole.】
Verrouillage
Une serrure est un mécanisme par lequel un ordinateur coordonne plusieurs processus ou Threads pour accéder simultanément à une ressource.Dans la base de données,Les données sont également une ressource partagée.Comment assurer la cohérence de l'accès simultané aux données、L'efficacité est un problème que toutes les bases de données doivent résoudre,Les conflits de serrures sont également un facteur important qui influe sur le rendement de l'accès simultané à la base de données.
- Global Lock:Verrouiller toutes les tables de la base de données.
- Serrure de table:Verrouiller la table entière à chaque opération.
- Verrouillage des rangées:Chaque opération Verrouille les données de ligne correspondantes.
Global Lock
Le verrouillage global est le verrouillage de l'Instance entière de la base de données,L'Instance entière est en lecture seule après le verrouillage,Inclusion ultérieureDMLDéclarations、DDLLes déclarations de commit transactionnel pour les déclarations seront bloquées.Son scénario d'utilisation typique est de faire une sauvegarde logique de l'ensemble de la bibliothèque,Verrouiller toutes les tables,Pour obtenir une vue cohérente,Assurer l'intégrité des données.
# Plus de verrouillage global
flush tables with read lock;
# Sauvegarde des données
# WindowsLigne de commande
mysqldump -h39.105.19.217 -uroot –p123456 dataBaseName > scriptName.sql
# Relâchez la serrure.
unlock tables;
Caractéristiques:
- Si vous sauvegardez sur la bibliothèque principale,Aucune mise à jour ne peut être effectuée pendant la sauvegarde,Les affaires se sont arrêtées.
- Si vous sauvegardez à partir de la bibliothèque,Les journaux binaires qui ne peuvent pas être synchronisés à partir de la Bibliothèque primaire pendant la sauvegarde,Cela peut entraîner un retard maître - esclave.
# InnoDBMoteur de stockage, Sauvegarde cohérente des données sans verrouillage
mysqldump --single-transaction -uroot –p123456 itcast > itcast.sql
Serrure de table
Serrure de table,Verrouiller la table entière à chaque opération.Gros grain de verrouillage,La probabilité de conflit de serrure est élevée,Faible concurrence.Appliqué àMyISAM、InnoDBAttendez dans le moteur de stockage.Pour les serrures de table,Il est principalement divisé en trois catégories::
- Serrure de table
- Verrouillage des métadonnées(meta data lock, MDL)
- Verrouillage intentionnel
Serrure de table
Lisez la serrure.(Serrure partagée)
Écris la serrure.(Verrouillage exclusif)
# Lire la serrure
lock tables tableName read;
# Écris la serrure
lock tables tableName write;
# Relâchez la serrure.
unlock tables;
Conclusions:Lire la serrure ne bloque pas la lecture des autres clients,Mais ça bloque l'écriture.Les serrures d'écriture bloquent la lecture des autres clients,Ça bloque l'écriture des autres clients.
Verrouillage des métadonnées
MySQL5.5 Importer un verrou de métadonnées , Verrouillage automatique lors de l'accès à une table . Les métadonnées peuvent être comprises simplement comme la structure d'une table , Lorsqu'un tableau se rapporte à une transaction non engagée , Vous ne pouvez pas modifier la structure de ce tableau . Le verrouillage des métadonnées est conçu pour éviter DMLAvecDDLConflit,Assurer l'exactitude de la lecture et de l'écriture.
Lorsque vous ajoutez un tableau 、Supprimer、Modifier、Pendant l'opération de recherche, Verrouillage partagé des serrures de données en dollars canadiens . Lors d'une opération de modification de la structure du tableau , Verrouillage exclusif des serrures de données en dollars canadiens .
# Voir l'état des verrous de métadonnées dans la base de données
select object_type,object_schema,object_name,lock_type,lock_duration from performance_schema.metadata_locks;
Verrouillage intentionnel
Pour éviterDMLAu moment de l'exécution,Conflit entre la serrure de ligne ajoutée et la serrure de table,InInnoDB Verrouillage d'intention introduit dans le moteur de stockage , De sorte que le verrou de table ne vérifie pas chaque ligne
Les données sont - elles verrouillées? ,Utiliser des serrures intentionnelles pour réduire l'inspection des serrures de table.
- Intention de partager la serrure(IS):Par déclarationselect … lock in share modeAjouter. Compatible avec les serrures partagées pour les serrures de table , Exclusion mutuelle des serrures exclusives des serrures de montre .
- Verrouillage exclusif(IX):Parinsert、update、delete、select…for updateAjouter. Les serrures partagées et exclusives avec les serrures de table s'excluent mutuellement .
- Les serrures d'intention ne s'excluent pas mutuellement,Une fois la transaction engagée,Intention de partager la serrure、 Les serrures d'intention exclusive sont automatiquement libérées .
# Voir l'état de verrouillage de la serrure d'intention et de la serrure de ligne
select object_schema,object_name,index_name,lock_type,lock_mode,lock_data from performance_schema.data_locks;
Verrouillage des rangées
Verrouillage des rangées,Chaque opération Verrouille les données de ligne correspondantes.Petite granularité de verrouillage,Faible probabilité de conflit de serrure,Haute concurrence.Appliqué àInnoDBDans le moteur de stockage.InnoDBLes données de,Le verrouillage de ligne est réalisé en verrouillant les entrées d'index sur l'index, Au lieu d'ajouter à l'enregistrement
Verrouillage.Pour les serrures de rangée,Il est principalement divisé en trois catégories::
Verrouillage des rangées: Verrouillage d'une seule ligne d'enregistrement ,Empêcher d'autres transactions d'effectuer cette ligneupdateEtdelete.InRead Commit、Repeatable ReadPrise en charge au niveau de l'isolement.
Serrure de dégagement:Verrouiller l'écart d'enregistrement de l'index(Sans cet enregistrement),S'assurer que l'écart entre les enregistrements indexés est constant,Empêcher d'autres transactions de se produire dans cet intervalleinsert,Pour produire des lectures fantaisistes.InRepeatable ReadPrise en charge au niveau de l'isolement.
Serrure à clé temporaire:Combinaison de serrures de ligne et de serrures de dégagement,Verrouiller les données en même temps,Et verrouiller l'espace avant les données.InRepeatable ReadPrise en charge au niveau de l'isolement.
Verrouillage des rangées
InnoDB Le moteur de stockage implémente les deux types de verrouillage de ligne suivants :
- Serrure partagée(S):Autoriser une transaction à lire une ligne,Empêcher d'autres transactions d'obtenir un verrouillage exclusif pour le même ensemble de données.
- Verrouillage exclusif(X):Autoriser l'accès aux données de mise à jour des transactions pour les serrures exclusives, Empêcher d'autres transactions d'obtenir des serrures partagées et des exclusions pour le même ensemble de données
Verrouillage.
Lors de la recherche d'un index unique,Lorsqu'une correspondance équivalente est faite pour un enregistrement existant,Sera automatiquement optimisé pour les serrures de ligne.InnoDB Le verrouillage de ligne du moteur de stockage est pour le verrouillage indexé , Lorsqu'il n'est pas indexé , Tous les enregistrements du tableau seront verrouillés , Le verrouillage de la table est mis à jour .
Le client obtient idPour1 Serrure partagée pour cette ligne , Le client 2 peut obtenir idPour3 Cette rangée est fermée. , Parce que ce n'est pas la même ligne de données . Et si le client 2 veut obtenir idPour1 C'est une serrure exclusive. ,Sera bloqué, Je pensais que les serrures partagées et exclusives s'excluaient mutuellement .
Quand le client I ,Mise en œuvreupdateDéclarations,Ce sera pouridPour1 Le dossier est verrouillé. .Client 2, Si elle est également appliquée updateMise à jour des déclarationsidPour1Données,Aussi pouridPour1 Les données sont verrouillées. , Mais le client 2 sera bloqué , Parce que les serrures exclusives s'excluent mutuellement . Jusqu'à ce que le client engage une transaction , Pour libérer la serrure de cette rangée , Le client 2 débloque maintenant .
Client 1 transaction ouverte ,Et la mise en œuvreupdateDéclarations,Mise à journamePourLilyDonnées,C'est - à - direidPour19Les dossiers de . Puis mettre à jour dans le client II idPour3Les dossiers de, Mais pas directement. ,Sera bloqué,Pourquoi?? Parce qu'à ce stade, le client est basé sur name Lorsque le champ est mis à jour nameLe champ n'est pas indexé,S'il n'y a pas d'index, La serrure de ligne passe à la serrure de table ( Parce qu'un verrou de ligne est un verrou ajouté à une entrée d'index ,EtnamePas d'index).
# Voir l'état de verrouillage de la serrure d'intention et de la serrure de ligne
select object_schema,object_name,index_name,lock_type,lock_mode,lock_data from performance_schema.data_locks;
Serrure de dégagement et serrure à clé
Par défaut,InnoDBLe moteur de stockage estRepeatable ReadNiveau d'isolement des transactions en cours,Recherche et indexation à l'aide d'un verrou à clé temporaire,Pour éviter la fausse lecture.
Requête équivalente sur Index(Index unique),Lors du verrouillage d'un enregistrement inexistant,Optimisé pour les serrures de dégagement .
Requête équivalente sur Index(Index non unique),Lorsque la dernière valeur ne satisfait pas aux exigences de requête lors de la traversée à droite, La serrure à clé adjacente se dégrade en serrure de dégagement .
InnoDBMoteur de stockageB+Index des arbres, Les noeuds foliaires sont des listes bidirectionnelles ordonnées . Si, La valeur de la requête basée sur cet index secondaire est 18Données, Et avec une serrure partagée , On est enfermés. 18 Ça te va? ? Ce n'est pas, Parce que c'est un index non unique , Il peut y en avoir plusieurs dans cette structure 18L'existence de,Alors..., Continuez à regarder en arrière pendant que vous Verrouillez , Trouver une valeur qui ne répond pas aux critères ( Dans le cas présent, 29).Il y a un lien18Serrure à clé,Et oui.29 Verrouillage de l'espace avant .
- Requête de plage sur index(Index unique),Accède à la première valeur qui ne satisfait pas à la condition.
Les critères de requête sont: id>=19, Et ajouter une serrure partagée . À ce stade, nous pouvons utiliser les données disponibles dans la table de base de données , Diviser les données en trois parties :[19]、(19,25]、(25,+∞]. Par conséquent, le verrouillage de la base de données est ,19Avec une serrure,25 Serrure à clé (Contient25Et25 Écart précédent ), C'est l'infini
Serrure à clé( Infini positif et dégagement précédent ).
Attention!:Le verrouillage de l'écart a pour seul but d'empêcher d'autres transactions d'insérer l'écart..Les serrures de dégagement peuvent coexister,Un verrouillage d'écart appliqué par une transaction n'empêche pas une autre transaction d'appliquer un verrouillage d'écart sur le même intervalle.
RÉFÉRENCES:https://www.bilibili.com/video/BV1Kr4y1i7ru
边栏推荐
- LDAP应用篇(4)Jenkins接入
- 2022 Inner Mongolia latest water conservancy and hydropower construction safety officer simulation examination questions and answers
- Mobile Test Engineer occupation yyds dry goods inventory
- The resources of underground pipe holes are tight, and the air blowing micro cable is not fragrant?
- 从 CSV 文件迁移数据到 TiDB
- 面向个性化需求的在线云数据库混合调优系统 | SIGMOD 2022入选论文解读
- 1. Color inversion, logarithmic transformation, gamma transformation source code - miniopencv from zero
- ESP series pin description diagram summary
- 2. File operation - write
- NFT smart contract release, blind box, public offering technology practice -- contract
猜你喜欢
The State Economic Information Center "APEC industry +" Western Silicon Valley will invest 2trillion yuan in Chengdu Chongqing economic circle, which will surpass the observation of Shanghai | stable
Artcube information of "designer universe": Guangzhou implements the community designer system to achieve "great improvement" of urban quality | national economic and Information Center
【刷题】牛客网面试必刷TOP101
On the day of resignation, jd.com deleted the database and ran away, and the programmer was sentenced
Deep learning: derivation of shallow neural networks and deep neural networks
Asia Pacific Financial Media | art cube of "designer universe": Guangzhou community designers achieve "great improvement" in urban quality | observation of stable strategy industry fund
Let the bullets fly for a while
IoT -- 解读物联网四层架构
Asia Pacific Financial Media | designer universe | Guangdong responds to the opinions of the national development and Reform Commission. Primary school students incarnate as small community designers
Make learning pointer easier (3)
随机推荐
Tidb backup and recovery introduction
Personalized online cloud database hybrid optimization system | SIGMOD 2022 selected papers interpretation
Fibonacci sequence
Summary of phased use of sonic one-stop open source distributed cluster cloud real machine test platform
Wincc7.5 download and installation tutorial (win10 system)
使用 BR 备份 TiDB 集群数据到兼容 S3 的存储
3. File operation 3-with
[research materials] 2021 China online high growth white paper - Download attached
Pyqt5 development tips - obtain Manhattan distance between coordinates
What is the use of entering the critical point? How to realize STM32 single chip microcomputer?
Huawei cloud OBS file upload and download tool class
Grayscale upgrade tidb operator
LDAP應用篇(4)Jenkins接入
The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower
[t31zl intelligent video application processor data]
【云原生】手把手教你搭建ferry开源工单系统
[MySQL] database stored procedure and storage function clearance tutorial (full version)
Day29-t77 & t1726-2022-02-13-don't answer by yourself
Asia Pacific Financial Media | "APEC industry +" Western Silicon Valley invests 2trillion yuan in Chengdu Chongqing economic circle to catch up with Shanghai | stable strategy industry fund observatio
Nft智能合约发行,盲盒,公开发售技术实战--拼图篇