目錄
- 29.1 Performance Schema 快速入門
- 29.2 Performance Schema 建置組態
- 29.3 Performance Schema 啟動組態
- 29.4 Performance Schema 執行階段組態
- 29.5 Performance Schema 查詢
- 29.6 Performance Schema 儀器命名慣例
- 29.7 Performance Schema 狀態監控
- 29.8 Performance Schema 原子和分子事件
- 29.9 Performance Schema 目前和歷史事件表格
- 29.10 Performance Schema 陳述式摘要與取樣
- 29.11 Performance Schema 一般表格特性
- 29.12 Performance Schema 表格描述
- 29.12.1 Performance Schema 表格參考
- 29.12.2 Performance Schema 設定表格
- 29.12.3 Performance Schema 實例表格
- 29.12.4 Performance Schema 等待事件表格
- 29.12.5 Performance Schema 階段事件表格
- 29.12.6 Performance Schema 陳述式事件表格
- 29.12.7 Performance Schema 交易表格
- 29.12.8 Performance Schema 連線表格
- 29.12.9 Performance Schema 連線屬性表格
- 29.12.10 Performance Schema 使用者定義變數表格
- 29.12.11 Performance Schema 複製表格
- 29.12.12 Performance Schema NDB Cluster 表格
- 29.12.13 Performance Schema 鎖定表格
- 29.12.14 Performance Schema 系統變數表格
- 29.12.15 Performance Schema 狀態變數表格
- 29.12.16 Performance Schema 執行緒集區表格
- 29.12.17 Performance Schema 防火牆表格
- 29.12.18 Performance Schema 金鑰環表格
- 29.12.19 Performance Schema 克隆表格
- 29.12.20 Performance Schema 摘要表格
- 29.12.21 Performance Schema 遙測表格
- 29.12.22 Performance Schema 雜項表格
- 29.13 Performance Schema 選項和變數參考
- 29.14 Performance Schema 命令選項
- 29.15 Performance Schema 系統變數
- 29.16 Performance Schema 狀態變數
- 29.17 Performance Schema 記憶體配置模型
- 29.18 Performance Schema 與外掛程式
- 29.19 使用 Performance Schema 診斷問題
- 29.20 Performance Schema 的限制
MySQL Performance Schema 是一個用於在低層級監視 MySQL 伺服器執行的功能。Performance Schema 具有以下特性
Performance Schema 提供了一種在執行階段檢查伺服器內部執行情況的方法。它使用
PERFORMANCE_SCHEMA
儲存引擎和performance_schema
資料庫實作。Performance Schema 主要關注效能資料。這與INFORMATION_SCHEMA
不同,後者用於檢查中繼資料。Performance Schema 監視伺服器事件。一個 「事件」是伺服器執行的任何需要時間且已進行儀器化的內容,以便可以收集時間資訊。一般而言,事件可以是函式呼叫、等待作業系統、SQL 陳述式執行階段(例如剖析或排序)或整個陳述式或陳述式群組。事件收集提供了對伺服器和多個儲存引擎的同步呼叫(例如互斥鎖)檔案和表格 I/O、表格鎖定等的資訊存取。
Performance Schema 事件與寫入伺服器二進位日誌(描述資料修改)和事件排程器事件(是一種儲存程式)的事件不同。
Performance Schema 事件特定於 MySQL 伺服器的特定實例。Performance Schema 表格被認為是伺服器的本地表格,對它們的變更不會被複製或寫入二進位日誌。
目前可以取得事件的相關資訊,包括事件的歷史記錄和摘要。這讓您可以判斷已執行的工具化活動次數以及它們所花費的時間。事件資訊可用於顯示特定執行緒的活動,或與特定物件(例如互斥鎖或檔案)相關的活動。
PERFORMANCE_SCHEMA
儲存引擎使用伺服器原始碼中的 「檢測點」來收集事件資料。收集到的事件會儲存在
performance_schema
資料庫中的資料表中。這些資料表可以使用SELECT
陳述式像其他資料表一樣進行查詢。Performance Schema 的組態可以透過 SQL 陳述式更新
performance_schema
資料庫中的資料表來動態修改。組態變更會立即影響資料收集。Performance Schema 中的資料表是記憶體內資料表,不使用持久性的磁碟儲存空間。內容會在伺服器啟動時重新填入,並在伺服器關閉時丟棄。
MySQL 支援的所有平台上都可使用監控功能。
可能會有一些限制:計時器的類型可能因平台而異。適用於儲存引擎的檢測可能無法針對所有儲存引擎實作。每個第三方引擎的檢測由引擎維護者負責。另請參閱 第 29.20 節,「Performance Schema 的限制」。
資料收集是透過修改伺服器原始碼以新增檢測來實作。與其他功能(例如複製或事件排程器)不同,Performance Schema 沒有相關聯的獨立執行緒。
Performance Schema 的目的是在對伺服器效能影響最小的情況下,提供對伺服器執行有用資訊的存取。實作遵循以下設計目標
啟動 Performance Schema 不會導致伺服器行為發生任何變更。例如,它不會導致執行緒排程變更,也不會導致查詢執行計畫(如
EXPLAIN
所示)發生變更。伺服器監控會持續且不顯眼地進行,且開銷非常小。啟動 Performance Schema 不會導致伺服器無法使用。
剖析器不會變更。沒有新的關鍵字或陳述式。
即使 Performance Schema 在內部失敗,伺服器程式碼的執行也會正常進行。
當可以選擇是在初始事件收集期間執行處理,還是在稍後的事件擷取期間執行處理時,優先考慮加快收集速度。這是因為收集正在進行,而擷取是按需進行,而且可能根本不會發生。
大多數 Performance Schema 資料表都有索引,這讓最佳化工具可以存取除了完整資料表掃描之外的執行計畫。如需更多資訊,請參閱 第 10.2.4 節,「最佳化 Performance Schema 查詢」。
新增新的檢測點很容易。
檢測是版本化的。如果檢測實作發生變更,先前檢測的程式碼會繼續運作。這有助於第三方外掛程式開發人員,因為不需要升級每個外掛程式來與最新的 Performance Schema 變更保持同步。
MySQL sys
結構描述是一組物件,可方便存取 Performance Schema 收集的資料。sys
結構描述預設為安裝。如需使用說明,請參閱 第 30 章,MySQL sys 結構描述。