Interviewer: Vous avez dit que les affaires MySQL familier? Permettez-moi de vous poser 10 questions

Auteur | LemonCoder

Zebian | Hu Weiwei

Auteur soumission de l'article

base de données relationnelle MySQL Learning est un bon point d'entrée, la plupart des gens utilisés pour l'étude et le travail avec CRUD, interviewer torturées curieux de l'âme que vous pouvez faire couramment? Nous devons comprendre certains des principes sous-jacents de la profonde base de données.

Fin de l'interview, sur les opérations du moteur de stockage de MySQL et 10 FAQ (Foire aux questions), vous voulez savoir sont ici.

Qu'est-ce qu'une transaction?

La transaction est « un groupe d'atomes de requêtes SQL, » ou une unité séparée de travail. Si le moteur de base de données peut toutes les déclarations avec succès que les requêtes de l'application de base de données, puis exécutez la requête. Si l'une de ces déclarations comme un accident ou autre raison non exécutoire, toutes les déclarations ne seront pas exécutées. Autrement dit, l'instruction de la transaction, soit tous exécutés réussissent ou échouent.

Syntaxe de contrôle des transactions sait?

BEGIN ou DEBUT TRANSACTION ouvrir explicitement une transaction; Les deux COMMIT / COMMIT WORK sont équivalentes. Valider la transaction, et la base de données a été toutes les modifications deviennent permanentes; TRAVAIL ROLLBACK / rollback. rollback transaction de l'utilisateur final et de retirer tous les changements non engagés en cours; identifiant SAVEPOINT pour créer un point de sauvegarde dans la transaction, une transaction peut avoir plusieurs SAVEPOINT; RELEASE SAVEPOINT identifiant supprimer une transaction point de sauvegarde; ROLLBACK TO identifiant la transaction est annulée pour le marqueur; SET TRANSACTION pour régler le niveau d'isolation des transactions. moteur de stockage InnoDB fournit le niveau d'isolation des transactions ont READ UNCOMMITTED, LIRE ENGAGE, REPEATABLE READ et SERIALIZABLE

Parlez des affaires de vous comprendre un langage simple

Dans le domaine bancaire aux marrons, l'utilisateur de citron a deux cartes bancaires, une carte de paie de China Merchants Bank CNMC, l'autre est la Banque industrielle et commerciale de Chine ICBC carte d'épargne, le 10e salaire mensuel doivent mettre la carte Merchants Bank 100 millions de transfert construction Bank aux comptes de carte de débit. Rappelez-vous où la banque est derrière l'acronyme nom de la table de données correspondant, vous devez vous rappeler, je vais vous donner une raison de la raison.

China Merchants Bank (CNMC): "garder imbécile ?!" Bank of China (ICBC) commercial: "L'amour ne dépôt existe pas!" China Construction Bank (CCB): "dépôt de dépôt ne ??" Banque de Chine (BC): «n'existe pas! » Banque agricole de Chine (ABC): « ah, n'existe pas! » Minsheng Bank (CMSB): "garder SB ?!" Banque industrielle (CIB): « sauver cent. » China Development Bank (CDB): "point de sauvegarde-le!" Banque HSBC (HSBC): "ou n'existe pas!"

