在啟用所有PS效能模式工具的情況下,效能損耗過高,怎麼辦
問題描述
啟用所有效能模式工具後,會觀察到以下一個或多個症狀:
- MySQL的效能比較慢。
- CPU使用率高於正常水平。
- InnoDB訊號量等待的次數高於正常情況,儘管顯示引擎INNODB狀態不一定顯示任何訊號量等待。
問題原因
這是由於啟用了所有效能模式工具和使用者:
SELECT ROUND(( SELECT COUNT(*) FROM performance_schema.setup_instruments WHERE ENABLED = 'YES' )/( SELECT COUNT(*) FROM performance_schema.setup_instruments )*100, 2 ) AS 'InstrumentsEnabledPct', ROUND(( SELECT COUNT(*) FROM performance_schema.setup_instruments WHERE TIMED = 'YES' )/( SELECT COUNT(*) FROM performance_schema.setup_instruments )*100, 2 ) AS 'InstrumentsTimedPct', ROUND(( SELECT COUNT(*) FROM performance_schema.setup_consumers WHERE ENABLED = 'YES' )/( SELECT COUNT(*) FROM performance_schema.setup_consumers )*100, 2) AS 'ConsumersEnabledPct';
特別是啟用互斥等待工具會導致高效能工作負載的效能顯著下降。
附註:對於MySQL 5.6中的一些工作負載,在預設的效能模式設定下也會出現類似的問題。一個症狀是gdb(或類似的)跟蹤顯示許多執行緒的堆疊跟蹤包含:
- #0 in my_timer_cycles () at my_rdtsc.c
- #1 in end_table_io_wait_v1 pfs.cc
這個問題在MySQL 5.7中不太可能出現,在MySQL 5.7中,對於批次I/O操作(例如表或索引掃描的行提取),效能模式現在可以報告N行的單個事件,而不是報告N次單行事件。
解決方案
重置效能模式工具和使用者
CALL sys.ps_setup_reset_to_default(FALSE);
如果您沒有sys模式安裝後,您可以在MySQL 5.6中使用以下查詢來重置效能模式設定:
DELETE FROM performance_schema.setup_actors WHERE NOT (HOST = '%' AND USER = '%' AND ROLE = '%'); INSERT IGNORE INTO performance_schema.setup_actors VALUES ('%', '%', '%'); UPDATE performance_schema.setup_instruments SET ENABLED = 'NO', TIMED = 'NO' WHERE NAME NOT LIKE 'wait/io/file/%' AND NAME NOT LIKE 'wait/io/table/%' AND NAME NOT LIKE 'statement/%' AND NAME NOT IN ('wait/lock/table/sql/handler', 'idle'); UPDATE performance_schema.setup_consumers SET ENABLED = IF(NAME IN ('events_statements_current', 'global_instrumentation', 'thread_instrumentation', 'statements_digest'), 'YES', 'NO'); DELETE FROM performance_schema.setup_objects WHERE NOT (OBJECT_TYPE = 'TABLE' AND OBJECT_NAME = '%' AND (OBJECT_SCHEMA = 'mysql'AND ENABLED = 'NO'AND TIMED = 'NO' ) OR (OBJECT_SCHEMA = 'performance_schema' AND ENABLED = 'NO'AND TIMED = 'NO' ) OR (OBJECT_SCHEMA = 'information_schema' AND ENABLED = 'NO'AND TIMED = 'NO' ) OR (OBJECT_SCHEMA = '%'AND ENABLED = 'YES' AND TIMED = 'YES')); INSERT IGNORE INTO performance_schema.setup_objects VALUES ('TABLE', 'mysql' , '%', 'NO' , 'NO' ), ('TABLE', 'performance_schema', '%', 'NO' , 'NO' ), ('TABLE', 'information_schema', '%', 'NO' , 'NO' ), ('TABLE', '%' , '%', 'YES', 'YES'); UPDATE performance_schema.threads SET INSTRUMENTED = 'YES';
禁用“長曆史”效能模式表
如果不想重置整個效能模式配置,至少要檢查“歷史長”表是否與同步物件(如互斥體和rwlocks)的效能模式工具一起使用。因為在檢測同步物件時,訪問效能模式的“歷史長”表可能會對效能產生非常不利的影響。當例項的效能不好時,透過發出以下查詢來檢查它們是否已啟用:
select * from performance_schema.setup_instruments where name like 'wait/sync%' and (enabled='yes' or timed='yes'); select * from performance_schema.setup_consumers where name like '%_history_long' and enabled='yes';
如果啟用了它們,請嘗試使用以下查詢禁用它們,並監視效能:
update performance_schema.setup_instruments set enabled='no', timed='no where name like 'wait/sync%'; update performance_schema.setup_consumers set enabled='no' where name like '%_history_long';
如果您需要PS工具來進行統計分析,那麼至少要考慮禁用“長曆史”消費者。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31383567/viewspace-2996069/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 什麼情況下進行效能測試
- 香港高防伺服器高防IP在頻寬不夠充足的情況下是怎麼做到良好的防護效能的伺服器
- 通過 Battery Historian 工具分析 Android APP 耗電情況BATAndroidAPP
- win10怎麼開啟卓越效能模式 win10開啟卓越效能模式的方法Win10模式
- win10開啟卓越效能方法 win10怎麼開啟卓越效能模式Win10模式
- win10卓越效能模式怎麼開啟_win10卓越效能模式如何設定Win10模式
- iOS11.4.1耗電快嗎?iOS11.4.1耗電情況怎麼樣?iOS
- win10提示您的主機不滿足在啟用Hyper-V或Device/Credential Guard的情況下執行VMware怎麼辦Win10dev
- 開始使用 Org 模式吧,在沒有 Emacs 的情況下模式Mac
- 如何開啟win10效能模式_win10開啟卓越效能模式的方法Win10模式
- MarshalByRefObject 的效能損失Object
- AMD MPSoC PS PCIe作為EP與Host在異常狀態下的工作情況
- 【VMware vCenter】在不重啟的情況下重置vCenter Server的root密碼。Server密碼
- 怎麼樣把mysqld壓測到崩潰重啟?什麼情況下mysqld崩潰重啟?MySql
- MySQL效能最佳化盲區(高併發情況下,事務內的資料先更新還是先查詢?)MySql
- cdr檔案怎麼用ps開啟 cdr怎麼轉換成ps可編輯
- 3.1.5.3 在不掛載資料庫的情況下啟動例項資料庫
- 在不重啟的情況下為 Vmware Linux 客戶機新增新硬碟Linux硬碟
- win10電源管理只有平衡模式怎麼辦 win10電源找不到高效能模式怎麼開Win10模式
- win10電池損耗怎麼看_如何檢視win10電腦電池損耗Win10
- 筆記本win10系統開啟超級效能模式(卓越效能模式)的方法筆記Win10模式
- 福祿克網線測試RL(回波損耗)不透過有什麼解決辦法
- Go高階特性 12 | 指標詳解:在什麼情況下應該使用指標?Go指標
- 效能分析(2)- 應用程式 CPU 使用率過高案例
- SYSAUX表空間佔用過大情況下的處理(AWR資訊過多)UX
- asm內聯語句在編譯不支援的情況下的解決辦法ASM編譯
- 怎麼通過線上PS修圖 修圖工具有什麼
- 您的主機不滿足在啟用Hyper-V的情況下執行VMware player的最低要求
- 電腦記憶體佔用過高怎麼辦 電腦記憶體佔用過高解決方法記憶體
- 在什麼情況下可採取區塊鏈的流程圖 - TProphet區塊鏈流程圖
- 成都現在的情況
- 企業在什麼情況下引入分散式資料庫?分散式資料庫
- 爬蟲在什麼情況下才需要使用代理IP爬蟲
- Oracle 無備份情況下undo檔案損壞處理Oracle
- 令人頭大: Mac提示應用程式無法開啟,檔案損壞怎麼辦?Mac
- Win10系統cpu效能怎麼調高?win10把cpu效能調到最佳的方法Win10
- ubuntu 下解決埠被佔用的情況Ubuntu
- TextView未繪製情況下獲取其寬高TextView