MySQL數(shù)據(jù)庫監(jiān)控指標(biāo)之執(zhí)行性能總結(jié)
概述
如果你的數(shù)據(jù)庫運(yùn)行緩慢,或者出于某種原因無法響應(yīng)查詢,技術(shù)棧中每個(gè)依賴數(shù)據(jù)庫的組件都會遭受性能問題。為了保證數(shù)據(jù)庫的平穩(wěn)運(yùn)行,你可以主動(dòng)監(jiān)控與性能及資源利用率相關(guān)的指標(biāo)--查詢執(zhí)行性能。
查詢性能
MySQL 用戶監(jiān)控查詢延遲的方式有很多,既可以通過 MySQL 內(nèi)置的指標(biāo),也可以通過查詢性能模式。從 MySQL 5.6.6 版本開始默認(rèn)啟用,MySQL 的 performance_schema 數(shù)據(jù)庫中的表格存儲著服務(wù)器事件與查詢執(zhí)行的低水平統(tǒng)計(jì)數(shù)據(jù)。

1、performance_schema
性能模式的 events_statements_summary_by_digest 表格中保存著許多關(guān)鍵指標(biāo),抓取了與每條標(biāo)準(zhǔn)化語句有關(guān)的延遲、錯(cuò)誤和查詢量信息。
從該表截取的一行樣例顯示,某條語句被執(zhí)行了18次,平均執(zhí)行用時(shí)為 2.5 毫秒(所有計(jì)時(shí)器的測量值都以微微秒為單位)

按按模式計(jì)算以微秒為單位的平均運(yùn)行時(shí)間:
- SELECT schema_name
- , SUM(count_star) count
- , ROUND( (SUM(sum_timer_wait) / SUM(count_star))
- / 1000000) AS avg_microsec FROM performance_schema.events_statements_summary_by_digest
- WHERE schema_name IS NOT NULL
- GROUP BY schema_name;

按模式計(jì)算出現(xiàn)錯(cuò)誤的語句總數(shù):
- SELECT schema_name
- , SUM(sum_errors) err_count
- FROM performance_schema.events_statements_summary_by_digest
- WHERE schema_name IS NOT NULL
- GROUP BY schema_name;

2、sys模式
對于特別查詢或調(diào)查,使用 MySQL 的 sys 模式通常更為簡單。sys 模式以人們更易讀的格式提供了一個(gè)有條理的指標(biāo)集合,使得對應(yīng)的查詢更加簡單。
2.1、查找最慢的語句(運(yùn)行時(shí)間在 95 名開外):
- SELECT * FROM sys.statements_with_runtimes_in_95th_percentile;

2.2、查看哪些標(biāo)準(zhǔn)化語句出現(xiàn)了錯(cuò)誤:
- SELECT * FROM sys.statements_with_errors_or_warnings;

3、慢查詢
除了性能模式與 sys 模式中豐富的性能數(shù)據(jù),MySQL 還提供了一個(gè) Slow_queries 計(jì)數(shù)器,每當(dāng)查詢的執(zhí)行時(shí)間超過 long_query_time 參數(shù)指定的值之后,該計(jì)數(shù)器就會增加。默認(rèn)情況下,該臨界值設(shè)置為 10 秒。
- SHOW VARIABLES LIKE 'long_query_time';

覺得有用的朋友多幫忙轉(zhuǎn)發(fā)哦!后面會分享更多devops和DBA方面的內(nèi)容,感興趣的朋友可以關(guān)注下~