このページは機械翻訳したものです。
パフォーマンススキーマは、table_handles テーブルを介してテーブルロック情報を公開し、開いているテーブルハンドルごとに現在有効なテーブルロックを表示します。table_handles では、テーブルロックインストゥルメンテーションによって記録される内容がレポートされます。 この情報には、サーバーが開いているテーブルハンドル、ロック方法、およびセッションが表示されます。
table_handles テーブルは読取り専用であり、更新できません。 デフォルトでは自動サイズ設定されています。テーブルサイズを構成するには、サーバーの起動時に performance_schema_max_table_handles システム変数を設定します。
テーブルロックのインストゥルメンテーションでは、デフォルトで有効になっている wait/lock/table/sql/handler インストゥルメントが使用されます。
サーバー起動時のテーブルロックのインストゥルメンテーション状態を制御するには、my.cnf ファイルで次のような行を使用します:
-
有効化:
[mysqld] performance-schema-instrument='wait/lock/table/sql/handler=ON' -
無効化:
[mysqld] performance-schema-instrument='wait/lock/table/sql/handler=OFF'
実行時にテーブルロックのインストゥルメンテーション状態を制御するには、setup_instruments テーブルを更新します:
-
有効化:
UPDATE performance_schema.setup_instruments SET ENABLED = 'YES', TIMED = 'YES' WHERE NAME = 'wait/lock/table/sql/handler'; -
無効化:
UPDATE performance_schema.setup_instruments SET ENABLED = 'NO', TIMED = 'NO' WHERE NAME = 'wait/lock/table/sql/handler';
table_handles テーブルには、次のカラムがあります:
-
OBJECT_TYPEテーブルハンドルによってオープンされたテーブル。
-
OBJECT_SCHEMAオブジェクトを格納するスキーマ。
-
OBJECT_NAMEインストゥルメントされたオブジェクトの名前。
-
OBJECT_INSTANCE_BEGINメモリー内のテーブルハンドルアドレス。
-
OWNER_THREAD_IDテーブルハンドルを所有するスレッド。
-
OWNER_EVENT_IDテーブルハンドルがオープンされる原因となったイベント。
-
INTERNAL_LOCKSQL レベルで使用されるテーブルロック。 値は、
READ,READ WITH SHARED LOCKS,READ HIGH PRIORITY,READ NO INSERT,WRITE ALLOW WRITE,WRITE CONCURRENT INSERT,WRITE LOW PRIORITYまたはWRITEのいずれかです。 これらのロックタイプについては、include/thr_lock.hソースファイルを参照してください。 -
EXTERNAL_LOCKストレージエンジンレベルで使用されるテーブルロック。 値は、
READ EXTERNALまたはWRITE EXTERNALのいずれかです。
table_handles テーブルには次のインデックスがあります:
主キー (
OBJECT_INSTANCE_BEGIN)(
OBJECT_TYPE,OBJECT_SCHEMA,OBJECT_NAME) のインデックス(
OWNER_THREAD_ID、OWNER_EVENT_ID) のインデックス
TRUNCATE TABLE は、table_handles テーブルに対して許可されていません。