返回首页

gbase数据、南大通用产品文档:GBase8a

更新日期:2024年09月11日

GBASE_BIND
 结构说明
该结构用于语句输入(发送给服务器的数据值)和输出(从服务器返回的
结果值)
。对于输入,它与gbase_stmt_bind_param()一起使用,用于将参数数
据值绑定到缓冲区上,以供gbase_stmt_execute()使用。对于输出,它与
gbase_stmt_bind_result()一起使用,用于绑定结果缓冲区,以便用于用
gbase_stmt_fetch()以获取行。
GBASE_BIND 结构包含下述供应用程序使用的成员。每个成员用于输入和输
出,但在某些时候,也能用于不同的目的,具体情况取决于数据传输的方向。
 结构成员

GBase 8a 程序员手册C API 篇


- 52 -

南大通用数据技术股份有限公司
名 称
类 型
描 述
buffer_type
enum_field_typ
es
缓冲的类型。
buffer
void *
指向缓冲区的指针。
buffer_length
unsigned long
缓冲区的实现大小,单位为字节。
length
unsigned long*
指向unsigned long 变量的指针,
该变量指明了存储在*buffer 中数
据的实际字节数。
is_null
gs_bool*
该成员指向gs_bool 变量,如果值
为NULL,该变量为“真”,如果值为
非NULL,该变量为“假”。“is_null”
是指向布尔类型的指针,而不是布
尔标量,
以便能以下述方式使用它:

1、如果数据值总是
NULL,使用
GBASE_TYPE_NULL 绑
定列。
2、如果数据值总是
NOT NULL,设置
is_null =
(gs_bool*) 0。
3、在所有其他情况
下,应将is_null 设
置为gs_bool 变量的
地址,并在各次执行
之间恰当地更改变量
的值,以指明数据值
是NULL 或NOT NULL。

is_unsigned
gs_bool
对于无符号类型,应将
“is_unsigned”设置为“真”,对于带
符号类型,应将其设置为“假”。



GBase 8a 程序员手册C API 篇
南大通用数据技术股份有限公司

- 53 -
名 称
类 型
描 述
error
gs_bool
对于输出,该成员用于通报数据截
短错误。必须通过调用带有
GBASE_REPORT_DATA_TRUNCATION
选项的gbase_options(),启用截
短通报功能。允许该功能后,
gbase_stmt_fetch()返回
GBASE_DATA_TRUNCATED,而且对于
出现截短情况的参数,在
GBASE_BIND 结构中,错误标志为
“真”。截短指明丢失了符号或有效
位数,或字符串过长以至于无法容
纳在1列中。

使用OGG 同步工具,OGG 发送端报错导致发
送端异常关闭
问题现象
OGG 发送端报错could not find archive log for sequence 16 thread 1
under default
destinations SQL..导致发送端异常关闭。
原因分析

GBase 8a MPP Cluster 最佳实践
5 FAQ
文档版本(2022-02-11)
南大通用数据技术股份有限公司
80
排查问题时意外清空了oracle 归档日志,导致OGG 发送端异常关闭。
解决方法

如果归档日志有备份,恢复归档日志即可,最好使用这种方法,可避免增量
同步过程中的数据丢失问题。

如果归档日志没有备份,无法恢复,使用了下面的方法:
i. OGG 发送端执行./ggsci 进入命令行界面执行命令:
alter extrkafka begin now
ii. 进入接收端命令行界面,执行:
alter rkafka begin now
说明
上面两个命令表示:从现在开始进行增量同步。
iii. 进入发送端执行
start extkafka
iv. 进入接收端执行
start rkafka
v. 问题解决。

