CREATE USAGE LIST 语句

CREATE USAGE LIST 语句定义用法列表。 用法列表是一个数据库对象,用于监视在执行期间引用了特定表或索引的所有唯一节 (DML 语句)。

调用

此语句可嵌入应用程序中或者以交互方式发出。 它是一个可执行语句,仅当 DYNAMICRULES 运行行为对于程序包有效时才能动态编译 (SQLSTATE 42509)。

授权

语句的授权标识所拥有的特权必须包含下列其中一项特权:
  • DBADM 权限
  • SQLADM 权限

语法

Read syntax diagramSkip visual syntax diagramCREATE USAGE LISTusage-list-nameFOR TABLEINDEX object-name LIST SIZE 100LIST SIZEinteger-value WHEN FULL WRAPWHEN FULL DEACTIVATE INACTIVE ON START DATABASEACTIVE ON START DATABASE

描述

使用列表名称
命名用法列表。 usage-list-name(包括隐式或显式限定符) 不得标识目录中描述的用法列表 (SQLSTATE 42710)。 如果使用列表以模式名显式限定,那么模式名不得以字符 "SYS" 开头 (SQLSTATE 42939)。
TABLE 对象名
指定要为其定义用法列表的表。 object-name(包括隐式或显式限定符) 必须指定在目录中定义的表 (SQLSTATE 42704)。 该名称不得指定别名,目录表,已创建的临时表,层次结构表,已拆离的表,昵称,类型表或视图 (SQLSTATE 42809)。 如果使用模式名显式限定表,那么模式名不得以字符 "SYS" 开头 (SQLSTATE 42939)。
INDEX 对象名
指定为其定义用法列表的索引。 object-name(包括隐式或显式限定符) 必须指定在目录中定义的索引 (SQLSTATE 42704)。 不支持对非类型表或具体化查询表以外的表定义的索引 (SQLSTATE 42809)。 该名称必须指定物理索引; 块索引 (BLOK) ,集群索引 (CLUS) ,维块索引 (DIM) ,常规索引 (REG) 和基于 XML 列的物理索引 (XVIP)。 不支持所有其他索引类型 (SQLSTATE 42809)。 如果使用模式名称显式限定索引,那么模式名称不得以字符 "SYS" 开头 (SQLSTATE 42939)。
LIST SIZE 整数值
指定此列表的大小为 integer-value 个条目。 可以指定的最小大小为 10 ,最大大小为 5000 (SQLSTATE 428B7)。 缺省大小为 100 个条目。
当满时
指定当活动使用情况列表变满时执行的操作。 缺省值是在列表变满时换行。
WRAP
指定用法列表将合并并替换最旧的条目。
DEACTIVATE
指定使用情况列表取消激活。
启动数据库时处于不活动状态
指定每当激活数据库时不激活使用情况列表以进行监视。 必须使用 SET USAGE LIST 语句显式启动集合。 该值为缺省值。
启动数据库时有效
指定每当激活数据库时都自动激活使用情况列表以进行监视。

