percona QAN 介紹

愛可生研發工程師,負責高可用組件相關開發。


一、背景

QAN(Query Analytics)慢查詢日誌分析工具是 PMM 的一部分,PMM 是 percona 公司提供的一個對於 MySQL 和 MongoDB 的監控和管理平臺。官方給出的描述是:The QAN is a special dashboard which enables database administrators and application developers to analyze database queries over periods of time and find performance problems. QAN helps you optimize database performance by making sure that queries are executed as expected and within the shortest time possible. In case of problems, you can see which queries may be the cause and get detailed metrics for them。這是一個慢查詢日誌的展示工具,能夠幫助 DBA 或者開發人員分析數據庫的性能問題,給出全面的數據擺脫直接查看 slow-log。那麼接下來,給大家介紹下 QAN 和其頁面的指標吧。


二、QAN(Query Analytics)

PMM 目前有 2 個版本,但是對於 QAN 來說其大致由三部分組成:

  • QAN-Agent(client):負責採集 slow-log 的數據並上報到服務端
  • QAN-API(server):負責存儲採集的數據,並對外提供查詢接口
  • QAN-APP:專門用來展示慢查詢數據的 grafana 第三方插件

1. 數據流轉

slow-log --> QAN-Agent --> QAN-API QAN-APP(grafana)

2. pmm1 架構圖


技術分享 | percona QAN 介紹


3. pmm2 架構圖


技術分享 | percona QAN 介紹


三、slow-log

MySQL 的慢查詢日誌是 MySQL 提供的一種日誌記錄,它用來記錄在 MySQL 中響應時間超過閥值的語句,具體指運行時間超過 long_query_time(默認 10 秒)的 SQL,則會被記錄到慢查詢日誌中,慢查詢日誌文件格式如下:

<code>...# Time: 2020-04-25T05:29:35.954373Z# User@Host: root[root] @ localhost []  Id:     9# Query_time: 5.000901  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0SET timestamp=1587792575;select sleep(5);# Time: 2020-04-25T05:43:07.595615Z# User@Host: root[root] @ localhost []  Id:     9# Query_time: 5.000904  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0SET timestamp=1587793387;select sleep(5);.../<code>
  • Query_time:語句執行時間,以秒為單位
  • Lock_time:獲取鎖的時間,以秒為單位
  • Rows_sent:發送給客戶端的行數
  • Rows_examined:檢查的行數(不計算存儲引擎內部的處理)
  • SET timestamp:寫入慢查詢日誌文件的每個語句之前都有一個 SET 語句,該 SET 語句包括一個時間戳,指示時間戳何時記錄慢語句(在該語句完成執行之後發生)


四、頁面

1. Query Analysis

默認展示 top 10 的慢 SQL,表格包含三列指標信息 Load、Count、Latency。


技術分享 | percona QAN 介紹


下圖是測試一條慢 SQL select sleep(5) 生成的數據,選定 2 分鐘的頁面:


技術分享 | percona QAN 介紹


1.1 Load


技術分享 | percona QAN 介紹


代表選定時間段內,數據庫服務器該 query 查詢時間 的時間佔比,通過公式計算:query_time/(end_time - start_time):20/120 ~= 0.17。

1.2 Count


技術分享 | percona QAN 介紹


代表選定時間段內,該 query 的請求總數。

1.3 Latency


技術分享 | percona QAN 介紹


代表選定時間段內,展示該 query 的執行平均時間、最大時間、最小時間、時間 95%(拋棄前 5% 的數據在求平均,目的是為了去除尖峰);

2. Metrics

選中 Query Analysis 中的一列 query 後,即可展示該 query 的詳細信息,包括Query_time、Lock_time、Rows_sent、Rows_examined,對應的是 slow-log 的內容 。


技術分享 | percona QAN 介紹


3. 額外信息

選中 Query Analysis 中的一列 query 後,也會額外提供 query 涉及的一些信息,包括:EXPLAIN,SHOW CREATE TABLE,SHOW INDEX 來幫助數據庫運維人員快速定位問題。


總結

percona QAN 作為一款非常實用的免費開源方案,如此優秀的產品目前也是愛可生數據庫管理平臺問題診斷全家桶的一部分。

參考鏈接

https://www.percona.com/blog/2018/06/08/understanding-pmm-qan-graphs-metrics/

https://www.percona.com/doc/percona-monitoring-and-management/2.x/qan-top-ten.html


分享到:


相關文章: