[MySQL Reference Manual] 23 Performance Schema結構

来源:http://www.cnblogs.com/Amaranthus/archive/2016/08/04/5735298.html
-Advertisement-
Play Games

23 MySQL Performance Schema 23 MySQL Performance Schema.. 1 23.1 性能框架快速啟動... 3 23.2 性能框架配置... 5 23.2.1 性能框架編譯時配置... 5 23.2.2 性能框架啟動配置... 6 23.2.3 啟動時性 ...


23 MySQL Performance Schema

23 MySQL Performance Schema.. 1

23.1 性能框架快速啟動... 3

23.2 性能框架配置... 5

23.2.1 性能框架編譯時配置... 5

23.2.2 性能框架啟動配置... 6

23.2.3 啟動時性能框架配置... 8

23.2.3.1 性能架構事件定時... 8

23.2.3.2 性能框架事件過濾... 9

23.2.3.3 事件預過濾... 10

23.2.3.4命名記錄點或者消費者的過濾... 12

23.2.3.5 識別哪些已經被記錄... 12

23.3 性能框架查詢... 13

23.4 性能框架記錄點命名約定... 13

23.5 性能框架和狀態監控... 15

23.6 性能框架和分子原子性事件... 17

23.7 性能框架statement digests17

23.8 性能框架常用表特性... 19

23.9 性能框架表描述... 19

23.9.1 性能框架表索引... 19

23.9.2 性能框架setup... 19

23.9.2.1 setup_actors... 19

23.9.2.2 setup_consumers... 20

23.9.2.3 setup_instruments... 20

23.9.2.4 setup_objects... 21

23.9.2.5 setup_timers... 22

23.9.3 性能框架實例表... 22

23.9.3.1 cond_instances... 22

23.9.3.2 file_instances... 22

23.9.3.3 mutex_instances... 22

23.9.3.4 Rwlock_instances... 23

23.9.3.5 socket_instance... 23

23.9.4 性能框架事件等待表... 25

23.9.4.1 events_waits_current... 26

23.9.4.2 Events_waits_history... 28

23.9.4.3 events_waits_history_long ... 28

23.9.5 性能框架Stage事件表... 28

23.9.5.1 events_stages_current... 30

23.9.5.2 events_stage_history... 30

23.9.5.3 events_stage_history_long... 31

23.9.6 性能框架語句事件表... 31

23.9.7 性能框架事務表... 32

23.9.8 性能框架連接表... 35

23.9.9 性能框架連接屬性表... 35

23.9.10 性能框架用戶變數表... 35

23.9.11 性能框架複製表... 36

23.9.11.1 replication_connection_configure... 38

23.9.11.2 replication_connection_status38

23.9.11.3 replication_applier_configure. 39

23.9.11.4 replication_applier_status39

23.9.11.5 replication_applier_status_by_coordinator39

23.9.11.6 replication_applier_statys_by_worker40

23.9.11.7 replication_group_members40

23.9.11.8 replication_group_member_status40

23.9.12 性能框架鎖相關表... 41

23.9.12.1 metadata_locks41

23.9.12.2 table_handles42

23.9.13 性能框架系統變數表... 42

23.9.14 性能框架系統狀態變數表... 43

23.9.15 性能框架統計表... 43

23.9.16 性能框架其他表... 44

23.10 性能框架選項和變數... 45

23.11 性能框架命令選項... 45

23.12 性能框架系統變數... 45

23.13 性能框架狀態變數... 45

23.14 性能框架記憶體分配模型... 45

23.15 性能框架和... 46

23.16 使用性能框架診斷... 47

23.17 遷移到性能框架系統和狀態變數表... 47

 

MySQL Performance Schema用來監控MySQL Server的運行運行在底層。性能框架有這些特性:

·         性能框架提供了一種方法檢查內部的服務運行。通過PERFORMANCE_SCHEMA存儲引擎和performance_schema實現。性能框架主要關註於數據性能。和INFORMANCE_SCHEMA不同,INFORMACE_SCHEMA主要檢查元數據。

·         性能框架監控服務事件,事件是服務需要花時間的任何東西,並且已經被記錄這樣時間信息可以被收集。通常一個事件可以是一個函數調用,一個操作系統等待,SQL語句執行的階段比如解析或者排序,或者整個語句或者一組語句。時間收集提供。時間收集提供了同步調用文件和表IO,表鎖等信息。

·         性能框架事件的事件和binlog的事件,事件調度的事件不同。

·         性能框架事件被指定到某個MySQL服務。性能框架表別人我是本地服務,他們的修改不會被寫入到binary log,也不會被覆制。

·         當前事件,歷史事件和事件總結是可用的,那麼就可以確定記錄被啟動了多少次,用了多少時間。事件信息可以查看指定線程的活動或者指定對象的活動,比如文件和信號量。

·         PERFORMANCE_SCHEMA存儲引擎使用代碼中的記錄點來收集信息。

·         收集的信息被保存在performance_schema資料庫中。可以用select查詢。

·         性能框架配置可以動態的被修改,通過修改performance_schema資料庫配置數據收集。

