编程知识 cdmana.com

Comment traiter le système de fichiers Linux avec puissance et élégance, algorithme JVM,

Texte

Parler MYSQL Des choses, Je suis sûr qu'aucun de ces concepts ne vous est étranger. :

  • Quatre caractéristiques principales:ACID
  • Problèmes de concurrence
    • Sale lecture.
    • Non répétable
    • Lecture fictive
  • Niveau d'isolement
    • Read Uncommitted(Lire non engagé)
    • Read Committed(Lire la soumission)
    • Repeatable Read(Reliable)
    • Serializable(Sérialisable)

La carte mentale ci - dessous peut être plus claire ??

Comment le faire avec force et éléganceLinuxSystème de fichiers,Problème d'algorithme JVM,_Arrière - plan

MySQL Le niveau d'isolement par défaut pour est RR (Repeatable Read) , Le niveau de lecture répétable est capable de résoudre les lectures sales 、 Deux choses qui ne peuvent pas être lues à plusieurs reprises. , Mais le problème de la lecture fictive persiste. ,Si vous utilisezSerializableNiveau d'isolement pour, Pas pratique pour les entreprises à forte concurrence .Alors MySQL Comment résoudre le problème épineux de la lecture fictive ?

C'est vrai,MySQL AdoptionMVCC(Contrôle de la concurrence Multi - Versions)EtGap Lock(Serrure de dégagement) Ces deux mécanismes résolvent le problème de la lecture fictive ~

Comment les deux approches sont - elles mises en œuvre? ?

Commençons par ça. MySQL De**"Lire"La différence entre**. Parce que dans le niveau d'isolement des choses, **“Lire”**,Divisé enSnapshot Read(snapshot read)EtLecture actuelle(current read)

1. Lecture actuelle(current read)

select…lock in share mode ( Serrure de lecture partagée ) select…for update update , delete , insert

Lire les dernières données , Et verrouiller les enregistrements lus , Bloquer la modification et l'insertion des données de requête de l'objet courant par d'autres objets , Pour résoudre les lectures fantaisistes .

Mode de réalisation:Next-key Locks(Serrure à clé temporaire)

La définition officielle des serrures à clé temporaire est la suivante: :

A next-key lock is a combination of a record lock on the index record and a gap lock on the gap before the index record.

En termes simples, Serrure à clé temporaire = Verrouillage de l'enregistrement de ligne + Serrure de dégagement

Verrouillage des rangées、 Le concept de serrure de dégagement , On trouvera ci - après une description . Donc ce que nous devons savoir ici, c'est que , Mode de lecture actuel des choses ,C'est par Gap-Key-Locks Résolu.

2. Snapshot Read(snapshot read)

select * from table

Simple select Fonctionnement

Read Committed Niveau d'isolement:Chaque foisselect Génère une lecture instantanée .

Read Repeatable Niveau d'isolement: Le premier après l'ouverture de la transaction select C'est là que le Snapshot lit. , Au lieu de prendre un instantané pour lire dès que la transaction est ouverte .

Mode de réalisation:undolog Et MVCC

undolog Retrait des données , Il enregistre l'inversion des modifications ,Par exemple,, Insérer la suppression correspondante , Modifier les données originales ,Adoptionundo log Possibilité de faire reculer les transactions , Et peut être basé sur undo log Données retracées vers une version spécifique .

MVCC Est le contrôle de la concurrence Multi - versions mentionné ci - dessus .

Mode de réalisation

MVCC

MVCC Juste travailler sous deux niveaux de transaction :

  • Read Committed
  • Repeatable Read

MVCC Trois colonnes cachées derrière chaque ligne d'enregistrement , Dont deux colonnes principales

DB_TRX_ID: Numéro de version de l'article lors de la création des données de ligne d'enregistrement . Chaque chose ouverte , Le numéro de version de l'article est incrémenté .

DB_ROLL_PTR: Date d'expiration des données de la ligne d'enregistrement ( Ou supprimé ). Pointer vers la version précédente undolog Enregistrement,Composition undo Liste des liens. Si la ligne est mise à jour , Annuler la journalisation contient les informations nécessaires pour reconstruire le contenu de la ligne avant de mettre à jour la ligne .

  • INSERT

    Lors de l'insertion des données, DB_TRX_ID Enregistrer le numéro de version de l'article pour les nouvelles données actuelles

  • DELETE

    Lors de la suppression des données,DB_ROLL_PTR Enregistrer le numéro de version de l'article supprimé par l'opération courante

  • UPDATE

    1. Lors de la mise à jour des données, Insérer une nouvelle donnée ,DB_TRX_ID Enregistre le numéro de version de l'article pour lequel les données sont actuellement mises à jour

    2. Utiliser les anciennes données DB_ROLL_PTR La valeur est mise à jour au numéro de version de l'article pour les données actuellement mises à jour

  • SELECT

    Les règles de requête sont les suivantes: :

    1. Trouver Le numéro de version de la ligne de données est plus ancien que le numéro de version de la transaction courante Enregistrement des lignes de données pour ,C'est - à - dire( Numéro de version de l'article pour la requête courante >= DB_TRX_ID Valeur en)

      Cela garantit que les choses lisent les données , Soit les choses actuelles existent déjà , Ou c'est ce que les choses actuelles ont fait. .

    2. Trouver Supprimer le numéro de version Ou NULL,Ou Plus grand que le numéro de version de la transaction courante Les dossiers de.C'est - à - dire (DB_ROLL_PTR IS NULL OR DB_ROLL_PTR > Numéro de version de l'article pour la requête courante )

      Cela garantit que l'enregistrement de la ligne de données interrogée n'est pas supprimé avant l'ouverture de la transaction. .

Résumé de l'apprentissage technique

Les techniques d'apprentissage doivent avoir un parcours d'apprentissage clair,Pour apprendre efficacement,Il n'est pas nécessaire de faire un travail invalide,Perte de temps et manque d'efficacité,Tout le monde peut suivre mon cours.

Comment le faire avec force et éléganceLinuxSystème de fichiers,Problème d'algorithme JVM,_Programmeur_02

Comment le faire avec force et éléganceLinuxSystème de fichiers,Problème d'algorithme JVM,_Programmeur_03

Comment le faire avec force et éléganceLinuxSystème de fichiers,Problème d'algorithme JVM,_Programmeur_04

Partage final de l'entrevue

Tout le monde peut aussi bien se brosser plus de questions directement sur le cow - boy et la boucle de force,En même temps,J'ai aussi pris des questions d'entrevue à partager avec vous,C'est aussi de la part de grands hommes,Autant brosser les questions plus,Une vague d'or, neuf, dix, dix!

Comment le faire avec force et éléganceLinuxSystème de fichiers,Problème d'algorithme JVM,_Arrière - plan_05

Comment le faire avec force et éléganceLinuxSystème de fichiers,Problème d'algorithme JVM,_Java_06

 CodeChinaProjet Open Source:【Grandes usines de première ligneJavaAnalyse des questions d'entrevue+Résumé de base notes d'étude+Dernière vidéo d'explication】

版权声明
本文为[Program Sim Small Manor]所创,转载请带上原文链接,感谢
https://cdmana.com/2021/09/20210915071708829y.html

Scroll to Top