使用 SYSSBSPACENAME 配置参数来指定 sbspace 的名称,数据库服务器在其中存储分片级别数据分布统计信息,syfragsdist 系统目录表在其 encsdist 列中存储为 BLOB 对象。
还使用 SYSSBSPACENAME 来指定 sbspace 的名称,数据库服务器在其中存储 UPDATE STATISTICS 语句为某些用户定义的数据类型收集的统计信息。
- onconfig.std 值
- 未设置。
- 如未出现
-
0
- 值
- 最多 128 字节。SYSSBSPACENAME 必须是唯一的,以一个字母或下划线开头,且仅包含数字、字母、下划线或 $ 字符。
- 生效
- 编辑 onconfig 文件并重启数据库服务器之后。
- 当您通过运行 onmode -wf 命令在 onconfig 文件中动态地重置该值时。
- 当您通过运行 onmode -wm 命令重置内存中的该值时。
-
参考
-
- 更新统计信息,在 GBase 8s 性能指南 中关于个别查询性能的章节中
- sbspace 特征,在 GBase 8s 性能指南 中关于配置对 I/O 影响的章节中
- 写用户定义的统计信息,在 GBase 8s 用户定义的例程和数据类型开发者指南
中的性能章节中
- 提供一列的统计信息数据,在 GBase 8s DataBlade API 程序员指南 中
用法
要支持分片级别统计信息,您必须指定一个 sbspace 的名称作为 SYSSBSPACENAME 设置,且您必须分配那个 sbspace(通过使用 onspaces 实用程序,如下所示。对于任何其 STATLEVEL 属性设置为 FRAGMENT 的表,如果未设置 SYSSBSPACENAME,或如果未正当地分配 SYSSBSPACENAME
设置到的那个 sbspace,则数据库服务器返回错误)。
对于分片表中一列的分布统计信息,您可根据这个公式估计该 sbspace 要求的存储容量为多少字节:
nfrags * 1.25 * ((10000 / resolution) * ((2 * column_width) + 6))
此处 1.25 接近溢出 GBase_8t bin 的数目。公式还包括这些变量:
- column_width 是 UPDATE STATISTICS 语句指定列的以字节计的宽度。
- nfrags 是表的分片数。
- resolution 是计算分布的 UPDATE STATISTICS 语句的 resolution 子句中
percent 值。
resolution 还是
dbschema -hd table 命令为该列分布统计信息显示的内容。
SYSSBSPACENAME 还指定 sbspace 的名称,数据库服务器在其中存储 UPDATE STATISTICS 语句为某些用户定义的数据类型收集的统计信息。通常情况下,数据库服务器在 sysdistrib 系统目录表中存储统计信息。
请不要混淆 SYSSBSPACENAME 配置参数与 SBSPACENAME 配置参数。
由于用户定义的数据类型的数据分布可很大,您有在 sbspace 中存储它们,而不存储在 sysdistrib 系统目录表中的选项。如果您在 sbspace
中存储数据分布,则请使用 DataBlade API 或 GBase 8s ESQL/C 功能来检查统计信息。
即使您以 SYSSBSPACENAME 参数指定一个 sbspace,在可使用它之前,您也必须以
onspaces 实用程序的
-c -S 选项创建该 sbspace。当发生下列情况之一时,数据库服务器验证这个 sbspace 的名称:
- 当数据库服务器执行带有 MEDIUM 或 HIGH 关键词的 UPDATE STATISTICS 语句时,数据库服务器尝试将多重表示类型的数据分布写到 SYSSBSPACENAME。
- 当数据库服务器执行带有 DROP DISTRIBUTIONS 关键词的 UPDATE STATISTICS 语句时,数据库服务器尝试将多重表示类型的数据分布删除到
SYSSBSPACENAME。
如果未设置 SBSSPACENAME,或如果未分配存储到那个 sbspace,则数据库服务器可能存储分布统计信息,以便 UPDATE STATISTICS 操作以错误
-9814失败。
虽然您可在 SYSSBSPACENAME 中指定的 sbspace 中存储智能大对象,但推荐将分布统计信息与智能大对象保持在分开的 sbspace 中,因为:
- 您要避免当查询正在访问智能大对象,且查询优化器正在使用分布来确定查询计划时发生磁盘争用。
- 当每一 sbspace 用于不同的目的,磁盘空间花费较长时间才填满。