数据仓库服务 GaussDB(DWS)-降低I/O的处理方案:场景1:列存小CU膨胀

时间:2025-02-12 15:02:21

场景1:列存小CU膨胀

某业务SQL查询出390871条数据需43248ms,分析计划主要耗时在Cstore Scan。

Cstore Scan的详细信息中,每个DN扫描出2w左右的数据,但是扫描了有数据的CU(CUSome)155079个,没有数据的CU(CUNone)156375个,说明当前小CU、未命中数据的CU极多,即CU膨胀严重。

触发因素:对列存表(尤其是分区表)进行高频小批量导入会造成CU膨胀。

处理方法

  1. 列存表的数据入库方式修改为攒批入库,单分区单批次入库数据量需大于DN个数*6W。
  2. 如果因业务原因无法攒批入库,则需定期VACUUM FULL此类高频小批量导入的列存表。
  3. 当小CU膨胀很快时,频繁VACUUM FULL也会消耗大量I/O,甚至加剧整个系统的I/O瓶颈,此场景建议修改列存表为行存表(CU长期膨胀严重的情况下,列存的存储空间优势和顺序扫描性能优势将不复存在)。
support.huaweicloud.com/trouble-dws/dws_09_0111.html