mysql 數(shù)據(jù)查詢慢,詳解mysql獲取某個(gè)時(shí)間段每一天每一個(gè)小時(shí)的統(tǒng)計(jì)數(shù)據(jù)?
問題:
僅用慢日志文件,如何快速獲取分時(shí)報(bào)告?
如果有監(jiān)控系統(tǒng),獲取分時(shí)報(bào)告(每小時(shí)慢查詢的條數(shù)報(bào)告)不難,如果只有慢日志文件,就會(huì)有點(diǎn)費(fèi)勁。
實(shí)驗(yàn):
通過 pt-query-digest --timeline 功能,可以輸出帶時(shí)間戳的慢查詢條目
用 sed 將 timeline 報(bào)告濾出
安裝 termsql
使用 termsql,將報(bào)告導(dǎo)入,并使用 SQL 查詢一條記錄,以展示 termsql 的效果
可以看到 termsql 將 timeline 報(bào)告的每一行,整理成了一條數(shù)據(jù),放在 SQLite 中。
下面就可以盡情使用 SQL 獲取分時(shí)報(bào)告:
用一個(gè)復(fù)雜一點(diǎn)慢日志,獲得如下結(jié)果:
可以輕松定位到慢查詢的熱點(diǎn)時(shí)段,也便于發(fā)現(xiàn)業(yè)務(wù)的周期性規(guī)律。
termsql 是一個(gè)很方便的小工具:
1. 可以用于將文本導(dǎo)出到 SQLite 中,方便 SQL 查詢。
2. 它與 ps 或者 top 合用也有驚喜,比如找出 CPU 占用率高于 25% 的進(jìn)程: