MySQL Performance schema設定的一些建議選項
MySQL 的Performance Schema由來已久,但由於記憶體消耗,效能影響等原因,導致其始終無法進入主流的MySQL預設配置,對MySQL的問題診斷以及處理造成很多不利的影響。
一般而言,Performance Schema會對效能造成影響,比如row mutex的位置。實際上,MySQL經常出現問題的地方,很多時候是在Server層,在這一層,很多Performance Schema的設定並不會導致效能的下降(或者明顯下降)。
下文為總結出來的,推薦開啟的Performance Schema選項,開啟方式為update performance_schema.setup_instruments set enable=’yes’ where name=’xxx’。
推薦開啟
# MDL
MySQL 最著名的Server層鎖之一,MDL鎖管理著表結構變更的臨界點,常常會遇到,alter 表的時候,發現需要等待,但偏偏發現不了是誰持有。
name like ‘%mdl%’
# Variables
MySQL操作set global variable的時候,有時候發現等待時間比較長的時候,會不會心裡發涼?推薦開啟。
name like ‘%variables%’
# Slave
主從結構下,Slave依賴的IO以及SQL,以及Master資訊之間,有一套精密的鎖結構保障安全,如果受到干擾,就會容易出現嚴重的複製故障。
name like ‘%Master_info%’
name like ‘%Relay_log_info%’
## Alter 相關
alter作為低頻但重要操作,沒有保障的執行,是非常危險的一種情況。
name like ‘%alter%’
必要情況下開啟
以下情況,先參考下當前資料的以下變數,之後操作:
些值直接關係到Performacne Schema的記憶體佔用大小。
開啟系列
update performance_schema.setup_instruments set enable=’yes’ where name like ‘xxx%’
## SQL語句系列
以statement/sql以及statement/com代表的系列,如果認為需要開啟,可以全部開啟,會儲存所有執行的SQL語句,上限為前面所定,其中也加入了一部分執行計劃的相關資訊。
## SQL執行系列
以stage/sql/代表的系列,記錄SQL執行的每一個階段,是MySQL僅有的,在SQL執行完成後,一定程度上追查SQL執行計劃的方式,
## 檔案IO系列
wait/io代表的的系列,直接看具體檔案IO的狀況,在高負載資料庫的診斷中,是作用相當大的設定。
總結
Performance Schema作為MySQL推廣已久的效能判斷框架,如果足夠信任的話,放大招 update performance_schema.setup_instruments set enable=’yes’ ,直接開啟所有Performance Schema的可用選項,對效能有較大影響,不推薦全部開啟。
作者:劉偉
文章來自微信公眾號:資料和雲