怎么判斷你的MySQL到底是讀多還是寫多
經(jīng)??梢钥吹揭恍┪恼抡f,我們的數(shù)據(jù)庫基本是讀多寫少,所以要做讀寫分離架構(gòu)。
我就很納悶,他們是怎么判斷出來數(shù)據(jù)庫的讀多寫少的呢?
其實更多的時候是人云亦云,拍腦門罷了~ 下面就告訴大家正確的姿勢
笨方法(不準確)
查看自己項目內(nèi)的所有sql語句,去做個統(tǒng)計,到底是select語句多,還是insert、update、delete語句多。
但是這依然不準確,因為就算select語句寫的多,但是不代表執(zhí)行的多,可能我們的項目存在大量的批量更新操作。
正確方法(絕對準確)
通過show status命令,可查看數(shù)據(jù)庫的所有增刪改查操作發(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ù)庫的增刪改查次數(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ù)
讀寫比例計算公式
讀寫比例=讀次數(shù)/寫次數(shù)
讀寫比例=
- Com_select/(Com_select+Com_delete+Com_delete_multi+Com_insert+Com_insert_select+Com_update+Com_update_multi)*100%)
注意事項
如果使用SHOW STATUS或SHOW SESSION STATUS命令,代表只是查詢當前會話的狀態(tài)數(shù)據(jù),如果要查看整個數(shù)據(jù)庫的狀況一定要記得加上GLOBAL參數(shù),使用SHOW GLOBAL STATUS命令。
擴展知識
SHOW GLOBAL STATUS可以查看的數(shù)據(jù)非常多(windows mysql 5.7版本下,有354條之多),涵蓋方方面面,可以自行探索一下,附圖一張。
部分show status命令數(shù)據(jù)展示