ホームページ  >  記事  >  データベース  >  mysqlクエリでロックされたテーブルについて詳しく説明します

mysqlクエリでロックされたテーブルについて詳しく説明します

PHPz
PHPzオリジナル
2023-04-17 09:19:48930ブラウズ

MySQL は、リレーショナル データベース管理システムをベースにしたオープン ソース ソフトウェアです。これはアプリケーションで広く使用されており、開発者にデータを保存するための信頼できる方法を提供します。ただし、MySQL は大量のデータを処理するときにロックされたテーブルの維持に問題が発生する傾向があるため、開発者はロックされたテーブルをクエリする方法を知っている必要があります。

MySQL を使用して開発する場合、ロックされたテーブルをクエリする必要が生じることがよくあります。 MySQL には、コマンド ライン ツールの使用、システム ビューのクエリ、情報スキーマ テーブルのクエリなど、現在ロックされているテーブルをクエリするためのさまざまな方法が用意されています。各クエリ方法については以下で詳しく説明し、いくつかの例を示します。

  1. コマンド ライン ツールを使用してロックされたテーブルをクエリする
    コマンド ラインで SHOW PROCESSLIST コマンドを使用して、現在実行中のプロセスとスレッドをクエリします。 MySQL のすべてのテーブルにはスレッド ID が関連付けられているため、このコマンドを使用して、どのテーブルが現在ロックされているかを確認できます。たとえば、次のコマンドは、実行中のすべてのクエリをクエリし、指定されたテーブルをロックしているクエリを見つけます。
SHOW PROCESSLIST;

これにより、現在実行中のすべての MySQL スレッドのリストが表示されます。リストでは、ID、ユーザー、ホスト、データベース、コマンド、時刻、ステータスなどの役立つ情報を表示できます。たとえば、「table_name」という名前のテーブルをロックしているスレッドがある場合、「Command」列に「LOCK」フィールドが表示されます。さらに、「情報」列では、クエリによって実行されている SQL ステートメントを表示できます。

  1. システム ビューのクエリとロックされたテーブルの特定
    MySQL には、現在実行中のスレッド、ロック情報とミューテックス、セッションとそのプロパティ、データベース ステータスなどを確認するための多数のシステム ビューも用意されています。次のビューをクエリして、現在ロックされているテーブルを確認します。
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS WHERE LOCK_TABLE LIKE '%table_name%';

このクエリ ステートメントでは、「table_name」をクエリするテーブルの名前に置き換えることができます。このステートメントは、InnoDB エンジンによって現在ロックされているすべての行とテーブルを返します。さらに、INFORMATION_SCHEMA.INNODB_LOCK_WAITS ビューをクエリして、ロック リソースを待機しているスレッドを見つけることができます。

  1. 情報スキーマ テーブルをクエリして、どのテーブルがロックされているかを確認します。
    MySQL の情報スキーマ テーブルを使用すると、ユーザーはデータベース サーバーで使用されているさまざまなリソースを確認できます。これには、開いているテーブル、現在のスレッド、ロックされた行とテーブル、時間などが含まれます。次のテーブルをクエリすると、現在ロックされているテーブルを見つけることができます:
SELECT * FROM information_schema.TABLES WHERE ENGINE = 'InnoDB' AND TABLE_NAME = 'table_name';

上記のクエリでは、「table_name」をクエリするテーブルの名前に置き換えることができます。このクエリは、指定されたテーブル サーバーとストレージ エンジンの詳細を返します。テーブルがロックされている場合は、ロック タイプを LOCK_TYPE フィールドで確認できます。

概要:
MySQL は、ロックされたテーブルをさまざまな方法でクエリできます。コマンド ライン ツールを使用して、実行中のスレッドをクエリし、特定のテーブルをロックしているスレッドを検索します。システム ビューを使用して、進行中の操作、待機中の操作、およびロックを取得する操作を特定します。information_schema.TABLES テーブルをクエリして、識別するための "QUERY" 列を見つけます。実行されているクエリがロックに関するものであるか、他のクエリに関するものであるか。ただし、変更を加える前に、MySQL の公式ドキュメントを注意深く読み、不必要な損失を避けるために必要な知識と推奨事項をすべて理解してください。

以上がmysqlクエリでロックされたテーブルについて詳しく説明しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。