min_parallel_index_scan_size

一个GUC参数,用于确定是否应考虑并行索引扫描

min_parallel_index_scan_size 是一个配置参数,用于指定在考虑并行扫描之前,需要扫描的最小索引数据量。

min_parallel_index_scan_size 已在 PostgreSQL 10 中添加。它与 min_parallel_table_scan_size 一起,取代了 min_parallel_relation_size

默认

min_parallel_index_scan_size 的默认值为:512kB

按 PostgreSQL 版本详细信息

min_parallel_index_scan_size (PostgreSQL 19)

设置 64
单位 8kB
类别 查询调优 / 优化器成本常量
简短描述 设置并行扫描的最小索引数据量。
扩展描述 如果规划器估计它读取的索引页数量不足以达到此限制,则不会考虑并行扫描。
上下文 user
变量类型 整数
来源 默认
最小值 0
最大值 715827882
枚举值  
启动值 64
重置值 64
源文件  
源行  
需要重启 false

文档min_parallel_index_scan_size

min_parallel_index_scan_size (PostgreSQL 18)

设置 64
单位 8kB
类别 查询调优 / 优化器成本常量
简短描述 设置并行扫描的最小索引数据量。
扩展描述 如果规划器估计它读取的索引页数量不足以达到此限制,则不会考虑并行扫描。
上下文 user
变量类型 整数
来源 默认
最小值 0
最大值 715827882
枚举值  
启动值 64
重置值 64
源文件  
源行  
需要重启 false

文档min_parallel_index_scan_size

min_parallel_index_scan_size (PostgreSQL 17)

设置 64
单位 8kB
类别 查询调优 / 优化器成本常量
简短描述 设置并行扫描的最小索引数据量。
扩展描述 如果规划器估计它读取的索引页数量不足以达到此限制,则不会考虑并行扫描。
上下文 user
变量类型 整数
来源 默认
最小值 0
最大值 715827882
枚举值  
启动值 64
重置值 64
源文件  
源行  
需要重启 false

文档min_parallel_index_scan_size

min_parallel_index_scan_size (PostgreSQL 16)

设置 64
单位 8kB
类别 查询调优 / 优化器成本常量
简短描述 设置并行扫描的最小索引数据量。
扩展描述 如果规划器估计它读取的索引页数量不足以达到此限制,则不会考虑并行扫描。
上下文 user
变量类型 整数
来源 默认
最小值 0
最大值 715827882
枚举值  
启动值 64
重置值 64
源文件  
源行  
需要重启 false

文档min_parallel_index_scan_size

min_parallel_index_scan_size (PostgreSQL 15)

设置 64
单位 8kB
类别 查询调优 / 优化器成本常量
简短描述 设置并行扫描的最小索引数据量。
扩展描述 如果规划器估计它读取的索引页数量不足以达到此限制,则不会考虑并行扫描。
上下文 user
变量类型 整数
来源 默认
最小值 0
最大值 715827882
枚举值  
启动值 64
重置值 64
源文件  
源行  
需要重启 false

文档min_parallel_index_scan_size

min_parallel_index_scan_size (PostgreSQL 14)

设置 64
单位 8kB
类别 查询调优 / 优化器成本常量
简短描述 设置并行扫描的最小索引数据量。
扩展描述 如果规划器估计它读取的索引页数量不足以达到此限制,则不会考虑并行扫描。
上下文 user
变量类型 整数
来源 默认
最小值 0
最大值 715827882
枚举值  
启动值 64
重置值 64
源文件  
源行  
需要重启 false

文档min_parallel_index_scan_size

min_parallel_index_scan_size (PostgreSQL 13)

设置 64
单位 8kB
类别 查询调优 / 优化器成本常量
简短描述 设置并行扫描的最小索引数据量。
扩展描述 如果规划器估计它读取的索引页数量不足以达到此限制,则不会考虑并行扫描。
上下文 user
变量类型 整数
来源 默认
最小值 0
最大值 715827882
枚举值  
启动值 64
重置值 64
源文件  
源行  
需要重启 false

