数据仓库服务 GAUSSDB(DWS)-降低IO的处理方案:场景2:脏数据&数据清理

时间:2025-01-03 09:57:15

场景2:脏数据&数据清理

某业务SQL总执行时间2.519s,其中Scan占了2.516s,同时该表的扫描最终只扫描到0条符合条件数据,过滤了20480条数据,即总共扫描了20480+0条数据却消耗了2s+,扫描时间与扫描数据量严重不符,此现象可判断为由于脏数据多从而影响扫描和IO效率。

查看表脏页率为99%,VACUUM FULL后性能优化到100ms左右。

触发因素:表频繁执行UPDATE/DELETE导致脏数据过多,且长时间未VACUUM FULL清理。

处理方法

  1. 对频繁UPDATE/DELETE产生脏数据的表,定期VACUUM FULL,因大表的VACUUM FULL也会消耗大量IO,因此需要在业务低峰时执行,避免加剧业务高峰期IO压力。
  2. 当脏数据产生很快,频繁VACUUM FULL也会消耗大量IO,甚至加剧整个系统的IO瓶颈,这时需要考虑脏数据的产生是否合理。针对频繁DELETE的场景,可以考虑如下方案:

    1. 全量DELETE修改为TRUNCATE或者使用临时表替代。
    2. 定期DELETE某时间段数据,使用分区表并使用TRUNCATE或DROP分区替代。

support.huaweicloud.com/trouble-dws/dws_09_0111.html