日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 平均响应时间_Percona-Server/MySQL响应时间统计

發布時間:2025/3/21 数据库 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 平均响应时间_Percona-Server/MySQL响应时间统计 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在Percona的5.1.53和5.5.8版本,開始將RT的統計內置到MySQL Server端。Thanks, Percona.

Percona在提供了tcprstat工具統計RT時間之后,很快就在Percona Server中集成了響應時間統計的功能。這里介紹一下該功能,各位看官如果在猶豫選擇Percona Server還是MySQL Community Server,這里給Percona Server加一個籌碼。

"響應時間"(Response time,后面簡稱RT)在數據庫應用中,特別是OLTP的場景,可以說非常重要,不過,MySQL官方版本中一直沒有加上這個統計功能。最早,社區開始嘗試tcmdump+perl腳本的方式查看RT,后來告警一點用tcpdump+mk-query-digest,再后來Ignacio Nin和Baron Schwartz完成了tcprstat。

在Percona的5.1.53和5.5.8版本,開始將RT的統計內置到MySQL Server端。

1. 配置該功能

這個是功能默認是關閉的,可以通過設置參數query_response_time_stats=1打開這個功能,這是一個動態參數,所以在服務器上可以很方便的打開或者關閉這個功能。可以通過命令SHOW QUERY_RESPONSE_TIME查看響應時間統計。

默認關閉狀態:

SHOW QUERY_RESPONSE_TIME;

+----------------+---+----------------+

| | | |

+----------------+---+----------------+

| 0.000001 | 0 | 0.000000 |

| 0.000010 | 0 | 0.000000 |

| 0.000100 | 0 | 0.000000 |

| 0.001000 | 0 | 0.000000 |

......

| 1000000.00000 | 0 | 0.000000 |

| TOO LONG | 0 | TOO LONG |

+----------------+---+----------------+

打開參數后:

set global query_response_time_stats=1;

Query OK, 0 rows affected (0.00 sec)

08:23:13>SHOW QUERY_RESPONSE_TIME;

+----------------+-------+----------------+

| | | |

+----------------+-------+----------------+

| 0.000001 | 7982 | 0.000000 |

| 0.000010 | 13927 | 0.014511 |

| 0.000100 | 43811 | 1.553811 |

| 0.001000 | 29 | 0.007936 |

| 0.010000 | 1 | 0.001711 |

| 0.100000 | 0 | 0.000000 |

這里可以看到,響應時間小于0.000001秒的SQL有7982個,0.000001 < RT < 0.000010有13927個, 0.000010 < RT < 0.000100有43811 ...... 。這樣整個系統的響應時間就清晰了。

2. INFORMATION_SCHEMA.QUERY_RESPONSE_TIME

除了用命令SHOW QUERY_RESPONSE_TIME,還可以通過INFORMATION_SCHEMA里面的表QUERY_RESPONSE_TIME來查看MySQL的響應時間。

08:25:16>SELECT * from INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;

+----------------+--------+----------------+

| time | count | total |

+----------------+--------+----------------+

| 0.000001 | 33824 | 0.000000 |

| 0.000010 | 59222 | 0.060457 |

| 0.000100 | 186003 | 6.659908 |

| 0.001000 | 117 | 0.025163 |

| 0.010000 | 8 | 0.014534 |

使用INFORMATION_SCHEMA.QUERY_RESPONSE_TIME,就可以稍微定制一下輸出結果了:

SELECT time, CONCAT(ROUND(100*count/query_count,2),"%") as percent,count

FROM(

SELECT

c.count,

c.time,

(

SELECT SUM(a.count)

FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as a

WHERE a.count != 0

) as query_count

FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as c

WHERE c.count > 0

) d;

+----------------+---------+--------+

| time | percent | count |

+----------------+---------+--------+

| 0.000001 | 12.64% | 81557 |

| 0.000010 | 20.69% | 133440 |

| 0.000100 | 66.62% | 429705 |

| 0.001000 | 0.05% | 339 |

| 0.010000 | 0.00% | 10 |

| 1000.000000 | 0.00% | 1 |

+----------------+---------+--------+

3. 高端一點的功能:定制化時間區間

默認的時間區間是:

(0; 10 ^ -6], (10 ^ -6; 10 ^ -5], (10 ^ -5; 10 ^ -4], ..., (10 ^ -1; 10 ^1], (10^1; 10^2]...(10^

你可以通過修改參數query_response_time_range_base來縮小時間區間,默認該參數是10,時間區間如上。

例如我們修個set global query_response_time_range_base=2; 則區間如下:

(0; 2 ^ -19], (2 ^ -19; 2 ^ -18], (2 ^ -18; 2 ^ -17], ..., (2 ^ -1; 2 ^1], (2 ^ 1; 2 ^ 2]...(2 ^

第一個區間總是最接近0.000001區間開始(2^19次方最接近);最后一個區間是到最接近且小于10000000處結束。

具體的:

set global query_response_time_range_base=2;

flush QUERY_RESPONSE_TIME;

SHOW QUERY_RESPONSE_TIME;

| 0.000001 | 711 | 0.000000 |

| 0.000003 | 1456 | 0.001456 |

......

| 0.125000 | 0 | 0.000000 |

| 0.250000 | 0 | 0.000000 |

| 0.500000 | 0 | 0.000000 |

| 1.000000 | 0 | 0.000000 |

| 2.000000 | 0 | 0.000000 |

| 4.000000 | 0 | 0.000000 |

| 8.000000 | 0 | 0.000000 |

| 16.000000 | 0 | 0.000000 |

......

| 8388608.00000 | 0 | 0.000000 |

| TOO LONG | 0 | TOO LONG |

一些注意事項

在備庫上,只有打開了參數log_slow_slave_statements(這個參數也是Percona Server上特有的)時,slave sql線程的SQL才會被統計。

啟動變量have_response_time_distribution,不能配置,該參數只表示該Server是否具有上述的RT統計功能。

設置了query_response_time_range_base,必須flush QUERY_RESPONSE_TIME后才生效。這里flush做兩件事情,使得QUERY_RESPONSE_TIME生效,另外清空之前的統計結果。

累了,聽首歌,扭扭脖子吧:)

參考文獻:

【附錄】

既然上面讀取INFORMATION_SCHEMA的SQL已經有些復雜了,那就不怕再復雜一些:

SELECT

case TRIM(time)

when '0.000001' then '< 1us'

when '0.000010' then '< 10us'

when '0.000100' then '<100us'

when '0.001000' then '< 1ms'

when '0.010000' then '< 10ms'

when '0.100000' then '<100ms'

when '1.000000' then '< 1s'

when '10.000000' then '< 10s'

when '100.000000' then '<100s'

else '>100s'

END as `RT area`,

CONCAT(ROUND(100*count/query_count,2),"%") as percent,

count

FROM(

SELECT

c.count,

c.time,

(

SELECT SUM(a.count)

FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as a

WHERE a.count != 0

) as query_count

FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as c

WHERE c.count > 0

) d;

+---------+---------+--------+

| RT area | percent | count |

+---------+---------+--------+

| < 10us | 41.92% | 404409 |

| <100us | 21.34% | 205881 |

| < 1ms | 35.20% | 339574 |

| < 10ms | 1.30% | 12586 |

| <100ms | 0.18% | 1736 |

| < 1s | 0.02% | 160 |

| < 10s | 0.04% | 340 |

+---------+---------+--------+

總結

以上是生活随笔為你收集整理的mysql 平均响应时间_Percona-Server/MySQL响应时间统计的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。