操作系统参数调整建议
GBase 8a 集群在安装时会对需要调整的操作系统参数进行自动调整,
v8.6 版本在安
装时由InstallTar.py 程序完成对操作系统参数的配置;v9.5 版本需要在安装前执行
SetSysEnv.py 程序完成操作系统参数的配置。
如果修改或配置操作系统参数请参考附录6.1。通常在GBase 8a 集群运行期间,如
遇到参数被修改可以参照6.1 章节进行调整。
在部分操作系统中(如redhat6.7),修改打开文件数的配置,除修改limits.conf 文
件外,
还需要修改/etc/security/limits.d/90-nproc.conf 文件,
需要手动在90-nproc.conf
文件中增加如下内容:
*
soft
nproc
655360
磁盘调度策略建议
数据库属于I/O 密集型应用,建议GBase 集群节点设置数据存储所在的磁盘I/O 调
度策略如下:
机械磁盘的调度策略建议为deadline。磁盘I/O 调度策略修改方式:

echo deadline > /sys/block/$数据所在的盘符/queue/scheduler
这种修改方法为修改当前系统配置,操作系统重启后需重新设置。
或者

修改/etc/default/grub 文件,
找到GRUB_CMDLINE_LINUX 这一行,
在双引号
内加入elevator=deadline transparent_hugepage=never,之后使用操作系统root
用户执行grub2-mkconfig -o /boot/grub2/grub.cfg。
这种修改方法为永久性修改,修改grub 启动参数,操作系统启动时全局生效。
注:机械磁盘的调度策略CentOS/Redhat 8.0 系列为mq_deadline。
SSD 磁盘I/O 调度策略为Noop。

GBase 8a MPP Cluster 最佳实践
2 性能调优
文档版本(2022-02-11)
南大通用数据技术股份有限公司
17
cache 参数设置建议
建议设置操作系统趋向于回收cache,避免catch 满后进行内存分配(malloc 内存)
性能差的问题:
修改方式1:
echo 1024 >/proc/sys/vm/vfs_cache_pressure
echo 8388608 >/proc/sys/vm/min_free_kbytes
修改方式2,编辑/etc/sysctl.conf 配置文件:
vm.vfs_cache_pressure = 1024
vm.min_free_kbytes = 8388608
/proc/sys/vm/min_free_kbytes 文件表示强制Linux VM 最低保留多少空闲内存
(Kbytes),大小设置为物理内存的1/12,如上述设置是在96G 内存的服务器上设
置该参数取值为8GB。
透明页管理设置建议
GBase 数据库没有针对透明页管理进行优化,所以需要关闭透明页管理功能。使用
root 用户修改/sys/kernel/mm/transparent_hugepage/ enabled 配置文件,命令如下:
echo never > /sys/kernel/mm/transparent_hugepage/ enabled
最大任务数限制建议
在Redhat7、Suse11 及之后的操作系统中,还需要修改/etc/systemd/system.conf 文件
中的DefaultTasksMax 配置项,修改为DefaultTasksMax=infinity。
文件系统缓存设置建议
默认情况下,Linux 会最多使用40%的可用内存作为文件系统缓存。
当超过这个阈
值后,文件系统会把缓存中的内容全部写入磁盘,导致后续的IO 请求都是同步。
如果文件系统将全部缓存中的内容写入磁盘,影响IO 系统响应,导致越来越多的
请求堆积,最终系统内存全部被占用,导致系统失去响应。
故可以通过调优文件系统缓存参数,来缓解数据库执行SQL 任务阻塞根据应用程
序情况:
对vm.dirty_ratio,
vm.dirty_background_ratio 两个参数进行调优设置,
根据应用程序
情况,
通过文件系统参数vm.dirty_ratio,
vm.dirty_background_ratio 进行调整。
例如,

GBase 8a MPP Cluster 最佳实践
2 性能调优
文档版本(2022-02-11)
南大通用数据技术股份有限公司
18
推荐如下设置:
# sysctl -w vm.dirty_ratio=10
# sysctl -w vm.dirty_background_ratio=5
# sysctl -p
如果系统永久生效,需修改/etc/sysctl.conf 文件。加入如下两行然后重启系统生效。
#vi /etc/sysctl.conf
vm.dirty_background_ratio = 5
vm.dirty_ratio = 10