MySQL 8.0 リファレンスマニュアル


27.4.5 オブジェクトによる事前フィルタリング

setup_objects テーブルは、パフォーマンススキーマが特定のテーブルおよびストアドプログラムオブジェクトをモニターするかどうかを制御します。 初期 setup_objects の内容は次のように見えます。

mysql> SELECT * FROM performance_schema.setup_objects;
+-------------+--------------------+-------------+---------+-------+
| OBJECT_TYPE | OBJECT_SCHEMA      | OBJECT_NAME | ENABLED | TIMED |
+-------------+--------------------+-------------+---------+-------+
| EVENT       | mysql              | %           | NO      | NO    |
| EVENT       | performance_schema | %           | NO      | NO    |
| EVENT       | information_schema | %           | NO      | NO    |
| EVENT       | %                  | %           | YES     | YES   |
| FUNCTION    | mysql              | %           | NO      | NO    |
| FUNCTION    | performance_schema | %           | NO      | NO    |
| FUNCTION    | information_schema | %           | NO      | NO    |
| FUNCTION    | %                  | %           | YES     | YES   |
| PROCEDURE   | mysql              | %           | NO      | NO    |
| PROCEDURE   | performance_schema | %           | NO      | NO    |
| PROCEDURE   | information_schema | %           | NO      | NO    |
| PROCEDURE   | %                  | %           | YES     | YES   |
| TABLE       | mysql              | %           | NO      | NO    |
| TABLE       | performance_schema | %           | NO      | NO    |
| TABLE       | information_schema | %           | NO      | NO    |
| TABLE       | %                  | %           | YES     | YES   |
| TRIGGER     | mysql              | %           | NO      | NO    |
| TRIGGER     | performance_schema | %           | NO      | NO    |
| TRIGGER     | information_schema | %           | NO      | NO    |
| TRIGGER     | %                  | %           | YES     | YES   |
+-------------+--------------------+-------------+---------+-------+

setup_objects テーブルへの変更はただちにオブジェクトモニタリングに影響します。

OBJECT_TYPE カラムは行が適用されるオブジェクトの種類を示します。 TABLE フィルタリングはテーブル I/O イベント (wait/io/table/sql/handler インストゥルメント) およびテーブルロックイベント (wait/lock/table/sql/handler インストゥルメント) に影響します。

OBJECT_SCHEMA および OBJECT_NAME カラムには、リテラルスキーマまたはオブジェクト名、あるいは任意の名前に一致する'%'が含まれている必要があります。

ENABLED カラムは一致するオブジェクトがモニターされているかどうかを示し、TIMED はタイミング情報を収集するかどうかを示します。 TIMED カラムを設定すると、セクション27.4.1「パフォーマンススキーマイベントタイミング」に説明するように、パフォーマンススキーマテーブルの内容に影響します。

デフォルトのオブジェクト構成の効果は、mysqlINFORMATION_SCHEMA および performance_schema データベースのオブジェクトを除くすべてのオブジェクトをインスツルメント処理することです。 (INFORMATION_SCHEMA データベース内のテーブルは、setup_objects の内容に関係なくインストゥルメントされず、information_schema.% の行は単にこのデフォルトを明示します。)

パフォーマンススキーマは、setup_objects の一致をチェックする場合、まずより詳細な一致を見つけようとします。 特定の OBJECT_TYPE に一致する行の場合、パフォーマンススキーマは次の順序で行をチェックします:

  • OBJECT_SCHEMA='literal'および OBJECT_NAME='literal'を含む行。

  • OBJECT_SCHEMA='literal'および OBJECT_NAME='%'を含む行。

  • OBJECT_SCHEMA='%'および OBJECT_NAME='%'を含む行。

たとえば、テーブル db1.t1 の場合、パフォーマンススキーマは TABLE の行で'db1''t1'の一致を検索し、次に'db1''%'の一致を検索し、次に'%''%'の一致を検索します。 さまざまな一致する setup_objects 行はさまざまな ENABLED 値と TIMED 値を持つ可能性があるため、一致が発生する順序が重要です。

テーブル関連イベントの場合、パフォーマンススキーマは setup_objects の内容と setup_instruments を組み合わせて、インストゥルメントを有効にするかどうか、および有効にされているインストゥルメントの時間を測定するかどうかを判断します。

  • setup_objects 内の行に一致するテーブルでは、テーブルインストゥルメントは、setup_instrumentssetup_objects の両方で、ENABLEDYES である場合にのみイベントを生成します。

  • 両方の値が YES の場合にのみ、タイミング情報が収集されるように、2 つのテーブル内の TIMED 値が組み合わされます。

ストアドプログラムオブジェクトの場合、パフォーマンススキーマは ENABLED および TIMED カラムを setup_objects 行から直接取得します。 setup_instruments との値の組合せはありません。

setup_objects に、db1db2 および db3 に適用される次の TABLE 行が含まれているとします:

+-------------+---------------+-------------+---------+-------+
| OBJECT_TYPE | OBJECT_SCHEMA | OBJECT_NAME | ENABLED | TIMED |
+-------------+---------------+-------------+---------+-------+
| TABLE       | db1           | t1          | YES     | YES   |
| TABLE       | db1           | t2          | NO      | NO    |
| TABLE       | db2           | %           | YES     | YES   |
| TABLE       | db3           | %           | NO      | NO    |
| TABLE       | %             | %           | YES     | YES   |
+-------------+---------------+-------------+---------+-------+

setup_instruments のオブジェクト関連インストゥルメントの ENABLED 値が NO の場合、オブジェクトのイベントは監視されません。 ENABLED 値が YES の場合、イベントモニタリングは、関連 setup_objects 行内の ENABLED 値に従って行われます。

  • db1.t1 イベントはモニターされます

  • db1.t2 イベントはモニターされません

  • db2.t3 イベントはモニターされます

  • db3.t4 イベントはモニターされません

  • db4.t5 イベントはモニターされます

setup_instruments および setup_objects テーブルの TIMED カラムを組み合わせて、イベントタイミング情報を収集するかどうかを判断する場合も同様のロジックが当てはまります。

永続的テーブルと一時テーブルが同じ名前を持つ場合、setup_objects 行に対する照合が両方に対して同様に行われます。 一方のテーブルのモニタリングを有効にして、他方を有効にしないことはできません。 ただし、各テーブルは個別にインストゥルメントされます。


関連キーワード:  テーブル, NO, スキーマ, パフォーマンス, setup, objects, イベント, OBJECT, オブジェクト, schema