先來認識一下以下幾個有關查詢的指標:
questions:mysql從上一次啟動到當前客戶端傳送給mysql的查詢數量,不包括儲存過程內部的查詢。它不統計com_ping,com_statistics,com_stmt_prepare,com_stmt_close,com_stmt_reset數量,但它會把show命令計算到指標當中。
queries:mysql從上一次啟動到當前客戶端傳送給mysql的查詢數量,包括儲存過程內部的查詢,它不統計com_ping和com_statistics兩個命令。
由上可見,在資料庫中執行show命令會使questions值加1,而com_select則不記錄,而且對於資料庫的監控,經常會用到show命令,所以在用questions方式計算時,資料其實是被汙染的。 而且questions的值在設定環境變數的時候,也是一直在增長的,而com_select的值在此過程中,並不增長。 所以在使用question方式進行計算時,人為拉高了qps的結果,相對來說,使用com_select此種方式來計算qps,相對比較帖近真實情況一些,也就是說,在同等條件下,拉高了qps的值。
以下將介紹通過questions
方式以及com_select
方式計算qps
questions方式計算qps
1.questions方式計算qps公式
questions = show global status where variable_name='questions';
uptime = show global status like 'uptime';
qps=questions/uptime
如上,拿當前questions值除去uptime=qps,這個qps的意義為從mysql上一次啟動到當前並且包含show命令平均每秒的qps值,假如某個時間段的查詢數量特別高,但是通過除uptime時間,也會被拉下來。並且此questions值包含了show命令及環境變數所造成的資料汙染。
2.questions方式計算qps指標sql注:以下sql在mysql8.0中進行測試,5.6或5.7中的稍有差異。
select round(sum(if(variable_name='questions',variable_value,0))/sum(if(variable_name='uptime',variable_value,0)),1) as 'qps' from performance_schema.global_status where variable_name in ('questions','uptime');
com_select方式計算qps
通過com_select來計算qps,可以連續獲取兩次com_select指標,拿新指標減去老指標後再除於間隔時長的出間隔時間內的每秒平均值。這種方式更貼近真實一些。1.com_select方式計算qps指令碼
com_select = show global status where variable_name='com_select';
#!/usr/bin/env bash
old_qps=`echo "show global status where variable_name='com_select';"|mysql --defaults-file=./.my.cnf -n|awk ''`
sleep $1
new_qps=`echo "show global status where variable_name='com_select';"|mysql --defaults-file=./.my.cnf -n|awk ''`
echo "($new_qps-$old_qps) / $1" | bc
獲取tps指標的方式也有兩種:
基於com_commit
、com_rollback
計算tps
基於com_insert
、com_delete
、com_update
的status
,變數計算tps
基於com_commit、com_rollback計算tps
1.基於com_commit和com_rollback方式計算tps公式這樣計算出來的tps也是mysql從上次啟動到當前平均每秒的tps指標
com_commit = show global status where variable_name='com_commit';
com_rollback = show global status where variable_name='com_rollback';
uptime = show global status where variable_name='uptime';
tps=(com_commit + com_rollback)/uptime
2.計算指令碼
#!/usr/bin/env bash
com_commit=`echo "show global status where variable_name='com_commit';"|mysql --defaults-file=./.my.cnf -n|awk ''`
com_rollback=`echo "show global status where variable_name='com_rollback';"|mysql --defaults-file=./.my.cnf -n|awk ''`
uptime=`echo "show global status where variable_name='uptime';"|mysql --defaults-file=./.my.cnf -n|awk ''`
echo "($com_commit + $com_rollback) / $uptime" | bc
1.計算指令碼指定間隔時間內取值兩次,然後新指標減去老指標後三個指標相加再除以間隔時間得出間隔時間內每秒平均tps
#/usr/bin/env bash
old_com_insert=`echo "show global status where variable_name='com_insert';"|mysql --defaults-file=./.my.cnf -n|awk ''`
old_com_update=`echo "show global status where variable_name='com_update';"|mysql --defaults-file=./.my.cnf -n|awk ''`
old_com_delete=`echo "show global status where variable_name='com_delete';"|mysql --defaults-file=./.my.cnf -n|awk ''`
sleep $1
new_com_insert=`echo "show global status where variable_name='com_insert';"|mysql --defaults-file=./.my.cnf -n|awk ''`
new_com_update=`echo "show global status where variable_name='com_update';"|mysql --defaults-file=./.my.cnf -n|awk ''`
new_com_delete=`echo "show global status where variable_name='com_delete';"|mysql --defaults-file=./.my.cnf -n|awk ''`
echo "(($new_com_insert - $old_com_insert) + ($new_com_update - $old_com_update) + ($new_com_delete - $old_com_delete)) / $1" | bc
阿里雲k8s實戰手冊 [阿里雲cdn排坑指南]cdn
ecs運維指南
devops實踐手冊
hadoop大資料實戰手冊
knative雲原生應用開發指南
oss 運維實戰手冊
雲原生架構***
zabbix企業級分布式監控系統原始碼文件
雲原生基礎入門手冊
10g大廠面試題戳領
QPS是什麼?如何計算?
1.qps說明 qps即每秒查詢率,是對乙個特定的查詢伺服器在規定時間內所處理流量多少的衡量標準。2.每秒查詢率 網際網路上,經常用每秒查詢率來衡量網域名稱系統伺服器的機器的效能,即為qps。對應fetches sec,即每秒的響應請求數,也即是最大吞吐能力。3.計算關係 qps 併發量 平均響應時...
MySQL的TPS和QPS 計算方式
tps transactions per second 每秒傳輸的事物處理個數 這是指伺服器每秒處理的事務數,支援事務的儲存引擎如innodb等特有的乙個效能指標。計算方法 tps com commit com rollback uptime sql view plain copy use info...
QPS的計算方法
每秒查詢率qps是對乙個特定的查詢伺服器在規定時間內所處理流量多少的衡量標準,在網際網路上,作為網域名稱系統伺服器的機器的效能經常用每秒查詢率來衡量。原理 每天80 的訪問集中在20 的時間裡,這20 時間叫做峰值時間 公式 總pv數 80 每天秒數 20 峰值時間每秒請求數 qps 機器 峰值時間...