synchronize_seqscans 是一个 配置参数,用于控制是否同步大型表的顺序扫描,以优化 I/O 使用。
synchronize_seqscans 是在 PostgreSQL 8.3 中添加的。
默认
synchronize_seqscans 的默认值为:on。
用法
将 synchronize_seqscans 设置为 off 将恢复 PostgreSQL 8.2 及更早版本的行为。
按 PostgreSQL 版本详细信息
synchronize_seqscans (PostgreSQL 19)
| 设置 |
开启 |
| 单位 |
|
| 类别 |
版本和平台兼容性 / 之前的 PostgreSQL 版本 |
| 简短描述 |
启用同步顺序扫描。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
开启 |
| 重置值 |
开启 |
| 源文件 |
|
| 源行 |
|
| 需要重启 |
false |
文档:synchronize_seqscans
synchronize_seqscans (PostgreSQL 18)
| 设置 |
开启 |
| 单位 |
|
| 类别 |
版本和平台兼容性 / 之前的 PostgreSQL 版本 |
| 简短描述 |
启用同步顺序扫描。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
开启 |
| 重置值 |
开启 |
| 源文件 |
|
| 源行 |
|
| 需要重启 |
false |
文档:synchronize_seqscans
synchronize_seqscans (PostgreSQL 17)
| 设置 |
开启 |
| 单位 |
|
| 类别 |
版本和平台兼容性 / 之前的 PostgreSQL 版本 |
| 简短描述 |
启用同步顺序扫描。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
开启 |
| 重置值 |
开启 |
| 源文件 |
|
| 源行 |
|
| 需要重启 |
false |
文档:synchronize_seqscans
synchronize_seqscans (PostgreSQL 16)
| 设置 |
开启 |
| 单位 |
|
| 类别 |
版本和平台兼容性 / 之前的 PostgreSQL 版本 |
| 简短描述 |
启用同步顺序扫描。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
开启 |
| 重置值 |
开启 |
| 源文件 |
|
| 源行 |
|
| 需要重启 |
false |
文档:synchronize_seqscans
synchronize_seqscans (PostgreSQL 15)
| 设置 |
开启 |
| 单位 |
|
| 类别 |
版本和平台兼容性 / 之前的 PostgreSQL 版本 |
| 简短描述 |
启用同步顺序扫描。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
开启 |
| 重置值 |
开启 |
| 源文件 |
|
| 源行 |
|
| 需要重启 |
false |
文档:synchronize_seqscans
synchronize_seqscans (PostgreSQL 14)
| 设置 |
开启 |
| 单位 |
|
| 类别 |
版本和平台兼容性 / 之前的 PostgreSQL 版本 |
| 简短描述 |
启用同步顺序扫描。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
开启 |
| 重置值 |
开启 |
| 源文件 |
|
| 源行 |
|
| 需要重启 |
false |
文档:synchronize_seqscans
synchronize_seqscans (PostgreSQL 13)
| 设置 |
开启 |
| 单位 |
|
| 类别 |
版本和平台兼容性 / 之前的 PostgreSQL 版本 |
| 简短描述 |
启用同步顺序扫描。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
开启 |
| 重置值 |
开启 |
| 源文件 |
|
| 源行 |
|
| 需要重启 |
false |
文档:synchronize_seqscans
synchronize_seqscans (PostgreSQL 12)
| 设置 |
开启 |
| 单位 |
|
| 类别 |
版本和平台兼容性 / 之前的 PostgreSQL 版本 |
| 简短描述 |
启用同步顺序扫描。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
开启 |
| 重置值 |
开启 |
| 源文件 |
|
| 源行 |
|
| 需要重启 |
false |
文档:synchronize_seqscans
synchronize_seqscans (PostgreSQL 11)
| 设置 |
开启 |
| 单位 |
|
| 类别 |
版本和平台兼容性 / 之前的 PostgreSQL 版本 |
| 简短描述 |
启用同步顺序扫描。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
开启 |
| 重置值 |
开启 |
| 源文件 |
|
| 源行 |
|
| 需要重启 |
false |
文档:synchronize_seqscans
synchronize_seqscans (PostgreSQL 10)
| 设置 |
开启 |
| 单位 |
|
| 类别 |
版本和平台兼容性 / 之前的 PostgreSQL 版本 |
| 简短描述 |
启用同步顺序扫描。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
开启 |
| 重置值 |
开启 |
| 源文件 |
|
| 源行 |
|
| 需要重启 |
false |
文档:synchronize_seqscans
synchronize_seqscans (PostgreSQL 9.6)
| 设置 |
开启 |
| 单位 |
|
| 类别 |
版本和平台兼容性 / 之前的 PostgreSQL 版本 |
| 简短描述 |
启用同步顺序扫描。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
开启 |
| 重置值 |
开启 |
| 源文件 |
|
| 源行 |
|
| 需要重启 |
false |
文档:synchronize_seqscans
synchronize_seqscans (PostgreSQL 9.5)
| 设置 |
开启 |
| 单位 |
|
| 类别 |
版本和平台兼容性 / 之前的 PostgreSQL 版本 |
| 简短描述 |
启用同步顺序扫描。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
开启 |
| 重置值 |
开启 |
| 源文件 |
|
| 源行 |
|
| 需要重启 |
false |
文档:synchronize_seqscans
synchronize_seqscans (PostgreSQL 9.4)
| 设置 |
开启 |
| 单位 |
|
| 类别 |
版本和平台兼容性 / 之前的 PostgreSQL 版本 |
| 简短描述 |
启用同步顺序扫描。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
开启 |
| 重置值 |
开启 |
| 源文件 |
|
| 源行 |
|
文档:synchronize_seqscans
synchronize_seqscans (PostgreSQL 9.3)
| 设置 |
开启 |
| 单位 |
|
| 类别 |
版本和平台兼容性 / 之前的 PostgreSQL 版本 |
| 简短描述 |
启用同步顺序扫描。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
开启 |
| 重置值 |
开启 |
| 源文件 |
|
| 源行 |
|
文档:synchronize_seqscans
synchronize_seqscans (PostgreSQL 9.2)
| 设置 |
开启 |
| 单位 |
|
| 类别 |
版本和平台兼容性 / 之前的 PostgreSQL 版本 |
| 简短描述 |
启用同步顺序扫描。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
开启 |
| 重置值 |
开启 |
| 源文件 |
|
| 源行 |
|
文档:synchronize_seqscans
synchronize_seqscans (PostgreSQL 9.1)
| 设置 |
开启 |
| 单位 |
|
| 类别 |
版本和平台兼容性 / 之前的 PostgreSQL 版本 |
| 简短描述 |
启用同步顺序扫描。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
开启 |
| 重置值 |
开启 |
| 源文件 |
|
| 源行 |
|
文档:synchronize_seqscans
synchronize_seqscans (PostgreSQL 9.0)
| 设置 |
开启 |
| 单位 |
|
| 类别 |
版本和平台兼容性 / 之前的 PostgreSQL 版本 |
| 简短描述 |
启用同步顺序扫描。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
开启 |
| 重置值 |
开启 |
| 源文件 |
|
| 源行 |
|
文档:synchronize_seqscans
synchronize_seqscans (PostgreSQL 8.4)
| 设置 |
开启 |
| 单位 |
|
| 类别 |
版本和平台兼容性 / 之前的 PostgreSQL 版本 |
| 简短描述 |
启用同步顺序扫描。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
开启 |
| 重置值 |
开启 |
| 源文件 |
|
| 源行 |
|
文档:synchronize_seqscans
synchronize_seqscans (PostgreSQL 8.3)
| 设置 |
|
| 单位 |
|
| 类别 |
版本和平台兼容性 / 之前的 PostgreSQL 版本 |
| 简短描述 |
启用同步顺序扫描。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
文档:synchronize_seqscans
变更历史
示例
这个简单的示例展示了 synchronize_seqscans 设置为 on(默认值)和 off 时的计划器行为差异。
postgres=# EXPLAIN ANALYZE SELECT * FROM foo WHERE id > 10000 limit 5;
QUERY PLAN
--------------------------------------------------------------------------------------------------------------
Limit (cost=0.00..0.25 rows=5 width=4) (actual time=0.136..0.137 rows=5 loops=1)
-> Seq Scan on foo (cost=0.00..185288.50 rows=3761080 width=4) (actual time=0.135..0.136 rows=5 loops=1)
Filter: (id > 10000)
Rows Removed by Filter: 2768
Planning Time: 0.033 ms
Execution Time: 0.145 ms
(6 rows)
postgres=# SET synchronize_seqscans TO off;
SET
postgres=# EXPLAIN ANALYZE SELECT * FROM foo WHERE id > 10000 limit 5;
QUERY PLAN
--------------------------------------------------------------------------------------------------------------
Limit (cost=0.00..0.25 rows=5 width=4) (actual time=0.470..0.471 rows=5 loops=1)
-> Seq Scan on foo (cost=0.00..185288.50 rows=3761080 width=4) (actual time=0.469..0.469 rows=5 loops=1)
Filter: (id > 10000)
Rows Removed by Filter: 10000
Planning Time: 0.035 ms
Execution Time: 0.484 ms
(6 rows)