DWS优秀实践之数据库性能提升

举报
静静桑嘞he 发表于 2020/06/20 16:42:23 2020/06/20
【摘要】 冗余会话清理现场通常使用Data Studio进行DWS数据库连接,很多人使用关闭后不关闭窗口,导致数据库连接仍然存在,后台大量堆积Data Studio查询作业,导致DWS集群查询无响应。可以参照以下超长会话清理方式进行操作。

1.1 冗余会话清理

现场通常使用Data Studio进行DWS数据库连接,很多人使用关闭后不关闭窗口,导致数据库连接仍然存在,后台大量堆积Data Studio查询作业,导致DWS集群查询无响应。可以参照以下超长会话清理方式进行操作。

注意:该清理操作,需要在每个CN上都执行。

-- 查询持续运行时间超过一天的会话

SELECT * FROM PG_STAT_ACTIVITY   WHERE   useName <> 'Ruby' and state   <> 'idle' and current_timestamp -   query_start > interval '1 days';

--杀掉会话

SELECT   PG_TERMINATE_BACKEND(pid) FROM PG_STAT_ACTIVITY WHERE   useName <> 'Ruby' and state   <> 'idle' and current_timestamp -   query_start > interval '1 days';

 Ø  实践建议:建议运维人员定时执行该操作,及时清理垃圾会话,避免不佳使用习惯对数据库造成影响。

1.2 磁盘垃圾回收

在对表做了大量更新和删除之后,会产生表的膨胀现象,导致全表扫描性能劣化非常严重。在现场发现,垃圾数据多了,会导致全表扫描IO量达到正常值200倍以上,并且select * from {tableName} limit 100; 这样的简单查询,也会受到影响。

可以通过如下语句查询数据库内部表的脏页情况,如果发现脏页dirty_page_rate非常高,超过30,建议及时进行VACUUM FULL。

SELECT * FROM   PGXC_GET_STAT_ALL_TABLES

WHERE schemaName NOT IN('pg_toast', 'pg_catalog', 'information_schema', 'cstore','pmk')

ORDER BY dirty_page_rate DESC;

   注意:VACUUM FULL会导致当前表进入只读,所以需要选择合适时间执行。

VACUUM FULL ANALYZE {tableName};

 Ø  实践建议:建议定期对整库进行VACUUM,个别垃圾数据比较频繁的表,可以频率更加频繁一些。

1.3  分布键调整

当前很多使用场景中建表没有指定分布键,系统默认使用表中的第一列作为分布键,这不仅导致数据倾斜严重,极端情况下,数据可能全部只分布在一个DN中,严重影响查询效率。数据倾斜检查办法如下:

SELECT * FROM PGXC_GET_TABLE_SKEWNESS ORDER   BY SKEWRATIO DESC;

       PGXC_GET_TABLE_SKEWNESS视图字段信息如下:

名称

类型

描述

schemaname

name

表所在的模式名。

tablename

name

表名。

totalsize

numeric

表的总大小,单位Byte。

avgsize

numeric(1000,0)

表大小平均值(totalsize/DN个数,该值为平均分布的理想情况下,表在各DN占用空间大小)。

maxratio

numeric(4,3)

单DN表大小最大值占比(表在各DN占用空间的最大值/totalsize)。

minratio

numeric(4,3)

单DN表大小最小值占比(表在各DN占用空间的最小值/totalsize)。

skewsize

bigint

表分布倾斜值(单DN表大小最大值 - 单DN表大小最小值)。

skewratio

numeric(4,3)

表分布倾斜率(skewsize/totalsize)。

skewstddev

numeric(1000,0)

表分布标准方差(在表大小一定的情况下,该值越大表明表的整体分布情况越倾斜)。

如果发现数据倾斜,或者在查询过程中,执行计划不合理,产生大量数据重分布,整改操作步骤如下:

 1.  创建新表,重新指定分布键,导入数据到新表中

 2.  修改原始表名称,并修改新表为正式表名称,然后删除原始旧表。

 3.  对新表执行ANALYZE。

Ø  实践建议:建议对数据库内部所有表进行倾斜检查,调整分布键。

 


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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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