探索BI系统搭建的必要性与AI技术的应用潜力
649
2022-05-29
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。
Ø 实践建议:建议对数据库内部所有表进行倾斜检查,调整分布键。
数据库 数据仓库服务 GaussDB(DWS)
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。