GaussDB(DWS)智能运维监控功能介绍 - DDL审核

举报
404null 发表于 2022/01/21 20:04:34 2022/01/21
【摘要】 DDL设计会影响系统得查询性能,并可能对系统运行产生影响,GaussDB(DWS)服务提供了DDL审核功能,方便用户对于潜在得表定义问题提前感知

DDL的设计会影响数据变更和查询性能,在对时效有严格要求的业务中,数据结构尤为重要。

为了避免不合理得DDL设计影响实际得业务运行,DMS服务上线了DDL审核功能,可以提供事后审核功能,对数据库中已经存在得数据库表进行审核,并可以同步给出修正建议,具体介绍如下:

进入GaussDB(DWS)页面,从【集群管理】对应集群得操作中进入【监控面板】,在工具侧栏中进入有【DDL审核】功能,可以在页面中执行“一键审核”对当前集群中得表进行诊断

如果集群管理中没有监控面板入口,请联系客服帮忙配置DMS监控服务

image.png

DMS服务除了在【DDL审核】中也提供了一键手动执行功能,还提供了定时审核功能,在【设置】中可以选择打开DDL审核,选择需要检测表得条目和检测周期,DMS服务会按周期去审核表定义,并将审核结果同步到【DDL审核】页面中
image.png

审核对于有问题得表结构,提供建议事项如下:

1.分布键的数量建议不大于4

在集群版GaussDB(DWS)中,一般分布键较多时数据分布会比较均匀;即在单分布键下数据分布节点计算时的影响因素较少,一旦该分布键值存在聚集,数据在节点上的表现也会出现倾斜现象,而多分布键会增加分布节点计算的影响因素,减小数据倾斜。但分布键过多会出现存储性能和联合查询性能问题,建议不大于4个分布键。

a)存储性能问题:

在数据新增时,需要按hash函数计算每一分布列的结果,再将结果整合起来,作为确定分布节点参数,分布键越多,计算越复杂越耗时。

b)联合查询性能问题:

多表联合查询时,当分布键所有列为join条件涉及列的子集时,在执行计划中数据不需要做重新分布;反之,需要按join条件进行数据的重分布,分布键列指定的越多,其成为join条件涉及列的子集概率越小,越容易发生数据的重分布,而数据重分布则会消耗资源和时间。

2.索引列数/PCK列数建议不大于4

a)索引列数越多,其维护索引数据需要的资源越多,出现重复索引概率越大。

b)PCK列越多,因在列存数据导入时需要对每一PCK列进行比较计算来划分CU,其过程将消耗越多时间和资源,导入性能降低;而且在数据查询时,查询条件所涉及列的前缀需要是PCK列(如PCK列为a、b、c,则查询条件需要为a>? and b>? and c>?类似样式的组合),这样才能在CU过滤时达到很好的效果,反之则需要遍历每一个CU,数据的聚簇没有发挥优势。

3.防止创建无效PCK列

在GaussDB(DWS)8.1.1版本中,CU的过滤比较支持char,int8,int2,int4,text,bpchar,varchar,date,time,timestamp,timestamptz数据类型。所以PCK列指定了非上述类型的列时,在实际CU过滤时并没有起到作用,称之为无效PCK列,而维护这个无效PCK列需要一定资源。

4.Numeric的使用规范

在涉及数值类型使用时,尽量使用整型,或对精度要求不高的情况下,使用float类型这类定长类型,比numeric这种变长类型计算性能好;即使用numeric类型,建议指明标度和精度,尽量在38位以内,因为在涉及numeric类型数值的计算时,底层会尝试将计算转换为int或bigint之间的计算,以提升计算效率,即数据类型的大整数优化。在GaussDB(DWS)8.1.1版本指出未指定精度的情况下,小数点前最大131,072 位,小数点后最大 16,383位,即按最大标度和精度处理,在计算时将无法进行大整数优化,计算效率相应下降。

5.索引列宽度建议在64字节内

过长字段一般都是字符串,这些字段基本不会执行比较操作,而且宽字段会造成索引体积过大。

6.复制表的数据量大小建议在100MB内

集群版的GaussDB(DWS)支持复制表(replication)类型,该表会在每一个节点中维护一份全量数据,其较多应用于可枚举类数据的存储。如果表数据量过大,会占用较多空间;并且在实际联合查询中,节点会遍历所有表数据,可能会比将表类型改为分布表后的联合查询消耗时间还长(分布表虽然可能会产生数据重分布,但每个节点遍历的数据量会减少)。

7.分布列指定规范性

在GaussDB(DWS)集群中,分布列建议不要指定为boolean或date类型字段,很容易出现数据的倾斜。

8.序列新增时cache个数指定值建议大于100

在表字段使用到sequence时,其next_value首先从本节点预先获取缓存下来的值中拿取,如果用完了则请求GTM服务再次获取,在大批量数据新增时,如果cache数量过少,会不断请求GTM,多个节点大批量请求会导致GTM压力过大,容易造成崩溃或阻塞,所以建议新建sequence时指定cache值大于100。

对DDL设计得其他问题,或者问题定位得其他手段,DMS服务会持续扩展功能。

想了解GuassDB(DWS)更多信息,欢迎微信搜索“GaussDB DWS”关注微信公众号,和您分享最新最全的PB级数仓黑科技,后台还可获取众多学习资料哦

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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