如何使用mysqladmin獲取一個(gè)mysql實(shí)例當(dāng)前的TPS和QPS
mysqladmin是mysql官方的一款執(zhí)行管理端的客戶端程序,可以利用它對(duì)MySQL數(shù)據(jù)庫(kù)服務(wù)進(jìn)行操作,在MySQL5.5及以前的版本中,最常用的方法是用它來(lái)關(guān)閉mysql實(shí)例:
mysqladmin -uxxx -pxxx -Pxxx -hxxx shutdown
隨著mysql版本的升級(jí),mysql5.7中已經(jīng)可以直接使用shutdown命令來(lái)進(jìn)行mysql服務(wù)的關(guān)閉了。mysql8.0版本中,可以使用restart命令來(lái)對(duì)mysql服務(wù)進(jìn)行重啟,mysqladmin這個(gè)工具在日常的運(yùn)維場(chǎng)景中用的越來(lái)越少。
今天來(lái)看如何使用mysqladmin這個(gè)工具來(lái)獲取一個(gè)mysql實(shí)例當(dāng)前的TPS和QPS呢?要解決這個(gè)問(wèn)題,首先得知道TPS和QPS的參考指標(biāo)。在MySQL中,我們可以使用show global status命令來(lái)查看mysql當(dāng)前的指標(biāo)情況,如下:
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 |
有這么幾個(gè)指標(biāo)比較重要:
1、Questions:
MySQL服務(wù)器執(zhí)行的語(yǔ)句數(shù),它僅包含客戶端發(fā)送給服務(wù)器的語(yǔ)句,不包含存儲(chǔ)過(guò)程中執(zhí)行的語(yǔ)句,該參數(shù)不計(jì)算Com_ping,Com_statistics,Com_stmt_prepare,Com_stmt_close以及Com_stat_reset命令,但是包含show命令、dml命令。不包含主從復(fù)制的語(yǔ)句。
2、Queries:
服務(wù)器執(zhí)行的語(yǔ)句數(shù),與Questions參數(shù)不同,他包含了在存儲(chǔ)過(guò)程中執(zhí)行的語(yǔ)句以及內(nèi)置的主從復(fù)制語(yǔ)句,它不計(jì)算Com_ping和Com_statistics命令
3、Com_xxx:
代表xxx語(yǔ)句已經(jīng)執(zhí)行的次數(shù),每種類型都有一個(gè)狀態(tài)變量,舉例有Com_select,Com_insert,Com_delete,Com_update,Com_commit,Com_rollback等等。
通常情況下,計(jì)算TPS和QPS的方案有如下幾個(gè):
方案一、如果考慮的是MySQL服務(wù)器上執(zhí)行的所有SQL,基于Queries來(lái)計(jì)算QPS,基于Com_commit和Com_rollback的代數(shù)和來(lái)計(jì)算TPS
方案二、如果僅僅考慮業(yè)務(wù)方通過(guò)命令行執(zhí)行的所有SQL,基于Question來(lái)計(jì)算QPS,基于Com_commit和Com_rollback的代數(shù)和來(lái)計(jì)算TPS
方案三、基于Com_xxx的status來(lái)計(jì)算QPS和TPS
以下是使用mysqladmin的方案來(lái)看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
這里針對(duì)參數(shù)-r和-i進(jìn)行解釋,我們使用mysqladmin --help指令,過(guò)濾這兩個(gè)參數(shù):
- -r, --relative
Show difference between current and previous values when used with -i. Currently only works with extended-status.
翻譯一下,就是現(xiàn)實(shí)當(dāng)前和之前的值之間的差距,需要配合-i使用,再來(lái)看-i參數(shù):
- -i, --sleep=# Execute commands repeatedly with a sleep between.
也就是時(shí)間間隔
除此之外,后面還有一個(gè)ext的選項(xiàng),看這個(gè)選項(xiàng)的解釋:
extended-status:
Gives an extended status message from the server #翻譯一下,就是給出更多的MySQL服務(wù)器的狀態(tài)信息
這樣上面的命令就很容易進(jìn)行解釋了。使用-r參數(shù)來(lái)計(jì)算不同的狀態(tài)變量之間的差值,然后-i參數(shù)控制時(shí)間長(zhǎng)度,設(shè)置為1代表每秒鐘的差值,ext代表輸出更多MySQL的狀態(tài)信息。可以方便的計(jì)算TPS和QPS,不同的計(jì)算方法略有差異,可以根據(jù)不同場(chǎng)景,來(lái)計(jì)算更為準(zhǔn)確的TPS和QPS值。
計(jì)算TPS和QPS的時(shí)候,有幾個(gè)標(biāo)準(zhǔn),可以酌情替換:
1、com_commit不會(huì)記錄隱式提交的事務(wù),所以如果開了隱式提交使用com_commit計(jì)算tps會(huì)不準(zhǔn)。
2、如果數(shù)據(jù)庫(kù)中存在比較多的myisam表,則計(jì)算還是questions 比較合適。
3、如果數(shù)據(jù)庫(kù)中存在比較多的innodb表,則計(jì)算以com_*數(shù)據(jù)來(lái)源比較合適。
4、Questions 是記錄了從mysqld啟動(dòng)以來(lái)所有的select,dml 次數(shù)包括show 命令的查詢的次數(shù)。這樣多少有失準(zhǔn)確性,比如很多數(shù)據(jù)庫(kù)有監(jiān)控系統(tǒng)在運(yùn)行,每5秒對(duì)數(shù)據(jù)庫(kù)進(jìn)行一次show 查詢來(lái)獲取當(dāng)前數(shù)據(jù)庫(kù)的狀態(tài),而這些查詢就被記錄到QPS,TPS統(tǒng)計(jì)中,造成一定的"數(shù)據(jù)污染".
5、TPS在某些隱式提交開啟的情況下,可以使用Com_insert + Com_update + Com_delete來(lái)查看。
最后,給出判斷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命令來(lái)查看mysql的存活情況。
隨著MySQL的升級(jí),mysqladmin工具的使用頻率會(huì)越來(lái)越少,幾乎都是通過(guò)通過(guò)mysql工具來(lái)實(shí)現(xiàn)日常的需求,mysql8.0版本的mysqladmin工具在mysql5.7的基礎(chǔ)上略有調(diào)整,有興趣可以自己研究。
以上就是如何使用mysqladmin獲取一個(gè)mysql實(shí)例當(dāng)前的TPS和QPS的詳細(xì)內(nèi)容,更多關(guān)于mysqladmin 統(tǒng)計(jì)mysql T/QPS的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
詳解記錄MySQL中l(wèi)ower_case_table_names的坑
這篇文章主要介紹了詳解記錄MySQL中l(wèi)ower_case_table_names的坑,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03MySQL 表字段太多超長(zhǎng)問(wèn)題解決方案
在設(shè)計(jì)MySQL數(shù)據(jù)庫(kù)時(shí),常遇到表字段超長(zhǎng)問(wèn)題,這是由字段數(shù)量過(guò)多或字段定義過(guò)長(zhǎng)引起的,MySQL對(duì)字段數(shù)量和行大小有嚴(yán)格限制,超過(guò)限制將無(wú)法正常操作,本文就來(lái)介紹一下解決方法,感興趣的可以了解一下2024-10-10MySQL使用LOAD_FILE()函數(shù)方法總結(jié)
在本篇文章里小編給大家分享了關(guān)于MySQL使用LOAD_FILE()函數(shù)方法和相關(guān)知識(shí)點(diǎn),需要的朋友們學(xué)習(xí)下。2019-03-03mysql5.7.14 解壓版安裝配置方法圖文教程(win10)
這篇文章主要為大家詳細(xì)介紹了win10下mysql5.7.14 winx64安裝配置方法圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12MYSQL必知必會(huì)讀書筆記第十和十一章之使用函數(shù)處理數(shù)據(jù)
這篇文章主要介紹了MYSQL必知必會(huì)讀書筆記第十和十一章之使用函數(shù)處理數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下2016-05-05兩大步驟教您開啟MySQL 數(shù)據(jù)庫(kù)遠(yuǎn)程登陸帳號(hào)的方法
在工作實(shí)踐和學(xué)習(xí)中,如何開啟 MySQL 數(shù)據(jù)庫(kù)的遠(yuǎn)程登陸帳號(hào)算是一個(gè)難點(diǎn)的問(wèn)題,以下內(nèi)容便是在工作和實(shí)踐中總結(jié)出來(lái)的兩大步驟,能幫助DBA們順利的完成開啟 MySQL 數(shù)據(jù)庫(kù)的遠(yuǎn)程登陸帳號(hào)。2011-03-03