db2中获取某个表/索引占用空间的大小
2013-01-06 14:54
218 查看
在数据库运维中,经常会遇到需要统计db2表大小的问题。在db2中提供了3种方法已供我们选择。分别为db2pd -tcbstats、admin_get_tab_info表函数和SYSIBMADM.ADMINTABINFO系统管理视图。
1、db2pdde tcbstats可以查看表的tcb信息,其中datasize字段用来表示表的页数,乘以页大小即为表的大小。使用该方法时,只有该表被访问过才会显示出来。
具体使用命令为db2pd -tcbstats。
2、Reorgchk结果中,npages代表页数,乘以页大小就是表的大小,但Reorgchk需要执行runstats,对于大表来说,需要的时间较长。
3、SYSIBMADM.ADMINTABINFO管理视图,db2 9版本引入,可以获得表的大小和状态信息,以kb为计量单位。
通过命令db2 describe table SYSIBMADM.ADMINTABINFO ,可以看到表的字段信息。
通过命令
SELECT (DATA_OBJECT_P_SIZE + INDEX_OBJECT_P_SIZE + LONG_OBJECT_P_SIZE +
LOB_OBJECT_P_SIZE + XML_OBJECT_P_SIZE) AS TOTAL_P_SIZE
FROM SYSIBMADM.ADMINTABINFO
WHERE TABNAME = '表名' 统计表所占用的物理空间大小,包括数据、索引、大对象和xml空间大小。
SYSIBMADM.ADMINTABINFO 中几个字段值得注意:DATA_OBJECT_L_SIZE和DATA_OBJECT_P_SIZE。其中DATA_OBJECT_L_SIZE代表表的逻辑大小(KB),DATA_OBJECT_P_SIZE为表的物理大小(KB)。逻辑大小和物理大小的差别是什么呢?想想一下,我们往某张表插入很多数据,然后删除一些数据,但表占据的空间并不会释放,当新的数据插入时,仍然会使用这些空间。实际占用的空间叫做逻辑空间,分配过的空间叫物理空间,逻辑空间可能会小于物理空间,这两者的差异可以通过reorg来消除。
除此之外,SYSIBMADM.ADMINTABINFO视图提供了其他几个有用的字段,如REORG_PENDING,INPLACE_REORG_STATUS,LOAD_STATUS等,详细解释,请参看信息中心。
4、admin_get_info表函数返回结果与SYSIBMADM.ADMINTABINFO管理视图类似。
我统计使用的是SELECT TABNAME,SUM(DATA_OBJECT_P_SIZE)/1024 FROM TABLE (SYSPROC.ADMIN_GET_TAB_INFO('模式','表名')) AS T GROUP BY TABNAME;
使用此语句,统计速度要比SYSIBMADM.ADMINTABINFO快很多。
1、db2pdde tcbstats可以查看表的tcb信息,其中datasize字段用来表示表的页数,乘以页大小即为表的大小。使用该方法时,只有该表被访问过才会显示出来。
具体使用命令为db2pd -tcbstats。
2、Reorgchk结果中,npages代表页数,乘以页大小就是表的大小,但Reorgchk需要执行runstats,对于大表来说,需要的时间较长。
3、SYSIBMADM.ADMINTABINFO管理视图,db2 9版本引入,可以获得表的大小和状态信息,以kb为计量单位。
通过命令db2 describe table SYSIBMADM.ADMINTABINFO ,可以看到表的字段信息。
通过命令
SELECT (DATA_OBJECT_P_SIZE + INDEX_OBJECT_P_SIZE + LONG_OBJECT_P_SIZE +
LOB_OBJECT_P_SIZE + XML_OBJECT_P_SIZE) AS TOTAL_P_SIZE
FROM SYSIBMADM.ADMINTABINFO
WHERE TABNAME = '表名' 统计表所占用的物理空间大小,包括数据、索引、大对象和xml空间大小。
SYSIBMADM.ADMINTABINFO 中几个字段值得注意:DATA_OBJECT_L_SIZE和DATA_OBJECT_P_SIZE。其中DATA_OBJECT_L_SIZE代表表的逻辑大小(KB),DATA_OBJECT_P_SIZE为表的物理大小(KB)。逻辑大小和物理大小的差别是什么呢?想想一下,我们往某张表插入很多数据,然后删除一些数据,但表占据的空间并不会释放,当新的数据插入时,仍然会使用这些空间。实际占用的空间叫做逻辑空间,分配过的空间叫物理空间,逻辑空间可能会小于物理空间,这两者的差异可以通过reorg来消除。
除此之外,SYSIBMADM.ADMINTABINFO视图提供了其他几个有用的字段,如REORG_PENDING,INPLACE_REORG_STATUS,LOAD_STATUS等,详细解释,请参看信息中心。
4、admin_get_info表函数返回结果与SYSIBMADM.ADMINTABINFO管理视图类似。
我统计使用的是SELECT TABNAME,SUM(DATA_OBJECT_P_SIZE)/1024 FROM TABLE (SYSPROC.ADMIN_GET_TAB_INFO('模式','表名')) AS T GROUP BY TABNAME;
使用此语句,统计速度要比SYSIBMADM.ADMINTABINFO快很多。
相关文章推荐
- db2中获取某个表/索引占用空间的大小
- db2中获取某个表/索引占用空间的大小
- 统计 MySQL 数据库中每个表数据与索引占用的空间大小
- Db2查看未提交的事务开始时间、占用日志空间大小、应用IP地址、执行的SQL语句等信息
- C#获取文件夹及文件的大小与占用空间的方法
- 获取python对象占用空间的大小
- VC++实现获取文件占用空间大小的两种方法(非文件大小)
- 获取本地程序安装后占用空间大小
- VC++实现获取文件占用空间大小的两种方法(非文件大小)
- 获取本地程序安装后占用空间大小
- Oracle查看分区、索引、表占用空间大小
- 统计 MySQL 数据库中每个表数据与索引占用的空间大小
- C#获取文件夹及文件的大小与占用空间的方法
- 获取文件或是文件夹的大小和占用空间
- ORACLE获取表所占用空间大小计算和展示
- VC++实现获取文件占用空间大小的两种方法(非文件大小)
- C#获取文件夹/文件的大小以及占用空间
- 查看SQL Server数据库表、索引视图等占用的空间大小
- C#获取文件夹/文件的大小以及占用空间 转摘自:http://www.cnblogs.com/chenpeng-dota/articles/2176470.html
- 获取文件占用空间大小