文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
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 則指出是否要收集計時資訊。設定 TIMED 資料行會影響 Performance Schema 資料表內容,如第 29.4.1 節「Performance Schema 事件計時」所述。

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

當 Performance Schema 檢查 setup_objects 中的相符項目時,它會先嘗試尋找更具體的相符項目。對於符合給定 OBJECT_TYPE 的資料列,Performance Schema 會依此順序檢查資料列

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

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

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

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

對於與資料表相關的事件,Performance Schema 會結合 setup_objectssetup_instruments 的內容,以判斷是否啟用工具,以及是否為已啟用的工具計時

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

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

對於儲存的程式物件,效能結構描述會直接從 setup_objects 列取得 ENABLEDTIMED 欄的值。不會與 setup_instruments 的值合併。

假設 setup_objects 包含以下適用於 db1db2db3TABLE

+-------------+---------------+-------------+---------+-------+
| 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_instrumentssetup_objects 表格的 TIMED 欄,以判斷是否收集事件計時資訊。

如果一個永久表格和一個暫時表格具有相同的名稱,則針對 setup_objects 列進行比對的方式對於兩者皆相同。無法僅啟用一個表格的監控,而不啟用另一個表格的監控。但是,每個表格都是分別進行檢測的。