怎么判斷你的MySQL到底是讀多還是寫多
經(jīng)常可以看到一些文章說(shuō),我們的數(shù)據(jù)庫(kù)基本是讀多寫少,所以要做讀寫分離架構(gòu)。
我就很納悶,他們是怎么判斷出來(lái)數(shù)據(jù)庫(kù)的讀多寫少的呢?
其實(shí)更多的時(shí)候是人云亦云,拍腦門罷了~ 下面就告訴大家正確的姿勢(shì)
笨方法(不準(zhǔn)確)
查看自己項(xiàng)目?jī)?nèi)的所有sql語(yǔ)句,去做個(gè)統(tǒng)計(jì),到底是select語(yǔ)句多,還是insert、update、delete語(yǔ)句多。
但是這依然不準(zhǔn)確,因?yàn)榫退鉺elect語(yǔ)句寫的多,但是不代表執(zhí)行的多,可能我們的項(xiàng)目存在大量的批量更新操作。
正確方法(絕對(duì)準(zhǔn)確)
通過(guò)show status命令,可查看數(shù)據(jù)庫(kù)的所有增刪改查操作發(fā)生次數(shù)
- SHOW GLOBAL STATUS
- WHERE
- variable_name LIKE '%Com_insert%'
- OR variable_name LIKE '%Com_update%'
- OR variable_name LIKE '%Com_delete%'
- OR variable_name LIKE '%Com_select%';
查詢數(shù)據(jù)庫(kù)的增刪改查次數(shù)
如上圖所示,解釋如下:
- Com_delete 代表刪除次數(shù)
- Com_delete_multi 代表批量刪除次數(shù)
- Com_insert 代表插入次數(shù)
- Com_insert_select 代表select into的次數(shù)
- Com_select 代表select次數(shù)
- Com_update 代表更新操作次數(shù)
- Com_update_multi 代表批量更新次數(shù)
讀寫比例計(jì)算公式
讀寫比例=讀次數(shù)/寫次數(shù)
讀寫比例=
- Com_select/(Com_select+Com_delete+Com_delete_multi+Com_insert+Com_insert_select+Com_update+Com_update_multi)*100%)
注意事項(xiàng)
如果使用SHOW STATUS或SHOW SESSION STATUS命令,代表只是查詢當(dāng)前會(huì)話的狀態(tài)數(shù)據(jù),如果要查看整個(gè)數(shù)據(jù)庫(kù)的狀況一定要記得加上GLOBAL參數(shù),使用SHOW GLOBAL STATUS命令。
擴(kuò)展知識(shí)
SHOW GLOBAL STATUS可以查看的數(shù)據(jù)非常多(windows mysql 5.7版本下,有354條之多),涵蓋方方面面,可以自行探索一下,附圖一張。
部分show status命令數(shù)據(jù)展示