


Quels sont les niveaux d'isolement des transactions dans MySQL, et quelle est la valeur par défaut?
Le 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.

Stock Market GPT
Recherche d'investissement basée sur l'IA pour des décisions plus intelligentes

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)

La réponse est: l'instruction de cas de MySQL est utilisée pour implémenter la logique conditionnelle dans la requête, et prend en charge deux formulaires: simple et recherche. Différentes valeurs peuvent être renvoyées dynamiquement dans des clauses telles que Select, Where et OrderBy; Par exemple, dans SELECT, la classification des scores par segments fractionnaires, combinant des fonctions agrégées pour compter le nombre d'états, ou hiérarchiser les rôles spécifiques dans OrderBy, il est nécessaire de toujours terminer avec fin et il est recommandé d'utiliser d'autre pour gérer la situation par défaut.

Créez un script shell contenant la configuration de la base de données et la commande mysqldump et enregistrez-le sous Mysql_backup.sh; 2. Stockez les informations d'identification MySQL en créant un fichier ~ / .my.cnf et définissez 600 autorisations pour améliorer la sécurité, modifier le script pour utiliser l'authentification du fichier de configuration; 3. Utilisez Chmod X pour rendre l'exécutable de script et tester manuellement si la sauvegarde est réussie; 4. Ajouter des tâches chronométrées via Crontab-E, telles que 02 / path / vers / mysql_backup.sh >> / path / to / backup / backup.log2> & 1, réalisez la sauvegarde automatique et la journalisation à 2 heures du matin tous les jours; 5

Les sous-questionnaires peuvent être utilisés dans d'où, de sélection, de sélection et d'avoir des clauses pour implémenter le filtrage ou le calcul en fonction du résultat d'une autre requête. Les opérateurs tels que dans, tous, tous sont couramment utilisés dans où; Les alias sont nécessaires comme des tables dérivées de; Les valeurs uniques doivent être renvoyées dans Select; Les sous-requêtes apparentées reposent sur la requête extérieure pour exécuter chaque ligne. Par exemple, consultez les employés dont le salaire moyen est plus élevé que le ministère ou ajoutez la liste de salaire moyenne de l'entreprise. Les sous-questionnaires améliorent la clarté logique, mais les performances peuvent être inférieures à la jointure, vous devez donc vous assurer de retourner les résultats attendus.

INSERT ... L'implémentation OnDuplicateKeyupdate sera mise à jour si elle existe, sinon elle sera insérée et nécessite des contraintes de clé unique ou primaires; 2. Réinsert après la suppression de RemplaceInto, qui peut entraîner des modifications de l'ID d'incrémentation automatique; 3. L'insertion inserte uniquement et ne fait pas de données répétitives, et ne met pas à jour. Il est recommandé d'utiliser la première implémentation d'UPsert.

ExpliquerInmysqlRevealSQueryExecutionPlans, montrant IndexUsage, TablereadOrder, androwfilteringTooptimePerFormance; useitBereelectoAnalyzesteps, checkkeycolumnsliketypeAndrow

Utilisez UTC pour stocker le temps, définissez le fuseau horaire MySQL Server sur UTC, utilisez l'horodatage pour réaliser la conversion automatique du fuseau horaire, ajustez le fuseau horaire en fonction des besoins des utilisateurs dans la session, affichez le temps local via la fonction convert_tz et assurez-vous que le tableau de fuseau horaire est chargé.

Utilisez le mot clé distinct pour supprimer les valeurs en double de la colonne spécifiée et renvoyez des valeurs uniques. 1. La syntaxe de base est SelectDistinctColumn_NameFromTable_name; 2. Interrogez la valeur unique d'une seule colonne, telle que SelectDistinctCityFromCustomesrs; 3. Interrogez la combinaison unique de plusieurs colonnes, telles que SelectDistinctCity, StateFromCustomesrs; 4. Filtrez avec la clause WHERE et obtenez la valeur unique, comme selectDistinctProduct_namefromorderswhereOrder_Date> '202

MySQL peut calculer les distances géographiques à travers la formule Haversine ou la fonction ST_DISTANCE_SPHERE. Le premier convient à toutes les versions, et le second fournit des calculs de distance sphérique plus faciles et plus précis depuis 5.7.
