为具有用户定义的数据类型的列更新统计信息

程序员可以编写函数来收集具有用户定义的数据类型的列的统计信息。可以将用户定义的数据类型的数据分发存储在智能大对象空间中。

由于数据库服务器无法获取有关用户定义的数据类型 (UDT) 的性质和使用方面的信息,因此它不能为用户定义的数据类型收集 syscolumns 系统目录表的 colmincolmax 列的统计信息。要为具有用户定义的数据类型的列收集统计信息,程序员必须编写扩展 UPDATE STATISTICS 语句的函数。有关更多信息,请参阅 GBase 8s 用户定义的例程与数据类型开发者指南 中的有关性能的章节。

由于用户定义的数据类型的数据分发可能非常庞大,您可以选择将它们存储在智能大对象空间,而非 sysdistrib 系统目录表。

要将用户定义的数据类型的数据分发信息存储于智能大对象空间,请执行以下操作:

  1. 使用 onspaces -c -S 命令来创建智能大对象空间。

    要确保数据分发的可恢复性,可在 -Df 选项中指定 LOGGING=ON ,如以下样本所示:

    % onspaces -c -S distrib_sbsp -p /dev/raw_dev1 -o 500 -s
                20000
          -m /dev/raw_dev2 500 -Ms 150 -Mo 200 -Df
                "AVG_LO_SIZE=32,LOGGING=ON"
    

    有关调整智能大对象空间大小的信息,请参阅估计智能大对象占用的页数

    有关指定智能大对象空间的存储特征的更多信息,请参阅影响智能大对象空间 I/O 的配置参数

  2. 在配置参数 SYSSBSPACENAME 中指定步骤 1 创建的智能大对象空间。
  3. 将 UPDATE STATISTICS 语句与 MEDIUM 或 HIGH 关键字一起运行以生成数据分发时,通过用户定义的数据类型指定列。

要打印具有用户定义的数据类型的列的数据分发信息,请使用 dbschema -hd 选项。