saas平台中采用共享mysql数据库表,每个用户所占用的表空间大小该怎么监控,或该怎么才能计算出来?

的阿尔额 2018-01-24 11:29:55
背景:saas平台采用共享mysql数据库,共享数据库表的模式,每个表有都有个外键uid来标识每个用户,而且表的有些字段是varchar类型的。

问题:那该怎么计算出每个用户所占用的表空间大小呢?该怎么监控每个用户所占用表空间大小的变化情况呢?比如说表testA,要计算出每个用户占用testA表空间大小的情况,监控占用表空间大小的变化情况,这个该怎么实现?

目前想到的方案:可不可以采用java字段与表字段映射关系来做呀?就是平台里采用的Hibernate,java对象与数据库表是一一对应的。先获得java对象每个字段的长度,再按这篇文章(http://blog.csdn.net/J080624/article/details/52875344)的字段大小来进行换算呀,每行记录都对应一个租户,通过这种方式来获得要插入的一行记录的大小,进而获得对应租户的所有大小。请问这种方案可行吗?
...全文
634 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
liu志坚 2018-01-24
  • 打赏
  • 举报
回复
information_schema.`TABLES` mysql也有类似oracle的动态视图的表,上面这个表里面有表占用空间大小的信息。
的阿尔额 2018-01-24
  • 打赏
  • 举报
回复
引用 1 楼 liuzhijian2008x 的回复:
information_schema.`TABLES` mysql也有类似oracle的动态视图的表,上面这个表里面有表占用空间大小的信息。
确实是每个表都有DATA_LENGTH和INDEX_LENGTH,以平均每行的长度AVG_ROW_LENGTH。但是一张表里有多个租户,且表的有些字段是varchar字段,这样一样来无法准确得出每个租户所占用的表空间大小了。

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