天天看點

mysql 事件_mysql事件統計之PERFORMANCE_SCHEMA基礎詳解概述1、performance_schema特點2、performance_schema實作機制3、基本概念4、performance_schema表的分類5、performance_schema管理

概述

MySQL 5.5開始新增一個資料庫:PERFORMANCE_SCHEMA,主要用于收集資料庫伺服器性能參數。并且庫裡表的存儲引擎均為PERFORMANCE_SCHEMA,而使用者是不能建立存儲引擎為PERFORMANCE_SCHEMA的表。performance_schema中事件統計表。統計事件表分為5個類别,分别為等待事件、階段事件、語句事件、事務事件、記憶體事件。

1、performance_schema特點

它具有以下特點:

1)提供了一種在資料庫運作時實時檢查server的内部執行情況的方法。performance_schema 資料庫中的表使用performance_schema存儲引擎。該資料庫主要關注資料庫運作過程中的性能相關的資料,與information_schema不同,information_schema主要關注server運作過程中的中繼資料資訊

2)performance_schema通過監視server的事件來實作監視server内部運作情況, “事件”就是server内部活動中所做的任何事情以及對應的時間消耗,利用這些資訊來判斷server中的相關資源消耗在了哪裡?一般來說,事件可以是函數調用、作業系統的等待、SQL語句執行的階段(如sql語句執行過程中的parsing 或 sorting階段)或者整個SQL語句與SQL語句集合。事件的采集可以友善的提供server中的相關存儲引擎對磁盤檔案、表I/O、表鎖等資源的同步調用資訊。

3)performance_schema中的事件與寫入二進制日志中的事件(描述資料修改的events)、事件計劃排程程式(這是一種存儲程式)的事件不同。performance_schema中的事件記錄的是server執行某些活動對某些資源的消耗、耗時、這些活動執行的次數等情況。

4)performance_schema中的事件隻記錄在本地server的performance_schema中,其下的這些表中資料發生變化時不會被寫入binlog中,也不會通過複制機制被複制到其他server中。

5)目前活躍事件、曆史事件和事件摘要相關的表中記錄的資訊。能提供某個事件的執行次數、使用時長。進而可用于分析某個特定線程、特定對象(如mutex或file)相關聯的活動。

6)PERFORMANCE_SCHEMA存儲引擎使用server源代碼中的“檢測點”來實作事件資料的收集。對于performance_schema實作機制本身的代碼沒有相關的單獨線程來檢測,這與其他功能(如複制或事件計劃程式)不同

7)收集的事件資料存儲在performance_schema資料庫的表中。這些表可以使用SELECT語句查詢,也可以使用SQL語句更新performance_schema資料庫中的表記錄(如動态修改performance_schema的setup_*開頭的幾個配置表,但要注意:配置表的更改會立即生效,這會影響資料收集)

8)performance_schema的表中的資料不會持久化存儲在磁盤中,而是儲存在記憶體中,一旦伺服器重新開機,這些資料會丢失(包括配置表在内的整個performance_schema下的所有資料)

9)MySQL支援的所有平台中事件監控功能都可用,但不同平台中用于統計事件時間開銷的計時器類型可能會有所差異。

2、performance_schema實作機制

performance_schema遵循以下設計目标:

1)啟用performance_schema不會導緻server的行為發生變化。例如,它不會改變線程排程機制,不會導緻查詢執行計劃(如EXPLAIN)發生變化

2)啟用performance_schema之後,server會持續不間斷地監測,開銷很小。不會導緻server不可用

3)在該實作機制中沒有增加新的關鍵字或語句,解析器不會變化

4)即使performance_schema的監測機制在内部對某事件執行監測失敗,也不會影響server正常運作

5)如果在開始收集事件資料時碰到有其他線程正在針對這些事件資訊進行查詢,那麼查詢會優先執行事件資料的收集,因為事件資料的收集是一個持續不斷的過程,而檢索(查詢)這些事件資料僅僅隻是在需要檢視的時候才進行檢索。也可能某些事件資料永遠都不會去檢索

6)需要很容易地添加新的instruments監測點

7)instruments(事件采集項)代碼版本化:如果instruments的代碼發生了變更,舊的instruments代碼還可以繼續工作。

注意:MySQL sys schema是一組對象(包括相關的視圖、存儲過程和函數),可以友善地通路performance_schema收集的資料。同時檢索的資料可讀性也更高(例如:performance_schema中的時間機關是皮秒,經過sys schema查詢時會轉換為可讀的us,ms,s,min,hour,day等機關),sys schem在5.7.x版本預設安裝

