返回首页

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

更新日期:2024年09月11日

取值:[1,LONG_MAX]
默认值:1024
说明:用于单机批量update。
主线程负责存储DC,子线程负责更新,控制子线程更新速度,避免任务堆
积。多线程批量update 中,update 线程如果比save 线程快,则update 线
程需要等待,这在磁盘IO 较重的场景下会出现。
这个参数表示已经update 成功但是还没来得及save 的DC 数量,取名
dc_buffer 是因为这些数量的DC 是保存在内存中的,设置这个数量可以控
制内存的使用量。
通常情况下不需要设置,特殊情况下需要使用场景:
1、批量update 多线程处理的bug 造成的死锁,通过调大该参数可能可以绕
过;
2、部分POC 测试中,如果硬件可用内存较大但磁盘性能相对较慢的场景,
调大该参数对批量更新的SQL 性能可能会有一些优化作用。
修改方式:可使用set 语句修改值。适用于session、global 范围均可。

使用游标执行多条SQL语句。
from GBaseConnector import connect, GBaseError
if __name__ == '__main__':
config = {'host':'172.16.0.131',
'user':'root',
'passwd':'111111',
'port':5258,



GBase Python 接口开发手册
南大通用数据技术股份有限公司

- 7 -
'db':'test'}
try:
conn = connect()
conn.connect(**config)
cur = conn.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS test(id INT, name VARCHAR(20))")
cur.execute("INSERT INTO test VALUES(%s,%s)", (1,'hello'))

iters =
cur.execute("UPDATE test SET id=%s,name=%s;DELETE FROM test;SELECT
'result';",
params=(2,'world'), multi_stmt=True)
for i in iters:
try:
print i.fetchall()
except GBaseError.InterfaceError:
pass
cur.execute("DROP TABLE IF EXISTS test")
except GBaseError.DatabaseError, err:
print err
finally:
conn.close()

在您创建 SPL 例程之后,
将它存储在 sysprocbody 系统目录表中。sysprocbody 系统目录表
包含可执行的例程,以及它的文本。
要检索例程的文本,请从 sysprocbody 系统目录表选择 data 列。文本条目的 datakey 列有代
码 T。
下图中的 SELECT 语句读取 SPL 例程 read_address 的文本。
图: 读取 SPL 例程的文本的 SELECT 语句。
SELECT data FROM gbasedbt.sysprocbody
WHERE datakey = 'T' -- 查找文本行

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 329 -
AND procid =
( SELECT procid
FROM gbasedbt.sysprocedures
WHERE gbasedbt.sysprocedures.procname =
'read_address' )