


Quels sont les niveaux d'isolement des transactions dans MySQL, et quelle est la valeur par défaut?
Jun 23, 2025 pm 03:05 PMLe niveau d'isolement des transactions par défaut de MySQL est une lecture reproductible, ce qui empêche les lectures sales et les lectures non répétibles via MVCC et les serrures d'écart, et évite la lecture fant?me dans la plupart des cas; D'autres niveaux majeurs incluent la lecture non engagée, permettant des lectures sales mais les performances les plus rapides, 1. La lecture engagée garantit que les données soumises sont lues mais peuvent rencontrer des lectures non répétibles et des lectures fant?mes, 2. Le niveau de défaut de lecture reproductible, garantissant la cohérence des lectures multiples au sein de la transaction, 3. La sérialisation est le niveau le plus élevé, empêcher d'autres transactions à partir de données modiantes par les blocs, assurer l'intégrité des données mais le sacrificateur; Sélectionnez @@ tx_isolation; et définir le niveau d'isolement des transactions de session pour afficher ou définir les niveaux d'isolement.
MySQL prend en charge plusieurs niveaux d'isolement des transactions, qui déterminent comment les transactions interagissent entre elles et comment la cohérence des données est maintenue. Le niveau d'isolement par défaut dans MySQL est une lecture reproductible .
Voici une ventilation des principaux niveaux d'isolement que vous pourriez rencontrer:
Lire non engagé - Isolement le plus bas
Ce niveau permet à une transaction de lire les modifications non engagées apportées par une autre transaction. Cela peut conduire à des ?lectures sales?, où les données qui n'ont pas été finalisées (et qui pourraient être annulées) sont lues.
- Pas couramment utilisé dans la pratique en raison du risque d'incohérence
- Les performances les plus rapides, mais moins s?res
Exemple:
Si la transaction A a mis à jour une ligne mais ne s'est pas encore engagée, la transaction B peut voir cette mise à jour immédiatement, même si elle est annulée plus tard.
Lire engagé - évite les lectures sales
Ce niveau garantit que toutes les données lues lors d'une transaction sont engagées pour le moment où elles sont lues.
- Empêche les lectures sales
- Peut encore permettre des lectures non répétibles et des lectures fant?mes
Dans certaines bases de données comme Oracle, c'est la valeur par défaut, mais pas dans MySQL.
Cas d'utilisation:
Lorsque vous souhaitez vous assurer que vous ne lisez que des données engagées, mais que vous n'avez pas besoin de cohérence stricte sur toute la transaction.
Lecture reproductible - par défaut dans MySQL
à ce niveau, MySQL garantit que si une transaction lit plusieurs fois les mêmes données, elle verra les mêmes valeurs tout au long de la transaction.
- Empêche les lectures sales et les lectures non répétibles
- Empêche également la plupart des lectures fant?mes (bien que techniquement possible dans certains cas de bord)
- Utilise le contr?le de la concurrence multi-version (MVCC) et les verrous à clé suivante pour y parvenir
Parce que c'est la valeur par défaut, vous trouverez souvent qu'il est utilisé sans configuration explicite.
Comportement commun:
- Si deux transactions essaient de modifier les mêmes lignes, on attendra ou échouera en fonction du verrouillage
- Les lectures cohérentes dans une transaction utilisent un instantané de la base de données
Sérialisable - isolement le plus élevé
Il s'agit du niveau d'isolement le plus strict. Il place un verrouillage sur les lignes en cours de lecture, empêchant d'autres transactions de les modifier jusqu'à la fin de la transaction actuelle.
- Empêche les lectures sales, les lectures non répétibles et les lectures fant?mes
- Peut réduire considérablement les performances en raison de l'augmentation du verrouillage
Il est généralement utilisé lorsque l'intégrité absolue des données est requise et que les performances ne sont pas une priorité absolue.
Résumé des niveaux d'isolement et du comportement
Niveau d'isolement | Dirty Reads | Lectures non répétibles | Phantom lit |
---|---|---|---|
Lire non engagé | Possible | Possible | Possible |
Lire engagé | Non | Possible | Possible |
Lecture reproductible | Non | Non | Rare* |
Sérialisable | Non | Non | Non |
* MySQL utilise le verrouillage à clé suivante dans la lecture reproductible pour empêcher la plupart des lectures fant?mes.
Vous pouvez vérifier ou modifier le niveau d'isolement à l'aide de commandes SQL comme:
Sélectionnez @@ tx_isolation; Définir le niveau d'isolement des transactions de session Lire engagée;
Gardez à l'esprit que la modification du niveau d'isolement affecte la fa?on dont vos transactions se comportent sous charge et concurrence.
Fondamentalement, c'est tout.
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!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Sujets chauds

Pour réinitialiser le mot de passe racine de MySQL, veuillez suivre les étapes suivantes: 1. Arrêtez le serveur MySQL, utilisez SudosystemCTlStopmysql ou SudosystemctlStopMysQLD; 2. Démarrez MySQL en - Skip-Grant-Tables, exécutez SudomysQld-Skip-Grant-Tables &; 3. Connectez-vous à MySQL et exécutez la commande SQL correspondante pour modifier le mot de passe en fonction de la version, telle que Flushprivileges; alterUser'root '@' localhost'identifiedby'your_new

