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 特权。

示例

示例 1: 检索所有表的大小和状态信息
SELECT * FROM SYSIBMADM.ADMINTABINFO
示例 2: 确定大量稀疏填充的表所使用的物理空间量。
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
示例 3: 标识有资格使用大型 RID 但当前未启用以使用大型 RID 的表。
SELECT TABSCHEMA, TABNAME FROM SYSIBMADM.ADMINTABINFO 
   WHERE LARGE_RIDS = 'P'
示例 4: 检查针对表 T1 收集的当前统计信息类型
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 特权。

语法

Read syntax diagramSkip visual syntax diagramADMIN_GET_TAB_INFO(tabschema ,tabname)

模式为 SYSPROC。

例程参数

tabschema
类型为 VARCHAR (128) 的输入参数,用于指定模式名称。
选项卡名称
类型为 VARCHAR (128) 的输入参数,用于指定表名,具体化查询表名或层次结构表名。

返回的信息

表 1. ADMINTABINFO 管理视图和 ADMIN_GET_TAB_INFO 返回的信息
列名 数据类型 描述
TABSCHEMA VARCHAR(128) table_schema -“表模式名”监视元素
TABNAME VARCHAR(128) table_name -“表名”监视元素
TABTYPE CHAR(1) 表类型:
  • "H" = 层次结构表
  • "S" = 具体化查询表
  • "T" = 表
DBPARTITIONNUM SMALLINT dbpartitionnum -“数据库分区号”监视元素
DATA_PARTITION_ID INTEGER data_partition_id -“数据分区标识”监视元素
AVAILABLE CHAR(1) 表的状态:
  • "N" = 表不可用。 如果表不可用,那么与大小和状态相关的所有其他输出列都将为 NULL。
  • "Y" = 表可用。
注: 通过不可恢复的装入前滚将使表进入不可用状态。
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) 表上的原位置表重组的当前状态。 状态值可以是下列其中一个值:
  • ABORTED (处于 PAUSED 状态,但无法恢复; 需要停止)
  • EXECUTING
  • NULL (如果未对表执行原位置重组)
  • 已暂停
装入状态 VARCHAR(12) 针对表的装入操作的当前状态。 状态值可以是下列其中一个值:
  • 正在进行
  • NULL (如果没有为该表进行装入,并且该表未处于装入暂挂状态)
  • 待定
只读 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" (暂挂):
  • 该表支持大型 RID ,即,该表位于大型表空间中。
  • 至少有一个表的索引尚未重组或重建,因此该表仍在使用 4 字节的 RID。 必须转换表或索引。
此列返回 按列组织的 表的空值,因为 RID 概念不适用。
LARGE_SLOTS CHAR(1) 指示表是否正在使用大槽,这允许每页超过 255 行。 值 "Y" 表示表正在使用大槽,而 "N" 表示它未使用大槽。 如果同时满足以下条件,那么将返回值 "P" (暂挂):
  • 该表支持大槽,即该表位于大表空间中。
  • 尚未对表执行脱机表重组或表截断操作,因此它仍在使用每页最多 255 行。
此列返回 按列组织的 表的空值,因为槽概念不适用。
DICTIONARY_SIZE BIGINT 表字典的大小 (以字节为单位) ,用于行压缩 (如果存在该表的行压缩字典)。 如果存在历史字典,那么此值是当前字典大小与历史字典大小的总和。
BLOCKS_PENDING_CLEANUP BIGINT blocks_pending_cleanup -“暂挂清除已转出块”监视元素
状态 STYPE CHAR(1)
  • "F" = 没有表或索引扫描的系统生成的统计信息。 这些统计信息存储在内存中,与存储在系统目录中的统计信息不同。 这是一种临时状态,最终完整的统计信息将由数据库系统收集并存储在系统目录中。
  • "A" = 系统异步收集的统计信息。 数据库系统已通过后台进程自动收集统计信息并将其存储在系统目录中。
  • "S" = 系统同步收集的统计信息。 在 SQL 语句编译期间,数据库系统已自动收集统计信息。 这些统计信息存储在内存中,与存储在系统目录中的统计信息不同。 这是一种临时状态,最终数据库系统会将统计信息存储在系统目录中。
  • "U" = 用户收集的统计信息。 统计信息收集由用户通过诸如 RUNSTATS , CREATE INDEX , LOAD 和 REDISTRIBUTE 之类的实用程序或通过手动更新系统目录统计信息来启动。
  • NULL = 未知类型
XML 记录类型 SMALLINT 指示当前正在用于表的 XML 记录的类型。
  • 1 (如果正在使用 type-1 (单节点) XML 记录格式)。
  • 2 (如果正在使用 type-2 (多节点) XML 记录格式)。
  • 如果表没有 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 - 按列组织数据对象物理大小

使用说明

  • 如果同时指定了 tabschematabname ,那么将仅返回该特定表的信息。
  • 如果指定了 tabschema ,但 tabname 为 NULL 或空字符串 ("),然后返回给定模式中所有表的信息。
  • 如果 tabschema 为 NULL 或空字符串 (") 并且指定了 tabname ,那么将返回错误。 要检索特定表的信息,必须通过模式和表名来标识该表。
  • 如果 tabschematabname 都为 NULL 或空字符串 ("),那么将返回所有表的信息。
  • 如果 tabschematabname 不存在,或者 tabname 不对应于表名 (类型 T) ,具体化查询表名 (类型 S) 或层次结构表名 (类型 H) ,那么将返回空结果集。
  • 当 ADMIN_GET_TAB_INFO 表函数正在检索给定表的数据时,它将在 SYSTABLES 的相应行上获取共享锁定,以确保返回的数据的一致性 (例如,确保在检索该表的信息时不删除该表)。 只有在检索表的大小和状态信息时,而不是在表函数调用的持续时间内,才会保持锁定。
  • 为 SMS 表空间中的表报告的物理大小与逻辑大小相同。
  • 当原地重组在表上处于活动状态时,将不会计算数据对象 (DATA_OBJECT_P_SIZE) 的物理大小。 将仅返回逻辑大小。 您可以通过查看 INPLACE_REORG_STATUS 输出列来确定表中的原位置重组是否处于活动状态。

示例

示例 1: 检索表 DBUSER1.EMPLOYEE。
SELECT * FROM TABLE (SYSPROC.ADMIN_GET_TAB_INFO('DBUSER1', 'EMPLOYEE')) 
   AS T
示例 2: 假设存在非分区表 (DBUSER1.EMPLOYEE) ,将所有关联对象 (例如,索引和 LOB) 存储在单个表空间中。 计算表空间中表正在使用的物理空间量:
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
示例 3: 确定表 DBUSER1.EMPLOYEE。
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'))
示例 4: 确定可从多维集群表中回收的空间量 SAMPLE.STAFF:
SELECT RECLAIMABLE_SPACE 
   FROM TABLE(SYSPROC.ADMIN_GET_TAB_INFO('SAMPLE','STAFF'))