详解GaussDB(DWS)中3个防过载检查项

💡 原文中文,约18600字,阅读约需45分钟。
📝

内容提要

本文介绍了针对不同版本的数据库进行参数检查和大表检查的方法。对于参数检查,根据不同的参数值给出建议值。对于大表检查,识别大表并建议客户整改以避免磁盘过载。此外,还介绍了冗余索引的诊断方法。

🔎

延伸解读

版本差异:大表检查SQL的适配要点

文章针对8.1.3、8.2.1/8.2.0和8.3.0三个版本给出了不同的大表检查SQL。主要区别在于对列存表小CU的识别:8.1.3版本不包含小CU检查;8.2.1/8.2.0使用get_col_cu_info函数;8.3.0改用pgxc_get_small_cu_info函数。此外,8.1.3版本在HAVING子句中使用50.0 * 1024 * 1024 * 1024,而8.2.1/8.2.0和8.3.0使用50* 1024 * 1024 * 1024.0,但注释均说明总大小大于100GB,实际阈值一致。使用

整改操作的风险:磁盘空间与锁阻塞

文章多次强调,修改分布列和VACUUM FULL过程中表会存在双份数据,因此必须预留足够的磁盘空间,防止磁盘过载。同时,ALTER TABLE修改分布列和VACUUM FULL都会对表持8级锁,阻塞该表的SELECT、UPDATE、DELETE、INSERT等操作。这意味着在执行这些整改措施前,需要评估业务影响,选择低峰期进行,并确保有足够的临时空间。对于复制表改为HASH表,同样需要修改分布列,风险类似。

冗余索引诊断:三种策略与处理建议

冗余索引诊断通过optimizable policy区分三种情况:duplicate表示两个索引字段和顺序完全一致,建议直接删除optimizable index指定的索引;redundancy表示optimizable index的索引列是base index索引列的前缀,也建议直接删除;optimizable表示两个索引列完全重复但顺序不一致,需要人工介入分析是否可以优化。删除冗余索引可以降低磁盘空间,并减少大规模数据导入时的xlog规模。诊断SQL中通过swap逻辑确保保留更优索引(唯一或主键索引)。

❓

Q&A

GaussDB(DWS)中如何进行GUC参数检查?

GUC参数检查通过SQL查询不同版本的数据库参数,提供建议值以优化配置。

如何识别大表以避免磁盘过载?

通过SQL语句识别大表,检查表的大小和数据倾斜情况,并建议整改措施。

冗余索引的诊断方法是什么?

冗余索引诊断通过检查索引的重复性和冗余性,建议删除不必要的索引以节省空间。

在修改分布列时需要注意什么?

修改分布列时需预留足够的磁盘空间,以防止磁盘空间过载,并注意操作会阻塞表的其他操作。

如何处理检测到的倾斜表?

对于倾斜表,建议选择合适的列作为分布列,或将表修改为Round Robin分布。

VACUUM FULL操作的影响是什么?

VACUUM FULL操作会持有8级锁,阻塞表的SELECT、UPDATE、DELETE、INSERT等操作,并需预留足够的磁盘空间。

🏷️

标签

➡️

继续阅读