GaussDB(DWS) 910.200版本性能优化建议

举报
yd_293052510 发表于 2024/12/17 17:56:14 2024/12/17
【摘要】 GaussDB(DWS) 910.200版本性能优化建议,分3个步骤:参数校验、建表、性能优化。

1 集群参数校验

1.1 autovacuum相关:

autovacuum =true

autovacuum_max_workers=6

autovacuum_max_workers_hstore=3

enable_col_index_vacuum=on

1.2 V3disk cache/异步IO/预读相关:

预读:

cu_preload_count = 600

cu_preload_max_distance = 20

异步IO:

enable_aio_scheduler = on

obs_worker_pool_size = 64

多盘缓存:

enable_disk_cache = on

disk_cache_max_size = 管控面下发是盘的一半大小

disk_cache_base_paths = disk_cache 开的话会有多盘路径(两个路径)

enable_disk_cache_recovery = on

1.3 性能相关:

优化器:

cost_model_version = 4 //控制代价估算模型,取值范围1-4

enable_mixedagg=on

执行器:

runtime_filter_type = 'all'

enable_topk_optimization=on //仅支持turbo计划

late_read_strategy = 'topk' //默认开启

enable_cu_predicate_pushdown=on

2 建表

2.1 绝大多数场景建议选择列存,特殊点查场景选择行存

存储类型

适用场景

建表参数

默认建表

列存

适用于大部分场景,如统计分析类查询 (关联、分组操作较多的场景)即席查询(查询条件不确定)、点查询(返回记录少,基于索引的简单查询)、批量入库、实时入库等

WITH (ORIENTATION = column, enable_hstore_opt = on)

不设置时默认为行存。


行存

点查询性能要求较高且列存hstore无法满足要求的场景,增、改操作较多列存hstore脏数据较高的场景。

WITH (ORIENTATION = row)

2.2 建议在时间、区域等字段上创建分区

名称

描述

建表参数举例

范围分区

(Range Partitioning)

基于一个数值型范围划分数据,例如按日期或价格区间定义。

PARTITION BY RANGE (分区字段)(

PARTITION p1 VALUES LESS THAN(20161231),

PARTITION p2 VALUES LESS THAN(20171231),

PARTITION pxxxx VALUES LESS THAN(maxvalue));

列表分区

(List Partitioning)

基于一个值列表划分数据,例如按销售范围或产品属性定义。

PARTITION BY LIST (分区字段)(

PARTITION province1 VALUES ( 'city2'),

PARTITION province2 VALUES ('city3'),

PARTITION rest VALUES (DEFAULT));

【建议】使用具有明显区间性的字段进行分区,比如日期、区域等字段上建立分区。分区数量不建议超过1000。

【建议】分区名称应当体现分区的数据特征。例如,关键字+区间特征。

【建议】将分区上边界的分区值定义为MAXVALUE,以防止可能出现的数据溢出。

【建议】查询数据可落到区间范围指定的分区内,这样才能通过分区剪枝,只扫描查询需要的分区,从而提升数据扫描效率,降低数据扫描的IO开销。

2.3 建议选择V3,本地盘建议单DN设置250GB

场景

V2

V3表

建表参数

With(COLVERSION=2.0)

With(COLVERSION=3.0)

集群支持版本

所有版本

存算分离(DWS 3.0)

存储

列存表的每列合并存储在一个文件中,文件存储在磁盘上,文件名以relfilenode.C1.0命名。

列存表的每列合并存储在一个文件中,文件存储在OBS文件系统上,文件名以C1_fileid.0命名。

建议使用场景

所有场景

性能要求不高、成本控制较高;批量加工/报表查询场景建议使用V3 Hstore(默认opt) + Turbo引擎 + 全缓存

默认建表

存算一体版本,不指定时默认v2表。

存算分离版本,不指定时默认v3表

3 性能优化

1、字段建议类型:

1numeric类型要求都指定精度,精度尽可能38以内,19以内性能更优,无精度性能很差。

2字符串类型总是会比整数/时间类型慢,能用整数/时间类型的都不建议使用字符串类型。

3)字符串尽可能使用varchar(n)n16以内性能最优。

2、主键:

满足业务前提下,主键最好不超过5列,尽可能使用整数类型的列,并且把distinct值多的列放前面。

3bitmap索引:

在有过滤条件的字符串字段上都可以指定上bitmap索引,非字符串字段不适用。

样例:with (orientation=column, enable_hstore_opt=on, bitmap_columns='scope_name, server_ip, group_path')

4PCK/异步排序:

在最常见的过滤条件字段上可以创建PCK,不建议超过两列。影响批量入库性能,异步排序占用额外CPU/IO资源。

样例:create table tb_v3_hash_pck (a int, b int, c int, partial cluster key(a)) with (orientation = column, colversion = 3.0, enable_hstore_opt=on);

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。