经常可以看到一些文章说,判断我们的到底读多多数据库基本是读多写少,所以要做读写分离架构。还写
我就很纳闷,判断他们是到底读多多怎么判断出来数据库的读多写少的呢?
其实更多的时候是人云亦云,拍脑门罢了~ 下面就告诉大家正确的还写姿势
查看自己项目内的所有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命令数据展示