返回首页

gbase数据、南大通用产品文档:GBase8a调用SQLBindCol 时报错Invalid

更新日期:2024年09月11日

descriptor index
正常情况下传给SQLBindCol 的第二个参数ColumnNumber 为0 或者大于结
果集的列数时会报Invalid descriptor index 错误。
当传入的ColumnNumber 参数正确时,由于某种原因gclusterd 主动 断开
了连接,也会导致SQLBindCol 报错Invalid
descriptor
index。比如当结果集
比较大时,ODBC 客户端应用不能及时从ODBC 读取结果集,导致gclusterd 向
ODBC 发送数据时写超时。这种情况在 gclusterd 的参数
"gcluster_send_client_data_timeout"默认值30 时比较常见。这时需要修改
该参数值为一个较 大值或者直接修改为0。

使用 FILLFACTOR 配置参数来指定索引页的充满程度。低值提供索引中的成长空间。高值
压缩索引。
如果索引充满(100%),则任何新插入都会导致分裂节点。您还可设置 FILLFACTOR 作为
CREATE INDEX 语句的选项。在 CREATE INDEX 语句上的设置取代 ONCONFIG 文件值。

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

您不可将 FILLFACTOR 配置参数用于树状索引的森林。
onconfig.std 值
FILLFACTOR 90

1 - 100
单位
百分比
生效
当构建索引时。现有的索引不更改。要使用新值,就必须重新构建索引。
当您通过运行 onmode -wf 命令在 onconfig 文件中动态地重置该值时。
当您通过运行 onmode -wm 命令重置内存中的该值时。

数据库服务器管理员有时必须跟踪特定表的磁盘使用。表空间包含分配到给定表或表分段
(如果表已分段)的所有磁盘空间。独立表空间包含已分配给关联索引的磁盘空间。
例如,表空间与块的任意特定部分或者甚至是任意特定块都不一致。组成表空间的索引和
数据可能散射在您所有块中。然而,表空间代表了专用于特定表的块中空间的方便记帐实
体。

表中的最大表空间数
您可以在表中指定最多达 2**20(或 1,048,576)的表空间数。
表和索引表空间
表表空间包含下列类型的页:

分配给数据的页

分配给索引的页

用于在数据库空间中存储 TEXT 或 BYTE 数据的页(不是用于在 BLOB 空间中
存储 TEXT 或 BYTE 数据的页)

跟踪页在表扩展数据块内使用的位图页
索引表空间包含下列类型的页:

分配给索引的页

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

跟踪页在索引扩展数据块内使用的位图页
下表说明了用于构成部分 stores_demo 数据库的三个表的表空间。每个表空间上只有一个
表(或表分段)。索引位于独立于关联表的表空间中。BLOB 页代表存储在数据库空间中
的 TEXT 或 BYTE 数据。
图: stores_demo 数据库中的样本表空间


扩展数据块交错
数据库服务器将属于表空间的页分配为扩展数据块。虽然扩展数据块中的页是连续的,但
扩展数据块还是可能会分散在表所在整个数据库空间中(甚至在不同的块上)。
下图描绘的情境是:两个非连续扩展数据块属于 table_1 的表空间,而第三个扩展数据块
属于 table_2 的表空间。table_2 扩展数据块位于第一个 table_1 扩展数据块和第二个
table_1 扩展数据块之间。当发生这种情况时,扩展数据块会交错。 因为在 table_1 中的
顺序访问搜索需要磁盘头在 table_2 扩展数据块中进行搜寻,因此性能会比 table_1 扩展
数据块连续时要差。
有关如何避免和消除交错的扩展数据块的指示信息,
请参阅
《GBase 8s
性能指南》。
图: 属于一个数据库空间中两个不同表空间的三个扩展数据块


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