返回首页

gbase数据、南大通用产品文档:GBase8sifx_var_dealloc() 函数

更新日期:2024年09月11日

ifx_var_dealloc() 函数释放为 var binary 主变量的数据缓冲区分配了的内存。

语法

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 815 -
var binary
mint ifx_var_dealloc(var_bin)
var binary **var_bin;

lvarchar
mint ifx_var_dealloc(lvar)
lvarchar **lvar;

var_bin
释放其数据缓冲区的 var binary 指针主变量的地址。
lvar
释放其数据缓冲区的 lvarchar 指针主变量的地址。

用法
ifx_var_flag() 函数的分配标志告诉 GBase 8s ESQL/C 用于该数据缓冲区的是哪种分
配方式。不管是 GBase 8s ESQL/C(设置分配标志为 1),还是您的应用程序(设置分配
标志为 0)分配该内存,您必须显式地释放分配给 lvarchar 或 var binary 主变量的数据
缓冲区的内存。

返回代码
0
函数成功。
<0
函数不成功,且返回值指示错误的原因。

gbase_stmt_close
 摘要:
释放预处理语句使用的内存。
 语法:
gs_bool gbase_stmt_close(GBASE_STMT * stmt);
 参数:
 返回值:
如果成功释放了语句,返回0。如果出现错误,返回非0 值。
 错误
CR_SERVER_GONE_ERROR

GBase 服务器不可用。
CR_UNKNOWN_ERROR


出现未知错误。

取值:[0|1]
默认值:0
说明:consumer 数据入库延时时间记录
设置此参数=1 表示让kafka consumer 记录每一个kafka 消息的时间戳,从该消息被
consumer 接收到开始计时,至该消息被正确同步到8A 数据落地计时结束,用户通
过这两个时间戳,能够了解到数据在consumer 环节的延迟时间。由于consumer 采
用批量提交的方式,
所以实际上采用的是本批次数据中第一条数据的接收时间和提
交完成时间。
此外,用户如果要核对同步结果的数据条数,对每次提交涉及的总数据量(Insert、
Delete、Update)做统计,统计方法与gcluster_kafka_result_check 的方法相同。
这些统计信息最终被记录到checkpoint table 里。
配置此参数=1 后,consumer 启动时会改变checkpoint table 表结构,如下所示:
gbase> select * from gclusterdb.kafka_consumer_offset_jx5;
+--------+----------------------+---------------------+---------------------+----------------+
| OFFSET | POS
| recieve_time
| commit_time
|
dml_count
|
+--------+----------------------+---------------------+---------------------+----------------+
|
0 | 00000000010000000600 | NULL
| NULL
| I:68,D:10,U:20 |
|
0 | 00000000010000000600 | 2019-09-17 15:54:00 | 2019-09-17 15:54:02 |
I:68,D:10,U:20 |

GBase 8a MPP Cluster 参数手册
文档版本2022-06-07
南大通用数据技术股份有限公司
14
|
1 | 00000000010000001100 | NULL
| NULL
| I:68,D:10,U:20 |
|
1 | 00000000010000001100 | 2019-09-17 15:54:02 | 2019-09-17 15:54:03 |
I:68,D:10,U:20 |
表结构一旦修改,即使在配置此参数=0,checkpoint table 依然保持当前表结构。
由于本批次数据的提交时间只有在提交完成后才能得到,
而checkpoint table 的数据
是在提交前就确定的,所以在提交完成、得到时间戳后,出于性能考虑,这个信息
需要在下一次提交再追加记录。因此用户stop consumer 的话,最后一次提交的时
间戳信息是无法记录的。
记录checkpoint table 是通过insert 操作来实现的,
随着提交次数的增加,
checkpoint
table 的数据量也越来越多,之前的设计是每当consumer 启动时,读取上次提交的
offset 后,
旧数据就不再有价值,
会自动对旧数据做清理,
只保留最大的一个offset。
当打开gcluster_kafka_consumer_latency_time_statistics,
因为用户需要追溯数据提交
情况,因此不能再用以前的机制,所以consumer 要根据时间信息定期淘汰旧数据,
目前设计是checkpoint table 里的数据保留7 天,
consumer 启动时记录最旧的时间戳,
每批提交完成后检查当前时间与这个时间戳的差值,
达到7 天就会淘汰与最旧时间
戳差值小于1 天的所有记录。
修改方式:
可使用set 语句修改值也可在配置文件中修改值。
适用于session、
global
范围均可。