我可以粗略估计表格大小
SELECT tabname, (rowsize*nrows)/1024/1024/1024 AS tabsize
FROM informix.systables
ORDER BY tabsize DESC
有没有办法更准确地测量桌子的大小?
我可以粗略估计表格大小
SELECT tabname, (rowsize*nrows)/1024/1024/1024 AS tabsize
FROM informix.systables
ORDER BY tabsize DESC
有没有办法更准确地测量桌子的大小?
这个问题有很多细微差别。您是否想要当前分配给使用的页面总数的大小(因此这将包括可供该表使用的页面......因此保留仅供该表使用但当前没有任何页面的页面数据),或者您只想要当前使用的页面的大小?是否要包括将在表上定义的任何索引的大小?
因此,可以使用一个查询来获取当前数据库中连接到的任何非系统目录表的大小,即为该表保留的所有空间的大小,不包括分离索引:
我的小型测试系统的示例输出(请注意,t3 是一个碎片表,其中 1 个碎片没有数据,因此如果您想在表级别而不是碎片级别报告,则可以使用 sum 和 group by 如果您的架构包含碎片表)
如果将查询更改为以下内容,则会将结果更改为仅计算当前用于表的页数,而不是保留供使用的所有空间:
如果您希望将分离索引的大小包含在表大小中,那么您还必须将 sysfragments 包含到查询中(可能是上述 2 个查询的 1 种形式以及随后获得索引的东西的联合分区信息,然后也将 sysfragments 包括到连接中)