文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


29.4.5 依物件預先篩選

setup_objects 表格控制 Performance Schema 是否監控特定的表格和儲存的程式物件。初始的 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_SCHEMAOBJECT_NAME 欄應包含常值綱要或物件名稱,或 '%' 來比對任何名稱。

ENABLED 欄表示是否監控相符的物件,而 TIMED 表示是否收集計時資訊。如 第 29.4.1 節 「Performance Schema 事件計時」中所述,設定 TIMED 欄會影響 Performance Schema 表格內容。

預設物件配置的效果是檢測除了 mysqlINFORMATION_SCHEMAperformance_schema 資料庫中的所有物件。(無論 setup_objects 的內容為何,INFORMATION_SCHEMA 資料庫中的表格都不會被檢測;information_schema.% 的列只是讓此預設值更加明確。)

當 Performance Schema 檢查 setup_objects 表格中是否有符合的項目時,它會先嘗試尋找更精確的符合項目。對於符合給定 OBJECT_TYPE 的資料列,Performance Schema 會按照以下順序檢查資料列:

  • 具有 OBJECT_SCHEMA='literal'OBJECT_NAME='literal' 的資料列。

  • 具有 OBJECT_SCHEMA='literal'OBJECT_NAME='%' 的資料列。

  • 具有 OBJECT_SCHEMA='%'OBJECT_NAME='%' 的資料列。

例如,對於表格 db1.t1,Performance Schema 會在 TABLE 資料列中尋找與 'db1''t1' 相符的項目,然後尋找與 'db1''%' 相符的項目,最後尋找與 '%''%' 相符的項目。符合的順序很重要,因為不同的符合 setup_objects 資料列可能具有不同的 ENABLEDTIMED 值。

對於與表格相關的事件,Performance Schema 會將 setup_objects 的內容與 setup_instruments 的內容結合,以判斷是否啟用儀器以及是否為已啟用的儀器計時。

  • 對於符合 setup_objects 中資料列的表格,只有在 setup_instrumentssetup_objects 中的 ENABLED 都是 YES 時,表格儀器才會產生事件。

  • 這兩個表格中的 TIMED 值會被結合,因此只有當兩個值都是 YES 時,才會收集計時資訊。

對於儲存的程式物件,Performance Schema 會直接從 setup_objects 資料列取得 ENABLEDTIMED 資料行。不會與 setup_instruments 中的值結合。

假設 setup_objects 包含適用於 db1db2db3 的以下 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 中的物件相關儀器具有 ENABLEDNO,則不會監控該物件的事件。如果 ENABLED 值為 YES,則會根據相關 setup_objects 資料列中的 ENABLED 值進行事件監控。

  • 會監控 db1.t1 事件

  • 不會監控 db1.t2 事件

  • 會監控 db2.t3 事件

  • 不會監控 db3.t4 事件

  • 會監控 db4.t5 事件

結合 setup_instrumentssetup_objects 表格中的 TIMED 資料行,以判斷是否收集事件計時資訊時,會套用類似的邏輯。

如果永久表格和暫時表格具有相同的名稱,則對 setup_objects 資料列的符合方式對於兩者都是相同的。無法為一個表格啟用監控而不為另一個表格啟用監控。但是,每個表格都會單獨進行檢測。