對於一般 X Plugin 監控,請使用它公開的狀態變數。請參閱第 22.5.6.3 節「X Plugin 狀態變數」。如需有關監控訊息壓縮效果的具體資訊,請參閱監控 X Plugin 的連線壓縮。
本節說明如何監控您執行 X DevAPI 操作時,X Plugin 產生的 SQL 陳述式。當您執行 CRUD 陳述式時,它會被翻譯成 SQL 並針對伺服器執行。為了能夠監控產生的 SQL,必須啟用效能架構表格。SQL 會在performance_schema.events_statements_current
、performance_schema.events_statements_history
,以及performance_schema.events_statements_history_long
表格下註冊。下列範例使用world_x
結構描述,它是本節快速入門教學的一部分匯入。我們在 Python 模式中使用 MySQL Shell,以及\sql
指令,可讓您在不變更為 SQL 模式的情況下發出 SQL 陳述式。這很重要,因為如果您嘗試切換到 SQL 模式,此程序會顯示此操作的結果,而不是 X DevAPI 操作。\sql
指令的使用方式與您在 JavaScript 模式中使用 MySQL Shell 時相同。
檢查是否已啟用
events_statements_history
取用者。發出mysql-py> \sql SELECT enabled FROM performance_schema.setup_consumers WHERE NAME = 'events_statements_history' +---------+ | enabled | +---------+ | YES | +---------+
檢查是否所有儀器都將資料報告給取用者。發出
mysql-py> \sql SELECT NAME, ENABLED, TIMED FROM performance_schema.setup_instruments WHERE NAME LIKE 'statement/%' AND NOT (ENABLED and TIMED)
如果此陳述式報告至少一個資料列,您需要啟用儀器。請參閱第 29.4 節「效能架構執行時間組態」。
取得目前連線的執行緒 ID。發出
mysql-py> \sql SELECT thread_id INTO @id FROM performance_schema.threads WHERE processlist_id=connection_id()
執行您想要查看所產生 SQL 的 X DevAPI CRUD 操作。例如,發出
mysql-py> db.CountryInfo.find("Name = :country").bind("country", "Italy")
您不得執行任何其他操作,下一個步驟才能顯示正確的結果。
顯示此執行緒 ID 所做的最後一個 SQL 查詢。發出
mysql-py> \sql SELECT THREAD_ID, MYSQL_ERRNO,SQL_TEXT FROM performance_schema.events_statements_history WHERE THREAD_ID=@id ORDER BY TIMER_START DESC LIMIT 1; +-----------+-------------+--------------------------------------------------------------------------------------+ | THREAD_ID | MYSQL_ERRNO | SQL_TEXT | +-----------+-------------+--------------------------------------------------------------------------------------+ | 29 | 0 | SELECT doc FROM `world_x`.`CountryInfo` WHERE (JSON_EXTRACT(doc,'$.Name') = 'Italy') | +-----------+-------------+--------------------------------------------------------------------------------------+
結果會根據最新的陳述式顯示 X Plugin 產生的 SQL,在本例中是上一個步驟中的 X DevAPI CRUD 操作。