案例:调整中间表存储方式
在GaussDB(DWS)中行存表使用行执行引擎,列存表使用列执行引擎。如果一个SQL语句涉及的表既有行存表又有列存表,系统会自动选择行执行引擎。由于列执行引擎的性能(除indexscan相关的算子)比行执行引擎性能要好很多,因此一般建议使用列存表。特别是对一些中间结果集转储的表,一定要分析清楚,使用合适的表存储类型。
优化前
某局点测试过程遇到如下的执行计划,客户希望将性能提升至3s内返回结果。
优化后
经过分析发现计划走了行引擎。根本原因是:临时计划表input_acct_id_tbl和中间结果转储表row_unlogged_table使用了行存表。
修改这两个表为列存表之后,性能提升至1.6s。