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「パフォーマンススキーマイベントタイミング」に説明するように、パフォーマンススキーマテーブルの内容に影響します。
デフォルトのオブジェクト構成の効果は、mysql
、INFORMATION_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_instruments
とsetup_objects
の両方で、ENABLED
がYES
である場合にのみイベントを生成します。両方の値が
YES
の場合にのみ、タイミング情報が収集されるように、2 つのテーブル内のTIMED
値が組み合わされます。
ストアドプログラムオブジェクトの場合、パフォーマンススキーマは ENABLED
および TIMED
カラムを setup_objects
行から直接取得します。 setup_instruments
との値の組合せはありません。
setup_objects
に、db1
、db2
および 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
行に対する照合が両方に対して同様に行われます。 一方のテーブルのモニタリングを有効にして、他方を有効にしないことはできません。 ただし、各テーブルは個別にインストゥルメントされます。