返回首页

gbase数据、南大通用产品文档:GBase8s创建分区

更新日期:2024年09月11日


GBase 8s 企业管理器用户手册
南大通用数据技术股份有限公司

37
可以在创建表的时候创建分区,也可以对一个已存在的表创建分区。

图:表设计器窗口

在点击“创建分区”按钮之后,就会弹出分区的界面。可以根据不同的需求创建不同类型
的分区。

GBase 8s 企业管理器用户手册
南大通用数据技术股份有限公司

38

图:对表进行Expression 分区

图:对表进行Round Robin 分区

GBase 8s 企业管理器用户手册
南大通用数据技术股份有限公司

39
下面分别介绍每一个参数:

数据空间: 分区所在的数据空间,提供下拉菜单供用户选择

表达式:是由可用列和函数组合而成的,用户自行编辑,但用户编辑的表达式,系
统将不能保证其正确性,因此在创建的时候可能会出现错误。

分区名称:可以不指定名称,当不制定名称时,默认是数据空间名称。分区名称不
能重复。

gbase 的开窗函数中sum、avg 运行性能随窗口大小变大而性能下降,可通过
调整参数gbase_buffer_rowset 的值来提升性能。gbase_buffer_rowset 表示保存中
间结果集的内存上限。

执行原理:
在进行olap 计算时,首先根据gbase_buffer_rowset 参数为计算过程分配保存
中间结果集的内存空间,将gbase_buffer_rowset 分成n 块,n 由最大线程数和
parallel_degree 决定,计算过程中可以使用这些buffer。然后由于计算过程中只保
存olap 列信息,
所以又将buffer 除以olap 列的列宽得到一个buffer 可以表示的行
数,此时,若存在一个partition 的行数超过一个buffer 保存行数的上限,超过的
部分保存在下一个buffer,而在窗口一行一行地滑动计算时,若一个partition 跨
buffer 保存,滑动过程中会跨buffer 访问数据,就会导致频繁的换入换出,换入
换出的次数最大能达到窗口的大小,所以,若窗口过大且存在较大的partition,
就会造成频繁的换入换出,造成性能损耗。

参数设置:
提前评估数据表中最大的partition 的数据量,按照以下公式进行计算调整
gbase_buffer_rowset 的值,增加buffer 的内存,尽量在一个buffer 内保存最大的
partition,以尽量减少跨buffer 访问的次数。
max_partition_size*列宽(进行olap 函数计算的列,如sum(a),若a 列为double 类
型,则列宽为8)得到一个buffer 的值。然后再考虑gbase_parallel_degree 参数,
若degree 值为0,则将这个buffer 的值乘以最大线程数

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1285
gbase_parallel_max_thread_in_pool 的一半,
得到的结果向上取到2 的n 次方后
(如
1024,512 等),就得到一个比较适合的rowset 值。
若gbase_parallel_degree 参数不为0,则将buffer 的值乘以最大线程数
gbase_parallel_max_thread_in_pool,得到的结果向上取到2 的n 次方后,得到一
个比较合适的rowset 值。
最后重新set gbase_buffer_rowset。

总结:
if(dregree == 0)
max_partition_size*列宽*gbase_parallel_max_thread_in_pool/2 = rowset;
else
max_partition_size*列宽*gbase_parallel_max_thread_in_pool = rowset;
例如:
create table sales(
sales_employee varchar(50) not null,
fiscal_year varchar(50) not null,
sale decimal(14,2) not null,
primary key(sales_employee,fiscal_year)
);
select
fiscal_year,
sales_employee,
sale,
avg(sale) over (partition by sales_employee order by fiscal_year
ROWS BETWEEN 10000 PRECEDING AND 10000 FOLLOWING) total_sales
from sales;
加载数据4 千万;设置参数gbase_buffer_rowset=3073741824,执行性能较为稳定,
不会因窗口大小变化而性能波动。

API)
随同 admin() 或 task() 函数,使用 checkpoint 参数来强制一检查点。
语法

用法
这个函数强制一检查点,经缓冲区清空到磁盘。如果逻辑日志中最近的检查点记录阻止释
放逻辑日志文件(状态 U-B-L),则可使用这个函数来强制一检查点。
使用 block 参数来防止数据库服务器处理任何事物。在 GBase
8s 上使用这个选项执行外
部备份。在数据库服务器阻塞时,用户不可访问它,除非在只读模式中。直到解除数据库
服务器阻塞,事务才可完成。
使用 hard 参数来强制一阻塞检查点。这是缺省情况。
使用 norm 参数来强制一非阻塞检查点。
使用 unblock 参数来解除数据库服务器阻塞。当解除数据库服务器阻塞时,可恢复数据事
务和正常的数据库服务器操作。请在 GBase 8s 上完成外部备份之后使用这个选项。
这个函数等同于 onmode -c 命令。
示例
下列示例启用一阻塞检查点:
EXECUTE FUNCTION task("checkpoint","block");