經常可以看到一些文章說,我們的數據庫基本是讀多寫少,所以要做讀寫分離架構。
我就很納悶,他們是怎么判斷出來數據庫的讀多寫少的呢?
其實更多的時候是人云亦云,拍腦門罷了~ 下面就告訴大家正確的姿勢
笨方法(不準確)
查看自己項目內的所有sql語句,去做個統計,到底是select語句多,還是insert、update、delete語句多。
但是這依然不準確,因為就算select語句寫的多,但是不代表執行的多,可能我們的項目存在大量的批量更新操作。
正確方法(絕對準確)
通過show status命令,可查看數據庫的所有增刪改查操作發生次數
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%';

查詢數據庫的增刪改查次數
如上圖所示,解釋如下:
Com_delete 代表刪除次數
Com_delete_multi 代表批量刪除次數
Com_insert 代表插入次數
Com_insert_select 代表select into的次數
Com_select 代表select次數
Com_update 代表更新操作次數
Com_update_multi 代表批量更新次數
讀寫比例計算公式
讀寫比例=讀次數/寫次數
讀寫比例=
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命令,代表只是查詢當前會話的狀態數據,如果要查看整個數據庫的狀況一定要記得加上GLOBAL參數,使用SHOW GLOBAL STATUS命令。
擴展知識
SHOW GLOBAL STATUS可以查看的數據非常多(windows MySQL 5.7版本下,有354條之多),涵蓋方方面面,可以自行探索一下,附圖一張。

部分show status命令數據展示