MySQLDump est un outil commun pour effectuer des sauvegardes logiques des bases de données MySQL. Il génère des fichiers SQL contenant des instructions de création et d'insertion pour reconstruire la base de données. 1. Il ne sauvegarde pas le fichier d'origine, mais convertit la structure de la base de données et le contenu en commandes SQL portables; 2. Il convient aux petites bases de données ou à la récupération sélective et ne convient pas à la récupération rapide des données de niveau TB; 3. 4. Utilisez la commande MySQL pour importer pendant la récupération et peut désactiver les vérifications des clés étrangères pour améliorer la vitesse; 5. Il est recommandé de tester régulièrement la sauvegarde, d'utiliser la compression et de régler automatiquement.

ToseCurelyConnectToAremotemysQlServer, Usesshtunneling, ConfigureMysqlForremoteAccess, Setfirewallrules et Considersslincryption . Premier, établianshtunnelwithssh-l3307: localhost: 3306User @ Remote-Server-NandConnectViamysql-H127.0.0.1-P3307.Second, Editmys

Lors de la gestion des valeurs nuls dans MySQL, veuillez noter: 1. Lors de la conception du tableau, les champs clés sont définis sur Notnull et les champs facultatifs sont autorisés nuls; 2. ISNULL ou ISNOTNULL doit être utilisé avec = ou! =; 3. Les fonctions IFNULL ou Coalesce peuvent être utilisées pour remplacer les valeurs par défaut d'affichage; 4. Soyez prudent lorsque vous utilisez des valeurs nulles directement lors de l'insertion ou de la mise à jour, et faites attention aux méthodes de traitement de la source de données et du cadre ORM. NULL représente une valeur inconnue et n'égale aucune valeur, y compris lui-même. Par conséquent, soyez prudent lorsque vous interrogez, comptez et connectez les tables pour éviter les données manquantes ou les erreurs logiques. L'utilisation rationnelle des fonctions et des contraintes peut réduire efficacement les interférences causées par NULL.

Allumez les journaux de requête lente MySQL et analysez les problèmes de performances localisés. 1. Modifiez le fichier de configuration ou définissez dynamiquement Slow_Query_Log et Long_Query_time; 2. Le journal contient des champs clés tels que Query_time, Lock_time, ROWS_EXAMINE pour aider à juger les goulots d'étranglement de l'efficacité; 3. Utilisez les outils MySqlDumpSlow ou Pt-Query-digest pour analyser efficacement les journaux; 4. Les suggestions d'optimisation incluent l'ajout d'index, d'éviter la sélection *, le fractionnement des requêtes complexes, etc. Par exemple, l'ajout d'un index à user_id peut réduire considérablement le nombre de lignes numérisées et améliorer l'efficacité de la requête.

Les transactions MySQL et les mécanismes de verrouillage sont essentielles pour le contr?le et le réglage des performances simultanés. 1. Lorsque vous utilisez des transactions, assurez-vous d'exciter explicitement et de maintenir les transactions à court pour éviter l'occupation des ressources et les ballonnements undolog en raison de longues transactions; 2. Les opérations de verrouillage incluent des verrous partagés et des verrous exclusifs, SELECT ... Forupdate Plus X Locks, SELECT ... LOCKINSHAREMODE plus les verrous S, les opérations d'écriture automatiquement et les index doivent être utilisés pour réduire la granularité des verrous; 3. Le niveau d'isolement est lisible de manière répétitive par défaut, adapté à la plupart des scénarios et les modifications devraient être prudentes; 4. L'inspection de blocage peut analyser les détails de la dernière impasse via la commande showEngineInNodbStatus, et les méthodes d'optimisation incluent l'ordre d'exécution unifié, augmentent les index et introduisent des systèmes de file d'attente.

GroupBy est utilisé pour regrouper les données par champ et effectuer des opérations d'agrégation, et avoir une utilisation est utilisée pour filtrer les résultats après le regroupement. Par exemple, l'utilisation de groupByCustomer_ID peut calculer la quantité de consommation totale de chaque client; L'utilisation d'avoir peut filtrer les clients avec une consommation totale de plus de 1 000. Les champs non agrégés après sélection doivent appara?tre dans GroupBY, et avoir peut être filtré conditionnellement à l'aide d'un alias ou d'expressions d'origine. Les techniques courantes incluent le comptage du nombre de chaque groupe, le regroupement de plusieurs champs et le filtrage avec plusieurs conditions.

La pagination MySQL est généralement mise en ?uvre en utilisant la limite et le décalage, mais ses performances sont médiocres sous un grand volume de données. 1. Limit contr?le le nombre de chaque page, le décalage contr?le la position de départ et la syntaxe est limitedoffsetm; 2. Les problèmes de performance sont causés par des enregistrements excessifs et la suppression des analyses de décalage, entra?nant une faible efficacité; 3. Les suggestions d'optimisation incluent l'utilisation de la pagination du curseur, de l'accélération d'index et du chargement paresseux; 4. Le curseur Paging localise le point de départ de la page suivante à travers la valeur unique du dernier enregistrement de la page précédente, en évitant le décalage, ce qui convient à l'opération "page suivante", et ne convient pas aux sauts aléatoires.
