Maison > base de données > tutoriel mysql > Discutez en détail de la table verrouillée des requêtes MySQL

Discutez en détail de la table verrouillée des requêtes MySQL

PHPz
Libérer: 2023-04-17 09:56:14
original
1027 Les gens l'ont consulté

MySQL est un logiciel open source basé sur un système de gestion de bases de données relationnelles. Il est largement utilisé dans les applications et offre aux développeurs un moyen fiable de stocker des données. Cependant, comme MySQL est sujet à des problèmes pour maintenir les tables verrouillées lors du traitement de grandes quantités de données, les développeurs doivent savoir comment interroger les tables verrouillées.

Lors du développement à l'aide de MySQL, vous rencontrez souvent le besoin d'interroger des tables verrouillées. MySQL propose diverses manières d'interroger la table actuellement verrouillée, notamment en utilisant des outils de ligne de commande, en interrogeant les vues système et en interrogeant les tables de schéma d'informations. Chaque méthode de requête est discutée en détail ci-dessous et quelques exemples sont donnés.

  1. Utilisez les outils de ligne de commande pour interroger les tables verrouillées
    Utilisez la commande SHOW PROCESSLIST sur la ligne de commande pour interroger les processus et les threads en cours d'exécution. Étant donné que chaque table dans MySQL est associée à un ID de thread, vous pouvez utiliser cette commande pour déterminer quelle table est actuellement verrouillée. Par exemple, la commande suivante peut interroger toutes les requêtes en cours d'exécution et trouver quelle requête verrouille la table spécifiée :
SHOW PROCESSLIST;
Copier après la connexion

Cela affichera une liste de tous les threads MySQL en cours d'exécution. Dans la liste, vous pouvez afficher des informations utiles telles que l'ID, l'utilisateur, l'hôte, la base de données, la commande, l'heure et l'état. Par exemple, s'il existe un thread verrouillant la table nommée "nom_table", vous pouvez trouver le champ "LOCK" dans la colonne "Command". De plus, dans la colonne « Info », vous pouvez visualiser l'instruction SQL exécutée par la requête.

  1. Interroger les vues système et déterminer les tables verrouillées
    MySQL fournit également un grand nombre de vues système pour vérifier les threads en cours d'exécution, verrouiller les informations et les mutex, les sessions et leurs propriétés, l'état de la base de données, etc. Interrogez la vue suivante pour déterminer la table actuellement verrouillée :
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS WHERE LOCK_TABLE LIKE '%table_name%';
Copier après la connexion

Dans cette instruction de requête, vous pouvez remplacer "table_name" par le nom de la table que vous souhaitez interroger. Cette instruction renvoie toutes les lignes et tables actuellement verrouillées par le moteur InnoDB. De plus, vous pouvez interroger la vue INFORMATION_SCHEMA.INNODB_LOCK_WAITS pour rechercher les threads en attente de ressources de verrouillage.

  1. Interrogez la table de schéma d'informations pour identifier les tables verrouillées
    La table de schéma d'informations dans MySQL permet aux utilisateurs d'inspecter diverses ressources utilisées par le serveur de base de données. Cela inclut les tables ouvertes, le fil de discussion actuel, les lignes et tables verrouillées, l'heure, etc. Vous pouvez trouver la table actuellement verrouillée en interrogeant la table suivante :
SELECT * FROM information_schema.TABLES WHERE ENGINE = 'InnoDB' AND TABLE_NAME = 'table_name';
Copier après la connexion

Dans la requête ci-dessus, vous pouvez remplacer "table_name" par le nom de la table que vous souhaitez interroger. Cette requête renverra les détails du serveur de table et du moteur de stockage spécifiés, et si la table est verrouillée, le type de verrouillage peut être affiché dans le champ LOCK_TYPE.

Résumé :
Les requêtes MySQL pour les tables verrouillées peuvent être effectuées de différentes manières. Utilisez l'outil de ligne de commande pour interroger les threads en cours d'exécution et rechercher les threads qui verrouillent une table spécifique ; utilisez les vues système pour déterminer les opérations en cours, les opérations en attente et les opérations d'acquisition de verrous ; interrogez la table information_schema.TABLES pour trouver la colonne "QUERY" pour identifier ; si la requête en cours d'exécution concerne un verrou ou une autre requête. Mais il convient de noter qu'avant d'apporter des modifications, veuillez lire attentivement la documentation officielle de MySQL pour comprendre toutes les connaissances et recommandations nécessaires afin d'éviter des pertes inutiles.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal