亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用mysqladmin實現獲取mysql數據庫中的TPS和QPS

發布時間:2020-11-10 15:16:53 來源:億速云 閱讀:337 作者:Leah 欄目:開發技術

這篇文章運用簡單易懂的例子給大家介紹利用mysqladmin實現獲取mysql數據庫中的TPS和QPS,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

  mysqladmin是mysql官方的一款執行管理端的客戶端程序,可以利用它對MySQL數據庫服務進行操作,在MySQL5.5及以前的版本中,最常用的方法是用它來關閉mysql實例:

mysqladmin -uxxx -pxxx -Pxxx -hxxx  shutdown

   隨著mysql版本的升級,mysql5.7中已經可以直接使用shutdown命令來進行mysql服務的關閉了。mysql8.0版本中,可以使用restart命令來對mysql服務進行重啟,mysqladmin這個工具在日常的運維場景中用的越來越少。

    今天來看如何使用mysqladmin這個工具來獲取一個mysql實例當前的TPS和QPS呢?要解決這個問題,首先得知道TPS和QPS的參考指標。在MySQL中,我們可以使用show global status命令來查看mysql當前的指標情況,如下:

mysql--dba_admin@127.0.0.1:(none) 13:37:50>>show global status;
+------------------------------------------+----------------+
| Variable_name       | Value   |
+------------------------------------------+----------------+
| Aborted_clients       | 85032   |
| Aborted_connects       | 176   |
| Binlog_cache_disk_use     | 3293   |
| Binlog_cache_use       | 14631673326 |
| Binlog_stmt_cache_disk_use    | 13    |
| Binlog_stmt_cache_use     | 9948429  |
| Bytes_received       | 19921975442457 |
| Bytes_sent        | 13553543054684 |
| Com_admin_commands      | 913630   |
| Com_assign_to_keycache     | 0    |
| Com_alter_db        | 0    |
| Com_alter_db_upgrade      | 0    |

有這么幾個指標比較重要:

1、Questions:

MySQL服務器執行的語句數,它僅包含客戶端發送給服務器的語句,不包含存儲過程中執行的語句,該參數不計算Com_ping,Com_statistics,Com_stmt_prepare,Com_stmt_close以及Com_stat_reset命令,但是包含show命令、dml命令。不包含主從復制的語句。

2、Queries:

服務器執行的語句數,與Questions參數不同,他包含了在存儲過程中執行的語句以及內置的主從復制語句,它不計算Com_ping和Com_statistics命令

3、Com_xxx:

代表xxx語句已經執行的次數,每種類型都有一個狀態變量,舉例有Com_select,Com_insert,Com_delete,Com_update,Com_commit,Com_rollback等等。

通常情況下,計算TPS和QPS的方案有如下幾個:

方案一、如果考慮的是MySQL服務器上執行的所有SQL,基于Queries來計算QPS,基于Com_commit和Com_rollback的代數和來計算TPS

方案二、如果僅僅考慮業務方通過命令行執行的所有SQL,基于Question來計算QPS,基于Com_commit和Com_rollback的代數和來計算TPS

方案三、基于Com_xxx的status來計算QPS和TPS

以下是使用mysqladmin的方案來看TPS和QPS的命令:

[root ~]#./mysqladmin -r -i 2 -uroot -pxxxxxx -P4306 --socket=/data/mysql_4306/tmp/mysql.sock ext| awk '/Queries/{printf("QPS:%d\n",$4)}'
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
QPS:55668415
QPS:1
QPS:34
QPS:32
QPS:108
QPS:6
QPS:7

[root ~]# ./mysqladmin -r -i 2 -uroot -pxxxxxx -P4306 --socket=/data/mysql_4306/tmp/mysql.sock ext| awk '/Com_commit/{printf("TPS:%d\n",$4)}'
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
TPS:27449691
TPS:56
TPS:1
TPS:2
TPS:28

這里針對參數-r和-i進行解釋,我們使用mysqladmin --help指令,過濾這兩個參數:

  • -r, --relative     

Show difference between current and previous values when used with -i. Currently only works with extended-status.

翻譯一下,就是現實當前和之前的值之間的差距,需要配合-i使用,再來看-i參數:

  • -i, --sleep=#       Execute commands repeatedly with a sleep between.

也就是時間間隔

除此之外,后面還有一個ext的選項,看這個選項的解釋:

extended-status:

    Gives an extended status message from the server #翻譯一下,就是給出更多的MySQL服務器的狀態信息

這樣上面的命令就很容易進行解釋了。使用-r參數來計算不同的狀態變量之間的差值,然后-i參數控制時間長度,設置為1代表每秒鐘的差值,ext代表輸出更多MySQL的狀態信息。可以方便的計算TPS和QPS,不同的計算方法略有差異,可以根據不同場景,來計算更為準確的TPS和QPS值。

計算TPS和QPS的時候,有幾個標準,可以酌情替換:

1、com_commit不會記錄隱式提交的事務,所以如果開了隱式提交使用com_commit計算tps會不準。

2、如果數據庫中存在比較多的myisam表,則計算還是questions 比較合適。

3、如果數據庫中存在比較多的innodb表,則計算以com_*數據來源比較合適。

4、Questions 是記錄了從mysqld啟動以來所有的select,dml 次數包括show 命令的查詢的次數。這樣多少有失準確性,比如很多數據庫有監控系統在運行,每5秒對數據庫進行一次show 查詢來獲取當前數據庫的狀態,而這些查詢就被記錄到QPS,TPS統計中,造成一定的"數據污染".

5、TPS在某些隱式提交開啟的情況下,可以使用Com_insert + Com_update + Com_delete來查看。

最后,給出判斷mysql是否存活的一種方法:

[root ~]# ./mysqladmin -r -i 2 -uroot -pdba@JJMatch -P4306 --socket=/data/mysql_4306/tmp/mysql.sock ping
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
mysqld is alive
mysqld is alive
mysqld is alive

使用mysqladmin的ping命令來查看mysql的存活情況。

隨著MySQL的升級,mysqladmin工具的使用頻率會越來越少,幾乎都是通過通過mysql工具來實現日常的需求,mysql8.0版本的mysqladmin工具在mysql5.7的基礎上略有調整,有興趣可以自己研究。

關于利用mysqladmin實現獲取mysql數據庫中的TPS和QPS就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

胶州市| 抚顺市| 如皋市| 西青区| 普安县| 丰顺县| 崇左市| 新干县| 库伦旗| 奇台县| 阳朔县| 盱眙县| 临洮县| 铜山县| 绿春县| 科技| 吉首市| 蒲城县| 五常市| 崇州市| 通道| 青龙| 威宁| 宁强县| 顺平县| 闻喜县| 运城市| 巴林左旗| 辉南县| 柘城县| 新昌县| 台州市| 保德县| 江城| 临高县| 绥德县| 江西省| 绥江县| 德兴市| 台南市| 莱阳市|