注意

  • 具有唯一键的跟踪部分: 使用情况列表保留引用了特定对象的所有唯一部分 (仅限 DML 语句) 的跟踪。 使用可执行标识的唯一键 (表示执行引用的部分) 和引用时的监视时间间隔标识在列表中聚集引用。 每个列表条目都保留与该条目相关的部分执行计数以及一组统计信息,这些统计信息概述了该部分在这些执行中对对象的影响。
  • 用法列表发布时间: 在落实 CREATE USAGE LIST 语句时,用法列表设置为 "已发布"。
  • 内存分配: 第一次为其定义使用情况列表的对象被部分引用时,将分配内存。
  • 分区数据库环境Db2 pureScale® 环境中的内存分配 :如果分区表或索引的使用列表状态设置为活动,则会在数据分区首次被部分引用时为每个数据分区分配内存。 同样,在 分区数据库环境Db2 pureScale 环境中,将在每个活动成员上分配内存。 如果某个成员在激活时不可用,那么下次激活该成员时将分配内存 (如果使用情况列表的状态仍设置为 active)。 这在将成员添加到集群时也适用。
  • 指定 WHEN FULL DEACTIVATE 时使用情况列表的状态: 如果用法列表是使用子句 WHEN FULL DEACTIVATE 创建的,那么每个成员的用法列表的状态将单独设置为不活动。 同样,对于分区表和索引,将每个数据分区的使用情况列表的状态分别设置为 "不活动"。
  • 隐式重新激活活动用法列表: 如果 INACTIVE ON START DATABASE 用法列表的状态在 分区数据库环境Db2 pureScale 环境中设置为 active ,那么其行为类似于 ACTIVE ON START DATABASE 子句,直到用法列表的状态显式设置为 inactive 或重新启动实例为止。 即,如果当数据库成员处于取消激活或脱机状态,并且该数据库成员随后重新激活时,使用情况列表处于活动状态,那么此成员的使用情况列表也将隐式重新激活。
  • 非活动使用列表在数据库成员重新激活后保持非活动状态: 如果在分区数据库环境Db2® pureScale 环境中将 ACTIVE ON START DATABASE 使用列表的状态设置为非活动,则其行为类似于 INACTIVE ON START DATABASE 子句,直到使用列表的状态被显式设置为活动或实例被回收。 即,如果当数据库成员处于取消激活或脱机状态时,使用情况列表的状态处于不活动状态,并且该数据库成员随后被重新激活,那么此成员的使用情况列表的状态将保持不活动状态。
  • 多个用法列表: 可以为同一个表或索引创建多个用法列表,但是建议仅激活其中一个用法列表。 激活所有这些项会影响数据库性能和内存使用情况。
  • 激活和取消激活使用情况列表: 请参阅关于激活和取消激活使用情况列表的 SET USAGE LIST STATE 语句的 "注释" 部分。
  • 使用情况列表大小注意事项: 当使用情况列表的状态设置为活动时,将从监视器堆中分配使用情况列表的内存。 在最大列表大小设置中,用法列表大约为 2MB。 对于分区表或索引,将为每个数据分区分配内存。 例如,如果分区表定义了三个数据分区,那么将分配大约 6MB 的内存。 因此,激活多个使用情况列表会对监视器堆施加更多内存需求。 因此,建议选择合理的列表大小,或者将 mon_heap_sz 配置参数设置为 AUTOMATIC ,以便数据库管理器管理监视器堆大小。
  • 性能注意事项:为维护高性能,请创建用法列表以便可将它们限制为收集所需信息时需要的量。 每个用法列表都需要系统内存;系统性能可能会降低,因为激活了其他用法列表。

示例

  • 示例 1: 为表 SAYYID.ACCOUNTS 。
    CREATE USAGE LIST USL_ACC FOR TABLE SAYYID.ACCOUNTS
  • 示例 2: 为索引 BIRD.SHOPPINGIND 创建用法列表 USL_SHOPPING_IND ,其中包含当列表变满时打包的 50 个条目的列表。
    CREATE USAGE LIST USL_SHOPPING_IND FOR INDEX BIRD.SHOPPINGIND
       LISTSIZE 50
       WHEN FULL WRAP
  • 示例 3: 为表 MIKE.PAYROLL 的列表大小为 200 个条目,这些条目将在列表变满时取消激活,并且将在数据库激活时自动开始收集。
    CREATE USAGE LIST USL_PAYROLL FOR TABLE MIKE.PAYROLL
       LISTSIZE 200
       WHEN FULL DEACTIVATE
       ACTIVE ON START DATABASE
  • 示例 4: 为分区表 JACOBO.EMPLOYEES ,当列表变满时将取消激活这些条目。
    CREATE USAGE LIST USL_EMP FOR TABLE JACOBO.EMPLOYEES
       LIST SIZE 500
       WHEN FULL DEACTIVATE
    激活使用情况列表以进行监视时,将为每个数据分区分配 500 个条目的列表。
  • 示例 5: 为表 SHAKTI.PARTS ,其列表大小为 20 个条目,将在数据库激活时手动激活这些条目,并在其变满时进行合并。
    CREATE USAGE LIST USL_PARTS FOR TABLE SHAKTI.PARTS
       LIST SIZE 20
       INACTIVE ON START DATABASE
       WHEN FULL WRAP