Maison > base de données > tutoriel mysql > le corps du texte

table verrouillée par requête MySQL

王林
Libérer: 2023-05-23 09:29:36
original
7818 Les gens l'ont consulté

Mysql, en tant que système de gestion de bases de données couramment utilisé, joue un rôle essentiel dans les applications Internet d'aujourd'hui. Cependant, pour la gestion et la maintenance de Mysql, l’amélioration de ses performances et de sa stabilité est également un aspect très important. Dans le processus d'application de Mysql, il est également courant de rencontrer des tables verrouillées. Alors, comment interroger la table verrouillée dans ce cas ? Ensuite, la méthode d'interrogation par Mysql de la table verrouillée sera présentée en détail.

  1. Afficher l'état de verrouillage existant de Mysql

Entrez la commande suivante dans le client Mysql :

show engine innodb status;
Copier après la connexion

This Le but de la commande est d'afficher l'état de verrouillage actuel de Mysql. Ces informations d'état sont renvoyées à l'utilisateur sous la forme du moteur de stockage InnoDB. Grâce à cette commande, nous pouvons observer de nombreuses informations, notamment la version du moteur de stockage InnoDB, le nombre de verrous actuellement acquis, l'ID de transaction de la transaction verrouillée, etc.

  1. Afficher les informations sur les transactions verrouillées

Le moteur de stockage MySQL possède un paramètre trx_rollback_to_savepoint, qui peut être utilisé pour afficher toutes les transactions qui ont été verrouillées. Verrouiller la transaction information. Saisissez la commande suivante dans le client Mysql :

SELECT r.trx_id waiting_trx_id,
       r.trx_mysql_thread_id waiting_thread,
       r.trx_query waiting_query,
       b.trx_id blocking_trx_id,
       b.trx_mysql_thread_id blocking_thread,
       b.trx_query blocking_query
FROM   information_schema.innodb_lock_waits w
       INNER JOIN information_schema.innodb_trx b ON b.trx_id = w.blocking_trx_id
       INNER JOIN information_schema.innodb_trx r ON r.trx_id = w.requesting_trx_id;
Copier après la connexion

La fonction de cette commande est de visualiser les informations spécifiques de la table verrouillée et l'ID de transaction bloquante correspondant. Dans les résultats de sortie, wait_trx_id représente l'ID de transaction bloquée, wait_thread représente le numéro de processus correspondant à la transaction, wait_query représente l'instruction SQL exécutée par la transaction, blocking_trx_id représente l'ID de transaction bloquant la transaction et blocking_thread représente le numéro de processus correspondant à la transaction. transaction. blocking_query représente l'instruction SQL exécutée par la transaction.

  1. Requête des informations sur les tables verrouillées

Il existe une table innodb_locks dans le moteur de stockage Mysql, qui peut être utilisée pour afficher toutes les tables actuellement verrouillées. Verrouiller les informations de la table. Entrez la commande suivante dans le client Mysql :

SELECT concat('`', t1.`TABLE_SCHEMA`, '`.`', t1.`TABLE_NAME`, '`') AS `table`,
       t2.`ENGINE`,
       t2.`TRX_ID`,
       t2.`LOCK_MODE`,
       t2.`LOCK_TYPE`,
       t2.`LOCK_DATA`
FROM   `information_schema`.`TABLES` t1,
       `information_schema`.`INNODB_LOCKS` t2
WHERE  ( ( t1.`TABLE_SCHEMA` = DATABASE() )
         AND ( concat('`', t1.`TABLE_SCHEMA`, '`.`', t1.`TABLE_NAME`, '`') = t2.`LOCK_DATA` ) );
Copier après la connexion

La fonction de cette commande est d'afficher la table actuellement verrouillée, où 'table' représente le nom de la table actuellement verrouillée et 'ENGINE' représente le nom de la table. Le moteur de stockage utilisé. Dans le même temps, « TRX_ID » représente l'ID de transaction qui a verrouillé la table, « LOCK_MODE » représente le mode de verrouillage, « LOCK_TYPE » représente le type de verrouillage et « LOCK_DATA » représente les données verrouillées.

Résumé :

Il existe de nombreuses façons d'interroger les tables verrouillées dans Mysql. Grâce aux méthodes ci-dessus, vous pouvez afficher les tables actuellement verrouillées et les informations de transaction correspondantes de manière très détaillée. aide les administrateurs à comprendre les goulots d'étranglement des performances de Mysql et à résoudre le problème à la racine. Cependant, lorsque vous interrogez les informations de la table verrouillée, vous devez essayer d'éviter de forcer l'arrêt du processus via kill -9 et d'autres opérations, sinon cela pourrait entraîner des résultats imprévisibles. Par conséquent, dans le processus de candidature réel, il est également nécessaire de traiter la situation des tables verrouillées par Mysql avec prudence et d'adopter des solutions et des stratégies correspondantes basées sur l'architecture spécifique de l'entreprise et du système pour améliorer l'efficacité opérationnelle et la stabilité de Mysql.

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