3、基本概念

instruments:生産者,用于采集MySQL 中各種各樣的操作産生的事件資訊,對應配置表中的配置項我們可以稱為監控采集配置項,以下提及生産者均統稱為instruments

consumers:消費者,對應的消費者表用于存儲來自instruments采集的資料,對應配置表中的配置項我們可以稱為消費存儲配置項,以下提及消費者均統稱為consumers

4、performance_schema表的分類

performance_schema庫下的表可以按照監視不同的緯度進行分組,例如:或按照不同資料庫對象進行分組,或按照不同的事件類型進行分組,或在按照事件類型分組之後,再進一步按照帳号、主機、程式、線程、使用者等

mysql 事件_mysql事件統計之PERFORMANCE_SCHEMA基礎詳解概述1、performance_schema特點2、performance_schema實作機制3、基本概念4、performance_schema表的分類5、performance_schema管理
mysql 事件_mysql事件統計之PERFORMANCE_SCHEMA基礎詳解概述1、performance_schema特點2、performance_schema實作機制3、基本概念4、performance_schema表的分類5、performance_schema管理
mysql 事件_mysql事件統計之PERFORMANCE_SCHEMA基礎詳解概述1、performance_schema特點2、performance_schema實作機制3、基本概念4、performance_schema表的分類5、performance_schema管理
mysql 事件_mysql事件統計之PERFORMANCE_SCHEMA基礎詳解概述1、performance_schema特點2、performance_schema實作機制3、基本概念4、performance_schema表的分類5、performance_schema管理

5、performance_schema管理

5.1、打開performance_schema

performance_schema在5.7.x及其以上版本中預設啟用(5.6.x及其以下版本預設關閉),如果要顯式啟用或關閉時,我們需要使用參數performance_schema=ON|OFF設定,并在my.cnf中進行配置:

 [mysqld]performance_schema = ON  # 注意:該參數為隻讀參數,需要在執行個體啟動之前設定才生效
           

5.2、performance_schema配置instruments

資料庫剛剛初始化并啟動時,并非所有instruments(事件采集項,在采集項的配置表中每一項都有一個開關字段,或為YES,或為NO)和consumers(與采集項類似,也有一個對應的事件類型儲存表配置項,為YES就表示對應的表儲存性能資料。

5.2.1、setup_instruments表中頂級instruments 元件分類如下:

1)Idle 元件(1個)

2)transaction 元件(1個)

3)Memory 元件(377個),預設情況下禁用了大多數memory instruments

4)Stage Instrument 元件(129個)

5)Statement Instrument 元件(193個)

6)Wait Instrument 元件(319個),包含如下幾個子類

wait/io:用于檢測I/O操作的instrumentswait/io/table/sql/handler:與表I/O操作相關的instrumentswait/lock:鎖操作相關的instruments wait/synch:磁盤同步對象相關的instruments
           

5.2.2、推薦配置

my.cnf參考如下配置:

#監控performance_schema=onperformance-schema-instrument='wait/io/file/%=on'performance-schema-instrument='wait/io/table/%=on'performance-schema-instrument='statement/com/%=on'performance-schema-instrument='statement/sql/%=on'performance-schema-instrument='stage/sql/%=on'performance-schema-instrument='memory/%=on'# 注:隻有current=on,performance_schema才會檢查是否需要填充到history和long history中,後兩者沒有關系,均依賴于current,是以current必須無條件啟用performance-schema-consumer-events_stages_current=on# performance-schema-consumer-events_stages_history=on# performance_schema_events_stages_history_size=30performance-schema-consumer-events_stages_history_long=onperformance_schema_events_statements_history_long_size=10000performance-schema-consumer-events_statements_current=on# performance-schema-consumer-events_statements_history=on# performance_schema_events_statements_history_size=30performance-schema-consumer-events_statements_history_long=onperformance_schema_events_statements_history_long_size=10000performance-schema-consumer-events_waits_current=on# performance-schema-consumer-events_waits_history=on# performance_schema_events_statements_history_size=30performance-schema-consumer-events_waits_history_long=onperformance_schema_events_waits_history_long_size=10000performance-schema-consumer-statements_digest=on
           

後面會分享更多devops和DBA方面内容,感興趣的朋友可以關注下~

mysql 事件_mysql事件統計之PERFORMANCE_SCHEMA基礎詳解概述1、performance_schema特點2、performance_schema實作機制3、基本概念4、performance_schema表的分類5、performance_schema管理

繼續閱讀