云数据库 GAUSSDB-Query执行流程:调优手段之GUC参数

时间:2024-04-26 16:14:33

调优手段之GUC参数

查询优化的主要目的是为查询语句选择高效的执行方式。

如下SQL语句:

1
2
select count(1) 
from customer inner join store_sales on (ss_customer_sk = c_customer_sk);

在执行customer inner join store_sales的时候,GaussDB支持Nested Loop、Merge Join和Hash Join三种不同的Join方式。优化器会根据表customer和表store_sales的统计信息估算结果集的大小以及每种Join方式的执行代价,然后对比选出执行代价最小的执行计划。

正如前面所说,执行代价计算都是基于一定的模型和统计信息进行估算,当因为某些原因代价估算不能反映真实的cost的时候,我们就需要通过GUC参数设置的方式让执行计划倾向更优规划。例如:random_page_cost参数表示优化器计算一次非顺序抓取磁盘页面的开销,该参数默认值为4。当机器磁盘随机读取的速度较快时,比如SSD设备,可以将该参数的值适当调小,更改后,索引扫描的代价降低,生成计划时更倾向于选择索引扫描的方式。

support.huaweicloud.com/distributed-devg-v3-gaussdb/gaussdb-12-0249.html