文档min_parallel_index_scan_size

min_parallel_index_scan_size (PostgreSQL 12)

设置 64
单位 8kB
类别 查询调优 / 优化器成本常量
简短描述 设置并行扫描的最小索引数据量。
扩展描述 如果规划器估计它读取的索引页数量不足以达到此限制,则不会考虑并行扫描。
上下文 user
变量类型 整数
来源 默认
最小值 0
最大值 715827882
枚举值  
启动值 64
重置值 64
源文件  
源行  
需要重启 false

文档min_parallel_index_scan_size

min_parallel_index_scan_size (PostgreSQL 11)

设置 64
单位 8kB
类别 查询调优 / 优化器成本常量
简短描述 设置并行扫描的最小索引数据量。
扩展描述 如果规划器估计它读取的索引页数量不足以达到此限制,则不会考虑并行扫描。
上下文 user
变量类型 整数
来源 默认
最小值 0
最大值 715827882
枚举值  
启动值 64
重置值 64
源文件  
源行  
需要重启 false

文档min_parallel_index_scan_size

min_parallel_index_scan_size (PostgreSQL 10)

设置 64
单位 8kB
类别 查询调优 / 优化器成本常量
简短描述 设置并行扫描的最小索引数据量。
扩展描述 如果规划器估计它读取的索引页数量不足以达到此限制,则不会考虑并行扫描。
上下文 user
变量类型 整数
来源 默认
最小值 0
最大值 715827882
枚举值  
启动值 64
重置值 64
源文件  
源行  
需要重启 false

文档min_parallel_index_scan_size

变更历史

示例

min_parallel_index_scan_size 的基本用法示例

postgres=# CREATE TABLE foo (id INT);
CREATE TABLE

postgres=# CREATE UNIQUE INDEX foo_ix ON foo(id);
CREATE INDEX

postgres=# INSERT INTO foo VALUES (generate_series(1,1000));
INSERT 0 1000

此时创建的索引远小于 min_parallel_index_scan_size,因此不使用并行扫描

postgres=# \di+ foo_ix 
                                        List of indexes
 Schema |  Name  | Type  |  Owner   | Table | Persistence | Access method | Size  | Description 
--------+--------+-------+----------+-------+-------------+---------------+-------+-------------
 public | foo_ix | index | postgres | foo   | permanent   | btree         | 40 kB | 
(1 row)

postgres=# EXPLAIN SELECT * FROM foo WHERE id % 2 = 1;
                     QUERY PLAN                     
----------------------------------------------------
 Seq Scan on foo  (cost=0.00..20.00 rows=5 width=4)
   Filter: ((id % 2) = 1)
(2 rows)

一旦索引大小超过 min_parallel_index_scan_size,将启动并行扫描

postgres=# INSERT INTO foo VALUES (generate_series(1001,1000000));
INSERT 0 999000

postgres=# \di+ foo_ix 
                                        List of indexes
 Schema |  Name  | Type  |  Owner   | Table | Persistence | Access method | Size  | Description 
--------+--------+-------+----------+-------+-------------+---------------+-------+-------------
 public | foo_ix | index | postgres | foo   | permanent   | btree         | 21 MB | 
(1 row)

postgres=# EXPLAIN SELECT * FROM foo WHERE id % 2 = 1;
                               QUERY PLAN                                
-------------------------------------------------------------------------
 Gather  (cost=1000.00..12653.00 rows=5000 width=4)
   Workers Planned: 2
   ->  Parallel Seq Scan on foo  (cost=0.00..11153.00 rows=2083 width=4)
         Filter: ((id % 2) = 1)
(4 rows)

分类

GUC 配置项, 并行查询, 优化器

另请参阅

min_parallel_table_scan_size

反馈

在此处 提交关于“min_parallel_index_scan_size”的任何评论、建议或更正