
# 优化器开销常量
介绍优化器开销常量。这里描述的开销可以按照任意标准度量。只关心其相对值，因此以相同的系数缩放它们将不会对优化器的选择产生任何影响。缺省时，以抓取顺序页的开销为基本单位。也就是说将seq_page_cost设为1.0，同时其他开销参数以该参数为基准设置。也可以使用其他基准，比如以毫秒计的实际执行时间。
 #### seq_page_cost
**参数说明** **：**设置优化器计算一次顺序磁盘页面抓取的开销。该参数可在PDB级别设置。
**参数类型：**浮点型
**参数单位：**无
**取值范围** **：**0 \~ DBL_MAX
**默认值** **：**1。在PDB场景内，若未设置该参数，则继承来自全局的设置。
**设置方式：** 该参数属于USERSET类型参数，请参考[表1](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-40-0315.html#ZH-CN_TOPIC_0000002527988878__zh-cn_topic_0000002527058484_zh-cn_topic_0000002372412413_zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。
**设置建议：**推荐使用默认值。
**设置不当的风险与影响：**该参数影响一次查询中对顺序抓取磁盘页面的性能开销评估，错误地设置该参数会影响优化器对生成计划的选择，部分场景下影响查询性能。若要更改，请谨慎操作，避免因误操作产生意料之外的风险。
#### random_page_cost
**参数说明** **：**设置优化器计算一次非顺序抓取磁盘页面的开销。该参数可在PDB级别设置。
**参数类型：**浮点型
**参数单位：**无
**取值范围** **：**0 \~ DBL_MAX
**默认值** **：**1.1。在PDB场景内，若未设置该参数，则继承来自全局的设置。
**设置方式：** 该参数属于USERSET类型参数，请参考[表1](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-40-0315.html#ZH-CN_TOPIC_0000002527988878__zh-cn_topic_0000002527058484_zh-cn_topic_0000002372412413_zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。
**设置建议：**参见说明部分。
**设置不当的风险与影响：**该参数影响一次查询中对随机抓取磁盘页面的性能开销评估，错误地设置该参数会影响优化器对生成计划的选择，部分场景下影响查询性能。若要更改，请谨慎操作，避免因误操作产生意料之外的风险。
![](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
- 虽然服务器允许将random_page_cost设置的比[seq_page_cost]小，但是物理上实际不受影响。如果所有数据库都位于随机访问内存中，两者设置为相等很合理。因为在此种情况下，非顺序抓取页并没有副作用。同样，在缓冲率很高的数据库上，应该相对于CPU参数同时降低这两个值，因为获取内存中的页要比通常情况下开销小很多。
- 对于指定表空间中的表和索引，可以通过设置同名的表空间参数覆盖库级别的该参数值，即表空间级别该参数的优先级高于库级别该参数的优先级。
- 相对于[seq_page_cost]，减少这个值将导致系统更倾向于使用索引扫描，而增加这个值使得索引扫描开销比较高。可以通过同时增加或减少这两个值来调整磁盘I/O相对于CPU的开销。
- 默认参数值1.1适用于固态硬盘配置，若磁盘为机械硬盘，建议修改为4。
 
#### cpu_tuple_cost
**参数说明** **：**设置优化器计算在一次查询中处理每一行数据的开销。该参数可在PDB级别设置。
**参数类型：**浮点型
**参数单位：**无
**取值范围** **：**0 \~ DBL_MAX
**默认值** **：**0.01。在PDB场景内，若未设置该参数，则继承来自全局的设置。
**设置方式：** 该参数属于USERSET类型参数，请参考[表1](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-40-0315.html#ZH-CN_TOPIC_0000002527988878__zh-cn_topic_0000002527058484_zh-cn_topic_0000002372412413_zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。
**设置建议：**推荐使用默认值。
**设置不当的风险与影响：**该参数影响一次查询中对处理一行数据的性能开销评估，错误地设置该参数会影响优化器对生成计划的选择，部分场景下影响查询性能。若要更改，请谨慎操作，避免因误操作产生意料之外的风险。
#### cpu_index_tuple_cost
**参数说明** **：**设置优化器计算在一次索引扫描中处理每条索引的开销。该参数可在PDB级别设置。
**参数类型：**浮点型
**参数单位：**无
**取值范围** **：**0 \~ DBL_MAX
**默认值** **：**0.005。在PDB场景内，若未设置该参数，则继承来自全局的设置。
**设置方式：** 该参数属于USERSET类型参数，请参考[表1](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-40-0315.html#ZH-CN_TOPIC_0000002527988878__zh-cn_topic_0000002527058484_zh-cn_topic_0000002372412413_zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。
**设置建议：**推荐使用默认值。
**设置不当的风险与影响：**该参数影响一次查询中对索引扫描的性能开销评估，错误地设置该参数会影响优化器对生成计划的选择，部分场景下影响查询性能。若要更改，请谨慎操作，避免因误操作产生意料之外的风险。
#### cpu_operator_cost
**参数说明** **：**设置优化器计算一次查询中执行一个操作符或函数的开销。该参数可在PDB级别设置。
**参数类型：**浮点型
**参数单位：**无
**取值范围** **：**0 \~ DBL_MAX
**默认值** **：**0.0025。在PDB场景内，若未设置该参数，则继承来自全局的设置。
**设置方式：** 该参数属于USERSET类型参数，请参考[表1](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-40-0315.html#ZH-CN_TOPIC_0000002527988878__zh-cn_topic_0000002527058484_zh-cn_topic_0000002372412413_zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。
**设置建议：**推荐使用默认值。
**设置不当的风险与影响：**该参数影响一次查询中对操作符或函数的性能开销评估，错误地设置该参数会影响优化器对生成计划的选择，部分场景下影响查询性能。若要更改，请谨慎操作，避免因误操作产生意料之外的风险。
#### effective_cache_size
**参数说明** **：**设置优化器在一次单一的查询中可用的磁盘缓冲区的有效大小。该参数可在PDB级别设置。
设置这个参数，要考虑GaussDB的共享缓冲区以及内核的磁盘缓冲区，还要考虑预计在不同表之间的并发查询数目，因为它们将共享可用的空间。
这个参数对GaussDB分配的共享内存大小没有影响，它也不会使用内核磁盘缓冲，它只用于估算。该数值用磁盘页来计算，通常每个页面是8192字节。
**参数类型：**整型
**参数单位：**页面（8kB）
**取值范围** **：**
方式一：设置为不带单位的整数，整数范围为1 \~ 2147483647。例如设置为200，表示200个页面，即200\*8kB的大小。
方式二：设置为带单位的值，范围为1\*8kB \~ 2147483647\*8kB。例如设置为200MB，表示200MB的大小。单位仅限于"kB"、"MB"和"GB"。
**默认值** **：**
280GB（196核CPU/1536G内存）；180GB（128核CPU/1024G内存，104核CPU/1024G内存，96核CPU/1024G内存）；135GB（96核CPU/768G内存）；100GB（80核CPU/640G内存）；90GB（64核CPU/512G内存）；80GB（60核CPU/480G内存）；40GB（32核CPU/256G内存）；18GB（16核CPU/128G内存）；8GB（8核CPU/64G内存）；4GB（4核CPU/32G内存）；2GB（4核CPU/16G内存）。在PDB场景内，若未设置该参数，则继承来自全局的设置。
**设置方式：** 该参数属于USERSET类型参数，请参考[表1](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-40-0315.html#ZH-CN_TOPIC_0000002527988878__zh-cn_topic_0000002527058484_zh-cn_topic_0000002372412413_zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。
**设置建议：**比默认值高的数值可能会导致使用索引扫描，更低的数值可能会导致选择顺序扫描。
**设置不当的风险与影响：**错误地设置该参数会影响优化器对生成计划的选择，部分场景下影响查询性能。若要更改，请谨慎操作，避免因误操作产生意料之外的风险。
#### allocate_mem_cost
**参数说明** **：**设置优化器计算Hash Join创建Hash表开辟内存空间所需的开销，供Hash join估算不准时调优使用。该参数可在PDB级别设置。
**参数类型：**浮点型
**参数单位：**无
**取值范围** **：**0 \~ DBL_MAX
**默认值** **：**0。在PDB场景内，若未设置该参数，则继承来自全局的设置。
**设置方式：** 该参数属于USERSET类型参数，请参考[表1](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-40-0315.html#ZH-CN_TOPIC_0000002527988878__zh-cn_topic_0000002527058484_zh-cn_topic_0000002372412413_zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。
**设置建议：**推荐使用默认值，仅在Hash Join估算不准确时调整该参数。
**设置不当的风险与影响：**错误地设置该参数可能导致Hash Join估算不准确，部分场景下影响查询性能。若要更改，请谨慎操作，避免因误操作产生意料之外的风险。
