返回首页

gbase数据、南大通用产品文档:GBase8s禁用 I/O 错误

更新日期:2024年09月11日

GBase 8s 将禁用 I/O 错误分为两大类:破坏性的和非破坏性的。当包含数据库的磁盘在某
些方面受到损坏时,禁用 I/O 错误是破坏性的。该类型的事件会威胁数据的完整性,并且
数据库服务器会将块和数据库空间标记为脱机。数据库服务器禁止对损坏磁盘进行访问,
直至您修复或替换该磁盘并执行物理复原和逻辑复原。

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 345 -
当错误不威胁数据的完整性时,禁用 I/O 错误是非破坏性的。当有人意外地断开电缆连接
时,会发生非破坏性的错误,您有可能擦除了设置为指向块的符号链接,或可能磁盘控制
器被损坏。
在数据库服务器将某 I/O 错误视为禁用错误之前,该错误必须符合两个标准。首先,错误
必须是在数据库服务器尝试对至少具有以下某个特征的块执行操作时发生:

块没有镜像。

与所涉及的块成对的主块或镜像块脱机。
其次,错误必须是在数据库服务器尝试执行以下操作之一不成功时发生:

在块上搜索、读取或写入

打开块

验证有关首次使用的页的块信息是否有效
数据库服务器在其打开块之后将该验证作为稳定情况检查而执行。
可以防止数据库服务器在您调查禁用 I/O 错误时将数据库空间标记为脱机。如果您发现问
题是小问题(如电缆松动),您可以将数据库服务器变为脱机,然后再次变为联机,不用
从备份复原受影响的数据库空间。如果您发现问题更为严重(如磁盘损坏),您可以使
用 onmode -O 将受影响的数据库空间标记为脱机并继续处理。

使用 SYSSBSPACENAME 配置参数来指定 sbspace 的名称,
数据库服务器在其中存储分片级
别数据分布统计信息,syfragsdist 系统目录表在其 encsdist 列中存储为 BLOB 对象。
还使用 SYSSBSPACENAME 来指定 sbspace 的名称,数据库服务器在其中存储 UPDATE
STATISTICS 语句为某些用户定义的数据类型收集的统计信息。
onconfig.std 值
未设置。
如未出现
0

最多 128 字节。SYSSBSPACENAME 必须是唯一的,以一个字母或下划线开头,且仅包含数
字、字母、下划线或 $ 字符。
生效
编辑 onconfig 文件并重启数据库服务器之后。
当您通过运行 onmode -wf 命令在 onconfig 文件中动态地重置该值时。
当您通过运行 onmode -wm 命令重置内存中的该值时。
参考
l 更新统计信息,在 GBase 8s 性能指南 中关于个别查询性能的章节中

GBase 8s 管理员参考
南大通用数据技术股份有限公司 - 161 -

l sbspace 特征,在 GBase 8s 性能指南 中关于配置对 I/O 影响的章节中
l 写用户定义的统计信息,在 GBase 8s 用户定义的例程和数据类型开发者指南 中
的性能章节中
l 提供一列的统计信息数据,在 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_8s bin 的数目。公式还包括这些变量:
l column_width 是 UPDATE STATISTICS 语句指定列的以字节计的宽度。
l nfrags 是表的分片数。
l 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 的名称:
l 当数据库服务器执行带有 MEDIUM 或 HIGH 关键词的 UPDATE STATISTICS 语句时,
数据库服务器尝试将多重表示类型的数据分布写到 SYSSBSPACENAME。
l 当数据库服务器执行带有 DROP DISTRIBUTIONS 关键词的 UPDATE STATISTICS 语
句时,数据库服务器尝试将多重表示类型的数据分布删除到 SYSSBSPACENAME。
如果未设置 SBSSPACENAME,或如果未分配存储到那个 sbspace,则数据库服务器可能存储
分布统计信息,以便 UPDATE STATISTICS 操作以错误 -9814失败。

GBase 8s 管理员参考
南大通用数据技术股份有限公司 - 162 -

虽然您可在 SYSSBSPACENAME 中指定的 sbspace 中存储智能大对象,
但推荐将分布统计信
息与智能大对象保持在分开的 sbspace 中,因为:
l 您要避免当查询正在访问智能大对象,且查询优化器正在使用分布来确定查询计划
时发生磁盘争用。
l 当每一 sbspace 用于不同的目的,磁盘空间花费较长时间才填满。

15:17:41
all