L'opération de transfert peut être simplifiée sous vide à une transaction, comprenant les étapes consistant à:

  • requête CNMC si le solde du compte est supérieur à un million

  • Moins 1 million de CNMC solde du compte

  • Une augmentation de 100 millions d'euros sur le solde du compte ICBC

  • La déclaration suivante correspond à créer une transaction de transfert:

    DEBUT TRANSACTION; équilibre SELECT FROM CNMC où username = 'citron'; MISE À JOUR CNMC équilibre SET = équilibre - 1.000.000,00 où username = « citron »; Mise à jour ICBC balance SET = balance + 1.000.000,00 où username = 'citron'; COMMIT;

    Ce qui compte est les propriétés ACID?

    ACID est en fait la première lettre des caractéristiques de transaction abréviation anglo-saxonne, signification particulière est la suivante:

    • Atomicité (atomicité) une transaction doit être considérée comme faisant partie intégrante de la plus petite unité de travail, toutes les opérations de l'ensemble de la transaction soit tous soumis avec succès, ou tout échec rollback pour une transaction, il est impossible d'effectuer une seule partie de l'opération .

    • La cohérence base de données (consistance) est toujours une transition uniforme d'un état à un autre état cohérent. Dans l'exemple précédent, pour assurer la cohérence, même dans la mise en uvre du troisième, lorsque le système se bloque entre les quatre déclarations, les comptes CNMC ne perdrai pas un million, ou de citron pour Kusi, parce que la transaction n'a pas présenté la finale, de sorte que la transaction vos modifications ne seront pas enregistrées dans la base de données.

    • L'isolement (isolement) D'une manière générale, une entreprise change de maquillage avant la soumission finale, d'autres transactions ne sont pas visibles. Dans l'exemple précédent, lorsque la mise en uvre complète de la troisième déclaration, la quatrième phrase n'a pas encore commencé, à ce moment s'il y a d'autres gens prêts à rendre compte de citron de CNMC économiser de l'argent, et qu'il a vu compte CNMC ou un million a.

    • Modifier la persistance (durabilité) Une fois que la transaction est validée, il sera fait enregistrée en permanence à la base de données. A ce stade, même si le système tombe en panne, les données modifiées ne seront pas perdues. La persistance est un peu vague concept, car en fait, la persistance peut être divisé en un certain nombre de niveaux différents. Une certaine stratégie de persistance peut fournir une sécurité très forte, tandis que d'autres ne peuvent pas. Et « peut ne pas une garantie à 100% de la stratégie de persistance » aussi besoin de sauvegarder quoi faire d'autre.

    Ce qui est lit sale, lecture non reproductible, lecture fantôme

    lecture sale

    Avant de soumettre les données après la transaction pour modifier les données A, B à ce moment une autre lecture transaction de données, sinon contrôlée, transaction B A données modifiées, après a été modifié pour présenter des données, lisez B les données sont des données sales, ce processus est appelé sale sale lire lecture.

    lecture sale

    lecture non reproductible

    Une transaction interne a lu un certain temps après les données lues données lues précédemment à nouveau, mais a constaté que les données de lecture a subi des changements, ou certains dossiers ont été supprimés.

    lecture non reproductible

    lecture magique

    Une transaction au moment de l'enregistrement lu par une gamme de requête, la transaction B et insérez un nouveau record satisfait aux conditions dans cette plage, lorsqu'une requête conditionnelle à nouveau enregistrement de transaction, devra répondre aux conditions du nouvel enregistrement ( ligne magique de ligne fantôme)

    lecture magique

    lecture non reproductible et lecture fantôme Quelle est la différence?

    • mise au point de lecture non reproductible est modifiée: dans la même transaction, les mêmes conditions, d'abord lire les données et lu une deuxième fois « données ne sont pas les mêmes. » (Parce que le milieu il y a d'autres questions présenté une version révisée)

    • La lecture est mise au point magique pour ajouter ou supprimer: Dans la même transaction, les mêmes conditions, la première et la deuxième lecture du « nombre d'enregistrements ne sont pas les mêmes. » (Parce que le milieu il y a d'autres questions soumises à l'insertion / suppression)

    Quatre niveaux d'isolement savent quoi? Résoudre le problème

    la mise en uvre SQL des quatre niveaux d'isolation standard, chaque niveau fournit toutes les modifications apportées dans une transaction, qui est visible et dans une transaction entre une transaction qui ne soit pas visible. Les faibles niveaux d'isolement appuierons généralement niveau supérieur de traitement simultané, et ont moins de frais généraux.

    Niveaux d'isolement

    Les niveaux d'isolement peuvent être résolus avec des degrés de lecture, sale lit non reproductible, lecture fantôme. Les niveaux d'isolement ont leurs propres forces, il n'y a pas de solution parfaite, de la mise en uvre de scénarios d'affaires spécifiques pour parler de l'intimidation.

    La comparaison des niveaux d'isolement

    Quelles sont les opérations de soutien des moteurs de stockage de MySQL?

    MySQL, InnoDB et NDB moteur de stockage cluster fournit des capacités de traitement des transactions, ainsi que d'autres troisième moteur qui prend en charge les transactions.

    Quelle est la soumission automatique?

    MySQL par défaut de soumettre automatiquement le mode AUTOCOMMIT. En d'autres termes, si elle ne commence explicitement une transaction, chaque requête est traitée comme une transaction opération de validation.

    Pour les tables ou la mémoire de ces tables transactionnelles, modifier AUTOCOMMIT pas d'effet. Ce type de table, il n'y a pas COMMIT ou un concept ROLLBACK, il peut être considéré comme l'équivalent est en mode auto-validation.

    Vous pouvez mélanger dans un moteur de stockage de transaction?

    Essayez de ne pas utiliser la même transaction plusieurs moteurs de stockage, la couche serveur MySQL ne gère pas la transaction, la transaction est mis en uvre par le moteur de stockage sous-jacent.

    Si vous utilisez un mélange de tables transactionnels et non transactionnels (tels que les tables InnoDB et MyISAM) dans une transaction, il n'y aurait pas de problème dans le cas de soumission normale.

    Toutefois, si les besoins de transaction à révulsés, les changements sur les tables non transactionnelles ne peuvent pas être révoqués, ce qui provoque la base de données dans un état incohérent, il est difficile de réparer, le résultat final de la transaction ne sera pas déterminé. Ainsi, chaque table pour choisir le moteur de stockage droit est très important.

    types de moteurs de stockage de MySQL sont là?

    Le moteur de stockage le plus couramment utilisé est InnoDB et le moteur MyISAM, le moteur, InnoDB est le moteur de transaction de MySQL par défaut.

    Voir les tables de base de données dans les supports actuels du moteur:

    afficher l'état de table de 'your_db_name' où name = 'your_table_name'; `Champ Engine` tableau des résultats de la requête indique le type de moteur de stockage.

    moteur de stockage InnoDB caractéristiques et scénarios d'application?

    MySQL InnoDB est le défaut affaires « moteur de transaction », a été mis en place pour gérer un grand nombre de court terme (de courte durée), la majeure partie de la situation à court terme est les transactions normales soumises, le dos rarement roulé.

    modèle de transaction InnoDB plus pertinente, le Manuel de référence MySQL officiel, publié ici sur le lien: https: //dev.mysql.com/doc/refman/5.7/en/innodb-transaction-model.html

    histoire

    Les versions modernes de plugin InnoDB MySQL InnoDB appelé dans l'histoire, le plugin MySQL a été développé en 2008, jusqu'en 2010 après Oracle a acquis Sun Microsystems, a été officiellement libéré MySQL5.5 utiliser le plugin InnoDB remplace l'ancienne version de InnoDB, jusqu'à présent « roue de secours » avec succès devenir moteur de MySQL positif au lieu du plug-in de la reine, vous voyez un plugin si dur.

    caractéristique

    Contrôle d'accès simultané à plusieurs version (MVCC, multiversion Contrôle d'accès simultané) pour soutenir haute concurrence. Et atteint quatre niveaux d'isolation standard semble empêcher fantôme lire les serrures de l'écart de stratégie de verrouillage de la clé suivante.

    table de moteur est basé sur la mise en place d'un index ordonné en clusters, index cluster sur la requête de clé primaire a haute performance. Cependant, l'index secondaire index secondaire index de clé primaire doit contenir une colonne de clé primaire, donc si la colonne de clé primaire très importante, tous les autres indices seront grands. Par conséquent, si les index sur la table plus de mots, la clé primaire doit être aussi faible que possible. En outre format de stockage InnoDB est indépendant de la plate-forme.

    InnoDB fait beaucoup d'optimisation, par exemple: lecture de disque en mode de données en utilisant la prévisibilité de la prélecture, index de hachage est créé automatiquement dans un index de hachage mémoire adaptative vitesse opération de lecture (index de hachage adaptatif), et l'opération d'insertion peut être accélérée insérer un tampon (tampon insert) et analogues.

    soutien InnoDB par un certain nombre de mécanismes et outils pour réelle sauvegarde à chaud, le moteur de stockage MySQL ne supporte pas d'autres sauvegarde à chaud, pour obtenir une vue cohérente de la nécessité d'arrêter d'écrire à toutes les tables, et à la lecture et de l'écriture scène mixte, l'écriture d'arrêt peut aussi signifier avec la lecture des arrêts.

    moteur MyISAM caractéristiques et scénarios d'application?

    MyISAM est 5.1 et les versions précédentes du moteur de stockage par défaut de MySQL. MyISAM offre un certain nombre de fonctionnalités, y compris l'indexation en texte intégral, la compression, les fonctions spatiales (SIG), etc., mais MyISAM ne pas « opérations de soutien et le verrouillage de ligne » pour les données en lecture seule, ou la table est relativement faible, peut tolérer une opération de réparation, vous pouvez toujours utiliser elle.

    propriété

    MyISAM « mais ne supporte pas de verrouillage de verrouillage de ligne sur une table. » Lors de la lecture devra lire tous les verrous partagés sur la table, table d'écriture plus le verrou exclusif. Cependant, alors que la table a une opération de lecture, un nouvel enregistrement peut être inséré dans la table, on parle inséré simultanément.

    table MyISAM peut être manuellement ou effectuer automatiquement les opérations d'inspection et de réparation. Mais la reprise des transactions et reprise sur incident et différents, peut entraîner une certaine « perte de données », et l'opération de réparation est très lent.

    Pour les tables MyISAM, blob même et champ de texte de longueur égale, il peut également être basé sur les 500 premiers caractères pour créer l'index, MyISAM prend également en charge « l'indexation en texte intégral, » qui est basé sur un mot d'index créé pour soutenir des requêtes complexes.

    Si l'option DELAY_KEY_WRITE est spécifiée, dans la mise en uvre de chaque modification terminée, il ne modifie pas immédiatement les données d'index est écrit sur le disque, mais écrire sur la clé de mémoire tampon, uniquement lorsque la mémoire tampon clé pour nettoyer ou à proximité de la table avant correspondant à l'indice de bloc sera écrit sur le disque. De cette façon, il peut améliorer considérablement les performances d'écriture, mais quand la base de données ou accidents hôte entraînent « indice de dommage », vous devez effectuer l'opération de réparation.

    contraste InnoDB et MyISAM

    Cela dit cette estimation ne se souvenait pas de regarder, vous donner une table, une simple liste des principales différences entre les deux moteurs, comme indiqué ci-dessous.

    moteur de comparaison

    D'autres moteurs de stockage

    MySQL supporte également d'autres moteurs de stockage, tels que le moteur de la mémoire, le moteur NDB, moteur CSV, parce que ces moteurs ne sont pas au-dessus InnoDB et commune MyISAM, pas présenté ici, sont look peut intéresser par la documentation de MySQL. Ici, nous sommes à nouveau donné un lien officiel: https: //dev.mysql.com/doc/refman/5.7/en/storage-engines.html

    Liste des moteurs

    Ceci est une base MySQL, je recherche sous la forme de graphiques faciles à comprendre et combinés pour vous donner ce genre de connaissances, plus les connaissances de base et plus la maîtrise de l'enquête sous-jacente est plus que la connaissance peut devenir un point d'entrevue point d'inspection, je crois, après avoir lu le moteur de stockage pour les affaires MySQL et devrait avoir une compréhension plus complète.

    Enfin, je vous remercie pour la lecture, la compréhension de l'objectif de l'article est de partager des connaissances, si des défauts évidents apparaissent dans le texte est également bienvenu que, ensemble, nous apprenons exploré.

    Surchauffe débuts en direct sur la vente du mil 10, micro-canal peut transférer QQ, Ruby 2.7.1 publié | Geeks titres
    Précédent
    Soit la formation AI AI: Le Secret Ali, Université Zhejiang de l'entraîneur adjoint AI
    Prochain
    BTC reproduire le type d'accident « chute libre », l'original est affectée par ces facteurs?
    1.540.000 développeurs AI d'utiliser les données pour vous dire, comment pouvons-nous tourner vers dépasser la Chine AI? | Chine développeurs d'applications AI rapport
    Je ne sais pas comment connaître le printemps, combien Kubernetes sait
    Tout indice de performance hors limites ou la cause de l'effondrement de l'APP, le test Youku de performance générale pour obtenir un mouvement
    En option est une bonne chose, auriez-vous l'utiliser? | Programme de travail
    équipe de recherche AI du cadre de Tsinghua « mètre carte » PK Pytorch, qui est supérieure? | Fin du bien-être
    Les programmeurs sont en train de disparaître
    L'opération de Python: sept types de conditions de déclaration écrite
    L'entretien est terminé ! Collection de questions d'entretien sur chenilles 2020
    algorithme de modèle de langage naturel trop désordonné? cadre unifié national à l'IA open source
    5 jours saisis 12! Le trafic soleil police enquête approfondie « bombardant la rue » sur les infractions routières
    Taian: City School District organes de la CCPPC Daiyue deux groupes favorisant fortement les « quatre » travail critique