·         Performance_schema上的表是視圖或者臨時表,不會保存到磁碟中。

·         MySQL支持所有平臺的監控。

·         通過在源代碼中加入記錄點實現數據收集。沒有特定線程使用相關的性能框架。

23.1 性能框架快速啟動

對於性能框架要啟用,必須要在MySQL編譯的時候配置好。可以通過mysqld的幫助驗證。如果性能框架可用輸出就會帶—performance_schema參數。

如果這些參數沒有出現,那麼代碼在編譯時就不支持性能框架。

假設性能框架可用,預設是可用的。可以通過配置文件配置:

[mysqld]
performance_schema=ON

當服務啟動,發現performance_schema就會試圖初始化性能框架,可以查看performance_schema變數檢查初始化是否成功。

mysql> SHOW VARIABLES LIKE 'performance_schema';

+--------------------+-------+

| Variable_name      | Value |

+--------------------+-------+

| performance_schema | ON    |

+--------------------+-------+

這個值表示,性能框架已經可用,如果為off表示發生錯誤,檢查錯誤日誌。

性能框架實現和存儲引擎類似。如果引擎可用可以在show engine查看是否支持PERFORMANCE_SCHEMA存儲引擎。

Performance_schema中的資料庫可以被劃分為幾塊,當前時間,歷史事件,總結,對象實例和安裝信息。

原本,其實並不是所有的記錄點和收集器都是可用。所以性能框架不會收集所有的數據。可以通過以下語句打開所有的積累點和收集器:

mysql> UPDATE setup_instruments SET ENABLED = 'YES', TIMED = 'YES';

Query OK, 560 rows affected (0.04 sec)

mysql> UPDATE setup_consumers SET ENABLED = 'YES';

Query OK, 10 rows affected (0.00 sec)

當前事件表,可以通過events_waits_current查看當前服務在做什麼。每個線程都有一行。

歷史表,表結構和當前事件一樣,event_waits_historyevent_waits_history_long表包含了每個線程最近10event和每個線程最近10000events

一個新的事件被加入,老的事件就會刪除。

總結表提供了所有事件的聚合的信息。這個表通過分組一不同方式計算事件數據。為了查看那個記錄點唄執行的次數最多或者等待事件最長,通過對錶上的count_star或者sum_timer_wait列進行排序:

mysql> SELECT EVENT_NAME, COUNT_STAR
    -> FROM events_waits_summary_global_by_event_name
    -> ORDER BY COUNT_STAR DESC LIMIT 10;
+---------------------------------------------------+------------+
| EVENT_NAME                                        | COUNT_STAR |
+---------------------------------------------------+------------+
| wait/synch/mutex/mysys/THR_LOCK_malloc            |       6419 |
| wait/io/file/sql/FRM                              |        452 |
| wait/synch/mutex/sql/LOCK_plugin                  |        337 |
| wait/synch/mutex/mysys/THR_LOCK_open              |        187 |
| wait/synch/mutex/mysys/LOCK_alarm                 |        147 |
| wait/synch/mutex/sql/THD::LOCK_thd_data           |        115 |
| wait/io/file/myisam/kfile                         |        102 |
| wait/synch/mutex/sql/LOCK_global_system_variables |         89 |
| wait/synch/mutex/mysys/THR_LOCK::mutex            |         89 |
| wait/synch/mutex/sql/LOCK_open                    |         88 |
+---------------------------------------------------+------------+
 
mysql> SELECT EVENT_NAME, SUM_TIMER_WAIT
    -> FROM events_waits_summary_global_by_event_name
    -> ORDER BY SUM_TIMER_WAIT DESC LIMIT 10;
+----------------------------------------+----------------+
| EVENT_NAME                             | SUM_TIMER_WAIT |
+----------------------------------------+----------------+
| wait/io/file/sql/MYSQL_LOG             |     1599816582 |
| wait/synch/mutex/mysys/THR_LOCK_malloc |     1530083250 |
| wait/io/file/sql/binlog_index          |     1385291934 |
| wait/io/file/sql/FRM                   |     1292823243 |
| wait/io/file/myisam/kfile              |      411193611 |
| wait/io/file/myisam/dfile              |      322401645 |
| wait/synch/mutex/mysys/LOCK_alarm      |      145126935 |
| wait/io/file/sql/casetest              |      104324715 |
| wait/synch/mutex/sql/LOCK_plugin       |       86027823 |
| wait/io/file/sql/pid                   |       72591750 |
+----------------------------------------+----------------+

如,上面結果THR_LOCK信號量是熱點,2個語句分別表示執行的熱度和等待事件長度。

實例表,記錄了對象類型被記錄了。當服務使用了一個記錄對象,那麼會產生一個事件。這些表提供了事件名,解釋性的註釋或者狀態。比如file_instances表,記錄了文件io操作和他們對應的文件。

mysql> SELECT * FROM file_instances\G
*************************** 1. row ***************************
 FILE_NAME: /opt/mysql-log/60500/binlog.000007
