背景:saas平台采用共享mysql数据库,共享数据库表的模式,每个表有都有个外键uid来标识每个用户,而且表的有些字段是varchar类型的,需要监控每个租户所占用的表空间以及变化情况。
问题:那该怎么计算出每个用户所占用的表空间大小呢?该怎么监控每个用户所占用表空间大小的变化情况呢?比如说表testA,要计算出每个用户占用testA表空间大小的情况,监控占用表空间大小的变化情况,这个该怎么实现?
目前想到的方案:可不可以采用java字段与表字段映射关系来做呀?就是平台里采用的Hibernate,java对象与数据库表是一一对应的。先获得java对象每个字段的长度,再按这篇文章(http://blog.csdn.net/J080624/article/details/52875344)的字段大小来进行换算呀,每行记录都对应一个租户,通过这种方式来获得要插入的一行记录的大小,进而获得对应租户的所有大小。请问这种方案可行吗?
不好意思,我是来测试是否能输入中文的
这种貌似不合适,你不考虑索引空间了?还不如直接用用户的条数/总条数*db大小算个大概值
如果考虑数据大小+索引大小,有什么好的建议没有呀?
@北纬蓝天白云: 不是说了么?直接拿磁盘总开销来算啊