enable_async_append 是一个 配置参数,用于确定查询规划器是否使用异步感知追加计划类型。
enable_async_append 在 PostgreSQL 14 中添加。
默认值
enable_async_append 的默认值为:on。
按 PostgreSQL 版本详细信息
enable_async_append (PostgreSQL 19)
| 设置 |
开启 |
| 单位 |
|
| 类别 |
查询调优 / 规划器方法配置 |
| 简短描述 |
启用规划器对异步追加计划的使用。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
开启 |
| 重置值 |
开启 |
| 源文件 |
|
| 源行 |
|
| 需要重启 |
false |
文档:enable_async_append
enable_async_append (PostgreSQL 18)
| 设置 |
开启 |
| 单位 |
|
| 类别 |
查询调优 / 规划器方法配置 |
| 简短描述 |
启用规划器对异步追加计划的使用。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
开启 |
| 重置值 |
开启 |
| 源文件 |
|
| 源行 |
|
| 需要重启 |
false |
文档:enable_async_append
enable_async_append (PostgreSQL 17)
| 设置 |
开启 |
| 单位 |
|
| 类别 |
查询调优 / 规划器方法配置 |
| 简短描述 |
启用规划器对异步追加计划的使用。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
开启 |
| 重置值 |
开启 |
| 源文件 |
|
| 源行 |
|
| 需要重启 |
false |
文档:enable_async_append
enable_async_append (PostgreSQL 16)
| 设置 |
开启 |
| 单位 |
|
| 类别 |
查询调优 / 规划器方法配置 |
| 简短描述 |
启用规划器对异步追加计划的使用。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
开启 |
| 重置值 |
开启 |
| 源文件 |
|
| 源行 |
|
| 需要重启 |
false |
文档:enable_async_append
enable_async_append (PostgreSQL 15)
| 设置 |
开启 |
| 单位 |
|
| 类别 |
查询调优 / 规划器方法配置 |
| 简短描述 |
启用规划器对异步追加计划的使用。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
开启 |
| 重置值 |
开启 |
| 源文件 |
|
| 源行 |
|
| 需要重启 |
false |
文档:enable_async_append
enable_async_append (PostgreSQL 14)
| 设置 |
开启 |
| 单位 |
|
| 类别 |
查询调优 / 规划器方法配置 |
| 简短描述 |
启用规划器对异步追加计划的使用。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
开启 |
| 重置值 |
开启 |
| 源文件 |
|
| 源行 |
|
| 需要重启 |
false |
文档:enable_async_append
变更历史
示例
给定一个按如下方式设置的分区表
postgres=# \d+ parttest
Partitioned table "public.parttest"
Column | Type | Collation | Nullable | Default | Storage | Compression | Stats target | Description
--------+---------+-----------+----------+---------+----------+-------------+--------------+-------------
id | integer | | not null | | plain | | |
val1 | text | | | | extended | | |
val2 | text | | | | extended | | |
Partition key: HASH (id)
Partitions: parttest_4_0 FOR VALUES WITH (modulus 4, remainder 0),
parttest_4_1 FOR VALUES WITH (modulus 4, remainder 1),
parttest_4_2 FOR VALUES WITH (modulus 4, remainder 2),
parttest_4_3 FOR VALUES WITH (modulus 4, remainder 3)
其中各个分区是位于不同服务器上的 外部表,类似以下的查询应该会生成如下计划
postgres=# EXPLAIN (verbose, analyze) select * FROM parttest;
QUERY PLAN
------------------------------------------------------------------------------------------------------------------------------------------------------
Append (cost=100.00..4345.00 rows=100000 width=68) (actual time=2.067..145.652 rows=100000 loops=1)
-> Async Foreign Scan on public.parttest_4_0 parttest_1 (cost=100.00..965.78 rows=25126 width=68) (actual time=1.104..29.017 rows=25126 loops=1)
Output: parttest_1.id, parttest_1.val1, parttest_1.val2
Remote SQL: SELECT id, val1, val2 FROM public.parttest_4_0
-> Async Foreign Scan on public.parttest_4_1 parttest_2 (cost=100.00..960.34 rows=24978 width=68) (actual time=1.057..26.778 rows=24978 loops=1)
Output: parttest_2.id, parttest_2.val1, parttest_2.val2
Remote SQL: SELECT id, val1, val2 FROM public.parttest_4_1
-> Async Foreign Scan on public.parttest_4_2 parttest_3 (cost=100.00..960.13 rows=24971 width=68) (actual time=0.319..15.856 rows=24971 loops=1)
Output: parttest_3.id, parttest_3.val1, parttest_3.val2
Remote SQL: SELECT id, val1, val2 FROM public.parttest_4_2
-> Async Foreign Scan on public.parttest_4_3 parttest_4 (cost=100.00..958.75 rows=24925 width=68) (actual time=0.284..17.054 rows=24925 loops=1)
Output: parttest_4.id, parttest_4.val1, parttest_4.val2
Remote SQL: SELECT id, val1, val2 FROM public.parttest_4_3
Query Identifier: 5644017674074468972
Planning Time: 0.642 ms
Execution Time: 152.617 ms
(16 rows)