EVENT_NAME: wait/io/file/sql/binlog
OPEN_COUNT: 0
*************************** 2. row ***************************
 FILE_NAME: /opt/mysql/60500/data/mysql/tables_priv.MYI
EVENT_NAME: wait/io/file/myisam/kfile
OPEN_COUNT: 1
*************************** 3. row ***************************
 FILE_NAME: /opt/mysql/60500/data/mysql/columns_priv.MYI
EVENT_NAME: wait/io/file/myisam/kfile
OPEN_COUNT: 1
...

Setup用來配置和監控特點的,比如setup_timers表:

mysql> SELECT * FROM setup_timers;
+-------------+-------------+
| NAME        | TIMER_NAME  |
+-------------+-------------+
| idle        | MICROSECOND |
| wait        | CYCLE       |
| stage       | NANOSECOND  |
| statement   | NANOSECOND  |
| transaction | NANOSECOND  |
+-------------+-------------+

Setup_instruments列了哪些可以被記錄的事件。然後通過修改這個表開控制是否啟動這個記錄。

mysql> UPDATE setup_instruments SET ENABLED = 'NO'
    -> WHERE NAME = 'wait/synch/mutex/sql/LOCK_mysql_create_db';

性能框架使用,收集來的事件來更新到performance_schema資料庫,資料庫作為事件信息的消費者。Setup_consumers表列出了可用的消費者。

控制是否性能框架維護一個消費者作為事件信息的目標。可以設置為enabled值。

23.2 性能框架配置

23.2.1 性能框架編譯時配置

為了讓性能框架啟用必須在編譯時被配置,由官方提供的MySQL是支持性能框架的,如果是其他發佈方發佈的,那麼要先檢查是否支持。

如果是從源代碼發佈的,那麼在發佈的時候要先設置:

shell> cmake . -DWITH_PERFSCHEMA_STORAGE_ENGINE=1

MySQL 5.7.3之後,也可以支持啟動性能框架,但是不包含所有的記錄點,比如:

shell> cmake . -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \

        -DDISABLE_PSI_STAGE=1 \

        -DDISABLE_PSI_STATEMENT=1

如果你安裝MySQL到一個老的安裝上,並且沒有配置過性能框架,當確保performance_schema資料庫包含了所有的當前表後,可以使用mysql_upgrade啟動服務。然後重啟,有個跡象要特別留意:

[ERROR] Native table 'performance_schema'.'events_waits_history' has the wrong structure
[ERROR] Native table 'performance_schema'.'events_waits_history_long'has the wrong structure
...

通過以下查看mysql是否支持性能框架:

shell> mysqld --verbose --help

...

  --performance_schema

                      Enable the performance schema.

  --performance_schema_events_waits_history_long_size=#

                      Number of rows in events_waits_history_long.

...

也可以通過連接到服務之後使用show engine查看是否存在PERFORMANCE_SCHEMA存儲引擎。如果在build的時候沒有被配置那麼show engines不會顯示PERFORMANCE_SCHEMA存儲引擎。

23.2.2 性能框架啟動配置

假設性能框架是可用的,那麼預設是啟動的也可以在

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 當你第一眼看到explain和hint的時候,第一個反應就是mysql中所謂的這兩個關鍵詞,確實可以看出,這個就是在mysql中借鑒過來的,既然是借鑒 過來的,我想大家都知道這兩個關鍵字的用處,話不多說,速速觀看~~~ 一:explain演示 1. 構建數據 為了方便演示,我需要create ten ...
  • db.getCollection('WorkflowInstance').find({'CurrentApproverList':{$ne:null}}) ...
  • 原因:由於clob類型欄位不能使用group by函數,而union中需要使用group by過濾掉重覆紀錄; 解決方法:union可以改為union all。 ...
  • 無法解決 equal to 操作中 "SQL_Latin1_General_CP1_CI_AS" 和 "Chinese_PRC_CI_AS" 之間 2011-03-11 15:26:57 分類: 資料庫開發技術 2011年03月10日 CCE3.03的伺服器採用英文的2003R2 資料庫排序規則為拉... ...
  • 一.數據控制語句 (DML) 部分 1.INSERT (往數據表裡插入記錄的語句) INSERT INTO 表名(欄位名1, 欄位名2, ……) VALUES ( 值1, 值2, ……); INSERT INTO 表名(欄位名1, 欄位名2, ……) SELECT (欄位名1, 欄位名2, ……) ...
  • 簡介: Percona Server 由領先的 MySQL 咨詢公司 Percona 發佈。Percona Server 是一款獨立的資料庫產品,其完全與 MySQL 相容,可以在不更改代碼的情況下將存儲引擎更換為 XtraDB 。 Percona 資料庫中使用的存儲引擎為 XtraDB,它是 My ...
  • pt-query-digest查找不太適合的sql語句,判斷是否是最有的索引策略 ...
  • var filterBuilder = Builders<WorkflowInstance>.Filter; var filter = filterBuilder.Eq("WorkflowCode", workflowCode) & filterBuilder.Eq("InstanceStatus" ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...