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)