Maison > Article > base de données > Discutez en détail de la table verrouillée des requêtes MySQL
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.
SHOW PROCESSLIST;
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.
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS WHERE LOCK_TABLE LIKE '%table_name%';
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.
SELECT * FROM information_schema.TABLES WHERE ENGINE = 'InnoDB' AND TABLE_NAME = 'table_name';
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!