返回首页

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

更新日期:2024年09月11日

PREPARE_SNAPSHOT_INTERNAL 是db4ai.prepare_snapshot 函数的内置执行函数。函
数存在信息校验,无法直接调用。
参数
类型
描述
s_id
IN BIGINT
快照ID。

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
1119
参数
类型
描述
p_id
IN BIGINT
父快照ID。
m_id
IN BIGINT
矩阵id。
r_id
IN BIGINT
根快照ID。
i_schema
IN NAME
快照模式。
i_name
IN NAME
快照名称。
i_commands
IN TEXT[]
定义快照修改的DDL 和D
ML 命令。
i_comment
IN TEXT
快照描述。
i_owner
IN NAME
快照所有者。
i_idx
INOUT INT
exec_cmds 的索引。
i_exec_cmds
INOUT TEXT[]
用于执行的DDL 和DML。
i_mapping
IN NAME[]
将用户列映射到备份列;如
果不为NULL,
则生成规则。

1.
Heap 参数(global)
gbase_heap_data 主要设计用途是缓存数据(DC),应分配最多的内存。
gbase_heap_large 用于管理不频繁申请、释放的内存。
gbase_heap_temp 用来分配较为琐碎的和小块儿的临时内存,较少使用。
gbase_memory_pct_target 设置内存的可用比例,默认0.8。

参数下限:
gbase_heap_data
>= 512MB
gbase_heap_large
>= 256MB
gbase_heap_temp
>= 256MB

参数上限:
(gbase_heap_data + gbase_heap_large + gbase_heap_temp ) <= total memory *
gbase_memory_pct_target
注意
默认:
total memory = physical memory
_gbase_memory_use_swap 设置为1 时:
total memory = physical memory + swap
2.
算子buffer(session)
算子buffer 均为session 级别,即如果设置gbase_buffer_result=1G,且并发数

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1279
为30,则在执行并发的过程中,30 并发总共占用的gbase_buffer_result 就为
1G*30 = 30G,而且是在不计算其他的算子buffer 的情况下。
所以如果在高并发环境中将某一个算子buffer 设置很大的话,很有可能就会
出现内存不足无法分配的情况。

常用的buffer 如下:

gbase_buffer_distgrby:用于保存distinct 操作的中间结果;

gbase_buffer_hgrby:用于保存shash group by 操作的中间结果;

gbase_buffer_hj:用于保存hash join 操作的中间结果;

gbase_buffer_insert:用于保存insert values 的中间结果;

gbase_buffer_result:用于保存物化的中间结果;

gbase_buffer_rowset:用于保存join 计算的中间结果集;

gbase_buffer_sj:
用于保存sort merge join 的中间结果,
当join 条件是a>=b
或者a<=b 时,可能会使用sort merge join;

gbase_buffer_sort:用于保存sort 操作的中间结果。

算子buffer 的设置原则:
一般情况下(非高并发场景),根据系统内存大小,算子buffer 可以按照如
下方法设置:

gbase_buffer_hgrby 和gbase_buffer_hj 最大不超过4G;

gbase_buffer_result 最大不超过2G;

gbase_buffer_rowset 最大不超过1G;

其他算子使用系统估算即可。

如果在高并发场景下,则不需要设置过大的算子buffer,一般以系统自
动评估为准。但如果并发数过大,不排除需要人为将算子buffer 设置更
小的情况。即并发数乘以总算子buffer 大小不超过gbase_heap_large 为
宜,但最大也不能超过系统总内存大小。

修改算子buffer 的其它场景:
如果某条sql 由于某个算子执行过慢(瓶颈点可参考单机trace),可以适当
调大与之对应算子buffer。例如根据trace 发现join 较慢,可以适当调大
gbase_buffer_hj 的值。但是需要注意,调整该值时必须不能影响其他SQL 的
执行。

此属性用来描述执行SQL 查询后的结果集列信息,以LIST 方式存储,并包
含以下数据内容。
 name:列名
 code:列类型编码



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

- 25 -
 display_size:None
 internal_size:None
 precision:None
 scale:None
 null_ok:是否为空
 column_flags 列属性flag 集
类型

默认值
可读写
list
结果集列信息列
表,列表中为元
组,
存储上述描述
的内容
None
read

code 字段的取值如下所示


类型名
1
tinyint

2
smallint

3
int

4
float

5
double

7
timestamp

8
bigint

10
date

11
time

12
datetime

246 decimal

246 numeric

252 text

252 blob

253 varchar

GBase Python 接口开发手册


- 26 -

南大通用数据技术股份有限公司

类型名

254 char



column_flags 字段取值如下

含义
1
NOT_NULL_FLAG,Field can't be NULL
2
PRI_KEY_FLAG,Field is part of a primary key
4
UNIQUE_KEY_FLAG,Field is part of a unique key
8
MULTIPLE_KEY_FLAG,Field is part of a key
16
BLOB_FLAG,Field is a blob
32
UNSIGNED_FLAG,Field is unsigned
64
ZEROFILL_FLAG,Field is zerofill
128
BINARY_FLAG,Field is binary
256
ENUM_FLAG,field is an enum
512
AUTO_INCREMENT_FLAG,field is a autoincrement field
1024
TIMESTAMP_FLAG,Field is a timestamp
2048
SET_FLAG,field is a set
4096
NO_DEFAULT_VALUE_FLAG,Field doesn't have default value
8192
ON_UPDATE_NOW_FLAG,Field is set to NOW on UPDATE
32768 NUM_FLAG,Field is num (for clients)
16384 PART_KEY_FLAG,Intern; Part of some key