今天在工作中,同事提到如何获取表中的LOB占用空间大小,通常我们常用syscat.tables查询表中的fpages和npages等信息,但是这个未将将普通字段和LOB字段分开的,有同事就采用get snapshot方式获取了表的快照信息,确实能够很清楚的看到表中数据信息,将LOB和普通字段页数分开显示。
其实查查看对于获取表的类似信息的可供查询的方法还是很多:
1.表函数admin_get_tab_info,不过该表函数将要被后面要提到的管理视图替代,慢慢就被抛弃的功能,
用法类似SELECT * FROM TABLE (SYSPROC.ADMIN_GET_TAB_INFO('DBUSER1','EMPLOYEE')) AS T
2.表函数snap_get_tab,这也是一个即将被抛弃的功能,主要是之前的DB2的健康快照工具在新的版本中已经没了,尤其是10.1,已经不再有DB2控制中心这个管理工具了,所以相关API接口也就会关闭掉。
SELECT * FROM TABLE (SYSPROC.ADMIN_GET_TAB_INFO('SAMPLE',0)) AS T,当然,这个会查询整库的表的信息。
3.查询sysibmadm.snaptab快照视图,这个是迄今为止,DB2开始大力推进的供用户方便查询的管理视图
4.表函数snap_get_tab_v91返回和3中相同的快照信息
看来DB2真的是越来越接近用户使用习惯了,其实管理视图方式很好用的,日常基本通过其查询,就不用通过实例快照方式获取想要的信息,真的很方便,很好很强大的吧。