ADMINTABINFO 管理视图和 ADMIN_GET_TAB_INFO 表函数 - 检索表大小和状态信息
ADMINTABINFO 管理视图和 ADMIN_GET_TAB_INFO 表函数提供用于检索目录视图中当前不可用的表大小和状态信息的方法。
ADMINTABINFO 管理视图
ADMINTABINFO 管理视图仅返回表,具体化查询表 (MQT) 和层次结构表的大小和状态信息。 这些表类型报告为 T (对于表) , S (对于具体化查询表) 和 H (对于 SYSCAT.TABLES 目录视图。 将在表的数据分区级别和数据库分区级别返回此信息。
在 Db2® pureScale® 环境中,由于所有 成员 都对单个物理数据分区执行操作,因此针对表报告的值在所有 成员 上都相同。 这与分区数据库环境不同,在分区数据库环境中,每个 成员 都在不同的物理数据分区上运行,并报告不同的值。 由于所有 成员 上的值始终相同,因此在 Db2 pureScale 实例上运行时, ADMINTABINFO 视图和 ADMIN_GET_TAB_INFO 表函数仅针对每个表返回一行。
模式为 SYSIBMADM。
请参阅 ADMINTABINFO 管理视图和 ADMIN_GET_TAB_INFO 返回的信息 表,以获取可返回的完整信息列表。
权限
- 对 ADMINTABINFO 管理视图的 SELECT 特权
- ADMINTABINFO 管理视图上的 CONTROL 特权
- DATAACCESS 权限
- DBADM 权限
- SQLADM 权限
缺省 PUBLIC 特权
在非限制性数据库中,当自动创建视图时,将向 PUBLIC 授予 SELECT 特权。
示例
SELECT * FROM SYSIBMADM.ADMINTABINFO
SELECT TABSCHEMA, TABNAME, SUM(DATA_OBJECT_P_SIZE),
SUM(INDEX_OBJECT_P_SIZE), SUM(LONG_OBJECT_P_SIZE),
SUM(LOB_OBJECT_P_SIZE), SUM(XML_OBJECT_P_SIZE)
FROM SYSIBMADM.ADMINTABINFO GROUP BY TABSCHEMA, TABNAME
SELECT TABSCHEMA, TABNAME FROM SYSIBMADM.ADMINTABINFO
WHERE LARGE_RIDS = 'P'
SELECT SUBSTR(TABSCHEMA, 1, 10) AS TBSCHEMA, SUBSTR(TABNAME, 1, 10)
AS TBNAME, STATSTYPE FROM SYSIBMADM.ADMINTABINFO WHERE TABNAME = 'T1';
TBSCHEMA TBNAME STATSTYPE
---------- ---------- ---------
DB2USER1 T1 U
1 record(s) selected.
ADMIN_GET_TAB_INFO 表函数
ADMIN_GET_TAB_INFO 表函数返回与 ADMINTABINFO 管理视图相同的信息,但允许您指定模式和表名称。
请参阅 ADMINTABINFO 管理视图和 ADMIN_GET_TAB_INFO 返回的信息 表,以获取可返回的完整信息列表。
权限
对 ADMIN_GET_TAB_INFO 表函数的 EXECUTE 特权。
缺省 PUBLIC 特权
在非限制性数据库中,当自动创建该功能时,将向 PUBLIC 授予 EXECUTE 特权。
语法
模式为 SYSPROC。
例程参数
- tabschema
- 类型为 VARCHAR (128) 的输入参数,用于指定模式名称。
- 选项卡名称
- 类型为 VARCHAR (128) 的输入参数,用于指定表名,具体化查询表名或层次结构表名。
返回的信息
列名 | 数据类型 | 描述 |
---|---|---|
TABSCHEMA | VARCHAR(128) | table_schema -“表模式名”监视元素 |
TABNAME | VARCHAR(128) | table_name -“表名”监视元素 |
TABTYPE | CHAR(1) | 表类型:
|
DBPARTITIONNUM | SMALLINT | dbpartitionnum -“数据库分区号”监视元素 |
DATA_PARTITION_ID | INTEGER | data_partition_id -“数据分区标识”监视元素 |
AVAILABLE | CHAR(1) | 表的状态:
注: 通过不可恢复的装入前滚将使表进入不可用状态。
|
DATA_OBJECT_L_SIZE | BIGINT | 数据对象逻辑大小。 逻辑上为表分配的磁盘空间量 (以千字节为单位报告)。 逻辑大小为表识别的空间大小。 它可能小于物理上为表分配的空间量 (例如,在逻辑表截断的情况下)。 对于多维集群 (MDC) 和插入时间集群 (ITC) 表,此大小包括块映射对象的逻辑大小。 返回的大小将考虑逻辑上为表分配的完整扩展数据块,并且对于 DMS 表空间中创建的对象,将考虑扩展数据块映射页 (EMP) 扩展数据块的估算值。 此大小仅表示基本表的逻辑大小。 由其他列报告 LOB 数据、长数据、索引和 XML 对象耗用的空间。 |
DATA_OBJECT_P_SIZE | BIGINT | 数据对象物理大小,以千字节为单位报告。 对于 按行组织的 表,数据对象物理大小是物理分配给表的磁盘空间量。 对于 MDC 和 ITC 表,此大小包括块映射对象的大小。 返回的大小将考虑为表分配的完整扩展数据块,并包括您在 DMS 表空间中创建的对象的 EMP 扩展数据块。 此大小仅表示基本表的物理大小。 LOB 数据,长数据,索引和 XML 对象所使用的空间在其他列中报告。 对于 按列组织的 表,数据对象物理大小是仅为表元数据物理分配的磁盘空间量 (相对较小)。 按列组织的 表的用户数据存储在按列组织的数据对象中,其物理大小由 COL_OBJECT_P_SIZE 报告。 |
索引对象大小 | BIGINT | 索引对象逻辑大小。 逻辑上为表上定义的索引分配的磁盘空间量 (以千字节为单位)。 逻辑大小为表识别的空间大小。 它可能小于为保存表的索引数据而物理分配的空间量 (例如,在逻辑表截断的情况下)。 返回的大小将考虑逻辑上为索引分配的完整扩展数据块,对于 DMS 表空间中创建的索引,将考虑 EMP 扩展数据块的估算。 对于分区表的分区索引,这是包含 DATA_PARTITION_ID 标识的数据分区的索引分区的索引对象的逻辑大小。 此值不考虑分区表的非分区索引。 有关分区索引和非分区索引的信息,可以使用 ADMIN_GET_INDEX_INFO 函数。 |
索引对象大小 (INDEX_OBJECT_P_SIZE) | BIGINT | 索引对象物理大小。 为表上定义的索引物理分配的磁盘空间量 (以千字节为单位)。 返回的大小将考虑为索引分配的完整扩展数据块,并包括 DMS 表空间中创建的索引的 EMP 扩展数据块。 对于分区表的分区索引,这是包含 DATA_PARTITION_ID 标识的数据分区的索引分区的索引对象的物理大小。 此值不考虑分区表的非分区索引。 有关分区索引和非分区索引的信息,可以使用 ADMIN_GET_INDEX_INFO 函数。 |
LONG_OBJECT_L_SIZE | BIGINT | 长对象逻辑大小。 为表中的长字段数据逻辑分配的磁盘空间量 (以千字节为单位)。 逻辑大小为表识别的空间大小。 它可能小于物理上为保存表的长字段数据而分配的空间量 (例如,在逻辑表截断的情况下)。 返回的大小考虑了逻辑上为长字段数据分配的完整扩展数据块,以及对于 DMS 表空间中创建的长字段数据, EMP 扩展数据块的估计值。 |
LONG_OBJECT_P_SIZE | BIGINT | 长对象物理大小。 为表中的长字段数据物理分配的磁盘空间量 (以千字节为单位)。 返回的大小考虑了为长整型字段数据分配的完整扩展数据块,并包含在 DMS 表空间中为长整型字段数据创建的 EMP 扩展数据块。 |
LOB 对象 ECT_L_SIZE | BIGINT | LOB 对象逻辑大小。 以逻辑方式为表中的 LOB 数据分配的磁盘空间量 (以千字节为单位)。 逻辑大小为表识别的空间大小。 它可能小于物理上为保存表的 LOB 数据而分配的空间量 (例如,在逻辑表截断的情况下)。 大小包括逻辑上为 LOB 分配对象分配的空间。 返回的大小将考虑逻辑上为 LOB 数据分配的完整扩展数据块,对于 DMS 表空间中创建的 LOB 数据,将考虑 EMP 扩展数据块的估算值。 |
LOB 对象 ECT_P_SIZE | BIGINT | LOB 对象物理大小。 为表中的 LOB 数据物理分配的磁盘空间量 (以千字节为单位)。 大小包括为 LOB 分配对象分配的空间。 返回的大小将考虑为 LOB 数据分配的完整扩展数据块,并包含在 DMS 表空间中创建的 LOB 数据的 EMP 扩展数据块。 |
XML_OBJECT_L_SIZE | BIGINT | XML 对象逻辑大小。 以逻辑方式为表中的 XML 数据分配的磁盘空间量 (以千字节为单位)。 逻辑大小为表识别的空间大小。 它可能小于物理上为保存表的 XML 数据而分配的空间量 (例如,在逻辑表截断的情况下)。 返回的大小将考虑为 XML 数据逻辑分配的完整扩展数据块,以及在 DMS 表空间中创建的 XML 数据的 EMP 扩展数据块估计值。 |
XML_OBJECT_P_SIZE | BIGINT | XML 对象物理大小。 为表中的 XML 数据物理分配的磁盘空间量 (以千字节为单位)。 返回的大小考虑了为 XML 数据分配的完整扩展数据块,并包含 DMS 表空间中为 XML 数据创建的 EMP 扩展数据块。 |
索引类型 | SMALLINT | 指示当前正在用于表的索引的类型。 返回 2 ,因为使用了 type-2 索引。 |
REORG_PENDING | CHAR(1) | 值 "Y" 指示已将 reorg 建议的变更应用于表,并且需要经典 (脱机) reorg。 否则,将返回 "N"。 |
INPLACE_REORG_STATUS | VARCHAR(10) | 表上的原位置表重组的当前状态。 状态值可以是下列其中一个值:
|
装入状态 | VARCHAR(12) | 针对表的装入操作的当前状态。 状态值可以是下列其中一个值:
|
只读 READ_ACCESS_ONLY | CHAR(1) | 如果表处于 "只读访问" 状态,那么为 "Y" ,否则为 "N"。 不应将值 "N" 解释为表示表完全可访问。 如果正在进行装入或处于暂挂状态,那么值 "Y" 表示表数据可用于读访问,值 "N" 表示表不可访问。 同样,如果表状态设置为完整性暂挂 (请参阅 SYSCAT.TABLES STATUS 列) ,那么值 "N" 表示表不可访问。 |
NO_LOAD_RESTART | CHAR(1) | 值 "Y" 指示表处于部分装入状态,将不允许装入重新启动。 否则将返回值 "N"。 |
NUM_REORG_REC_ALTERS | SMALLINT | 自上次重组以来对此表执行的 reorg 建议变更操作 (例如,需要进行重组的变更操作) 的数目。 |
INDEXES_REQUIRE_REBUILD | CHAR(1) | 对于非分区表,如果对表定义的任何索引需要重建,那么为 "Y" ,否则为 "N"。 对于分区表,如果 DATA_PARTITION_ID 标识的数据分区的任何索引分区需要重建,那么为 "Y" ,否则为 "N"。 |
LARGE_RIDS | CHAR(1) | 指示表是否正在使用大行标识 (RID , 4 字节的页码和 2 字节的槽号)。 值 "Y" 指示表正在使用大型 RID ,而 "N" 指示它未使用大型 RID。 如果同时满足以下两个条件,那么将返回值 "P" (暂挂):
|
LARGE_SLOTS | CHAR(1) | 指示表是否正在使用大槽,这允许每页超过 255 行。 值 "Y" 表示表正在使用大槽,而 "N" 表示它未使用大槽。 如果同时满足以下条件,那么将返回值 "P" (暂挂):
|
DICTIONARY_SIZE | BIGINT | 表字典的大小 (以字节为单位) ,用于行压缩 (如果存在该表的行压缩字典)。 如果存在历史字典,那么此值是当前字典大小与历史字典大小的总和。 |
BLOCKS_PENDING_CLEANUP | BIGINT | blocks_pending_cleanup -“暂挂清除已转出块”监视元素 |
状态 STYPE | CHAR(1) |
|
XML 记录类型 | SMALLINT | 指示当前正在用于表的 XML 记录的类型。
|
RECLAIMABLE_SPACE | BIGINT | 指示通过对 DMS 表空间中的 MDC 或 ITC 表运行带有 RECLAIM 扩展数据块 选项的 REORG TABLE 命令可回收的磁盘空间量。 对于 按列组织的 表,此值指示上次运行 RUNSTATS 命令时找到的可用空间量。 报告磁盘空间 (以千字节计)。 对于任何其他表,该值为零。 |
XML_DICTIONARY_SIZE | BIGINT | 用于数据压缩的 XML 字典的大小 (以字节计) (如果存在 XML 存储对象的数据压缩字典)。 如果表不包含任何 XML 列,或者如果尚未创建压缩字典,那么值为 0。 |
AMT_STATUS | VARCHAR(12) | 针对表的 ADMIN_MOVE_TABLE 存储过程调用的当前状态。 返回值 "IN_PROGRESS" 或空值 (如果没有对表进行移动)。 |
SPARSE_BLOCKS | BIGINT | 对于插入时间集群 (ITC) 表,此字段表示表中使用较少的块数。 这是一组块,如果使用 RECLAIM 扩展数据块选项调用 REORG TABLE 命令,那么将合并这些块。 |
stats_rows_modified | BIGINT | stats_rows_modified - 自最近一次 RUNSTATS 以来修改的行数 |
rts_rows_modified | BIGINT | rts_rows_modified - 自最近一条实时统计信息之后修改的行数 |
stats_dbpartition | CHAR(3) | stats_dbpartition - 自动收集统计信息指示器 |
COL_OBJECT_L_SIZE | BIGINT | col_object_l_size - 按列组织数据对象逻辑大小 |
COL_OBJECT_P_SIZE | BIGINT | col_object_p_size - 按列组织数据对象物理大小 |
使用说明
- 如果同时指定了 tabschema 和 tabname ,那么将仅返回该特定表的信息。
- 如果指定了 tabschema ,但 tabname 为 NULL 或空字符串 ("),然后返回给定模式中所有表的信息。
- 如果 tabschema 为 NULL 或空字符串 (") 并且指定了 tabname ,那么将返回错误。 要检索特定表的信息,必须通过模式和表名来标识该表。
- 如果 tabschema 和 tabname 都为 NULL 或空字符串 ("),那么将返回所有表的信息。
- 如果 tabschema 或 tabname 不存在,或者 tabname 不对应于表名 (类型 T) ,具体化查询表名 (类型 S) 或层次结构表名 (类型 H) ,那么将返回空结果集。
- 当 ADMIN_GET_TAB_INFO 表函数正在检索给定表的数据时,它将在 SYSTABLES 的相应行上获取共享锁定,以确保返回的数据的一致性 (例如,确保在检索该表的信息时不删除该表)。 只有在检索表的大小和状态信息时,而不是在表函数调用的持续时间内,才会保持锁定。
- 为 SMS 表空间中的表报告的物理大小与逻辑大小相同。
- 当原地重组在表上处于活动状态时,将不会计算数据对象 (DATA_OBJECT_P_SIZE) 的物理大小。 将仅返回逻辑大小。 您可以通过查看 INPLACE_REORG_STATUS 输出列来确定表中的原位置重组是否处于活动状态。
示例
SELECT * FROM TABLE (SYSPROC.ADMIN_GET_TAB_INFO('DBUSER1', 'EMPLOYEE'))
AS T
SELECT (data_object_p_size + index_object_p_size + long_object_p_size +
lob_object_p_size + xml_object_p_size + col_object_p_size) as total_p_size
FROM TABLE( SYSPROC.ADMIN_GET_TAB_INFO( 'DBUSER1', 'EMPLOYEE' )) AS T
计算如果将表移动到另一个表空间 (其中新表空间具有与原始表空间相同的页面大小和扩展数据块大小) ,将需要多少空间:SELECT (data_object_l_size + index_object_l_size + long_object_l_size +
lob_object_l_size + xml_object_l_size + col_object_l_size) as total_l_size
FROM TABLE( SYSPROC.ADMIN_GET_TAB_INFO( 'DBUSER1', 'EMPLOYEE' )) AS T
SELECT SUBSTR(TABSCHEMA,1,10) AS TBSCHEMA, SUBSTR(TABNAME,1,10) AS TBNAME,
DICTIONARY_SIZE + XML_DICTIONARY_SIZE AS TOTAL_DICTIONARY_SIZE
FROM TABLE(SYSPROC.ADMIN_GET_TAB_INFO('DBUSER1','EMPLOYEE'))
SELECT RECLAIMABLE_SPACE
FROM TABLE(SYSPROC.ADMIN_GET_TAB_INFO('SAMPLE','STAFF'))