cursor_tuple_fraction

一个 GUC 参数,指示游标将提取的行所占的比例

cursor_tuple_fraction 是一个 配置参数,用于设置规划器对游标将检索的行所占比例的估计。

cursor_tuple_fractionPostgreSQL 8.4 中添加。

默认

cursor_tuple_fraction 的默认值为:0.1

用法

如果查询由游标执行,这意味着查询结果的子集可能会被检索,PostgreSQL 会尝试优化查询计划。例如,如果返回整个数据集作为顺序扫描比索引扫描更有效率,但对于要检索的数据子集来说,索引扫描会更快,它会使用索引扫描。

cursor_tuple_fraction 决定了通过 FETCH 操作预期检索的查询结果百分比,并且如果可用,将选择更适合数据子集的计划。

按 PostgreSQL 版本详细信息

cursor_tuple_fraction (PostgreSQL 19)

设置 0.1
单位  
类别 查询调优 / 其他规划器选项
简短描述 设置规划器对游标将检索的行所占比例的估计。
扩展描述  
上下文 user
变量类型 实数
来源 默认
最小值 0
最大值 1
枚举值  
启动值 0.1
重置值 0.1
源文件  
源行  
需要重启 false

文档cursor_tuple_fraction

cursor_tuple_fraction (PostgreSQL 18)

设置 0.1
单位  
类别 查询调优 / 其他规划器选项
简短描述 设置规划器对游标将检索的行所占比例的估计。
扩展描述  
上下文 user
变量类型 实数
来源 默认
最小值 0
最大值 1
枚举值  
启动值 0.1
重置值 0.1
源文件  
源行  
需要重启 false

文档cursor_tuple_fraction

cursor_tuple_fraction (PostgreSQL 17)

设置 0.1
单位  
类别 查询调优 / 其他规划器选项
简短描述 设置规划器对游标将检索的行所占比例的估计。
扩展描述  
上下文 user
变量类型 实数
来源 默认
最小值 0
最大值 1
枚举值  
启动值 0.1
重置值 0.1
源文件  
源行  
需要重启 false

文档cursor_tuple_fraction

cursor_tuple_fraction (PostgreSQL 16)

设置 0.1
单位  
类别 查询调优 / 其他规划器选项
简短描述 设置规划器对游标将检索的行所占比例的估计。
扩展描述  
上下文 user
变量类型 实数
来源 默认
最小值 0
最大值 1
枚举值  
启动值 0.1
重置值 0.1
源文件  
源行  
需要重启 false

文档cursor_tuple_fraction

cursor_tuple_fraction (PostgreSQL 15)

设置 0.1
单位  
类别 查询调优 / 其他规划器选项
简短描述 设置规划器对游标将检索的行所占比例的估计。
扩展描述  
上下文 user
变量类型 实数
来源 默认
最小值 0
最大值 1
枚举值  
启动值 0.1
重置值 0.1
源文件  
源行  
需要重启 false

文档cursor_tuple_fraction

cursor_tuple_fraction (PostgreSQL 14)

设置 0.1
单位  
类别 查询调优 / 其他规划器选项
简短描述 设置规划器对游标将检索的行所占比例的估计。
扩展描述  
上下文 user
变量类型 实数
来源 默认
最小值 0
最大值 1
枚举值  
启动值 0.1
重置值 0.1
源文件  
源行  
需要重启 false

文档cursor_tuple_fraction

cursor_tuple_fraction (PostgreSQL 13)

设置 0.1
单位  
类别 查询调优 / 其他规划器选项
简短描述 设置规划器对游标将检索的行所占比例的估计。
扩展描述  
上下文 user
变量类型 实数
来源 默认
最小值 0
最大值 1
枚举值  
启动值 0.1
重置值 0.1
源文件  
源行  
需要重启 false

文档cursor_tuple_fraction

cursor_tuple_fraction (PostgreSQL 12)

设置 0.1
单位  
类别 查询调优 / 其他规划器选项
简短描述 设置规划器对游标将检索的行所占比例的估计。
扩展描述  
上下文 user
变量类型 实数
来源 默认
最小值 0
最大值 1
枚举值  
启动值 0.1
重置值 0.1
源文件  
源行  
需要重启 false

文档cursor_tuple_fraction

cursor_tuple_fraction (PostgreSQL 11)

设置 0.1
单位  
类别 查询调优 / 其他规划器选项
简短描述 设置规划器对游标将检索的行所占比例的估计。
扩展描述  
上下文 user
变量类型 实数
来源 默认
最小值 0
最大值 1
枚举值  
启动值 0.1
重置值 0.1
源文件  
源行  
需要重启 false

文档cursor_tuple_fraction

cursor_tuple_fraction (PostgreSQL 10)

设置 0.1
单位  
类别 查询调优 / 其他规划器选项
简短描述 设置规划器对游标将检索的行所占比例的估计。
扩展描述  
上下文 user
变量类型 实数
来源 默认
最小值 0
最大值 1
枚举值  
启动值 0.1
重置值 0.1
源文件  
源行  
需要重启 false

文档cursor_tuple_fraction

cursor_tuple_fraction (PostgreSQL 9.6)

设置 0.1
单位  
类别 查询调优 / 其他规划器选项
简短描述 设置规划器对游标将检索的行所占比例的估计。
扩展描述  
上下文 user
变量类型 实数
来源 默认
最小值 0
最大值 1
枚举值  
启动值 0.1
重置值 0.1
源文件  
源行  
需要重启 false

文档cursor_tuple_fraction

cursor_tuple_fraction (PostgreSQL 9.5)

设置 0.1
单位  
类别 查询调优 / 其他规划器选项
简短描述 设置规划器对游标将检索的行所占比例的估计。
扩展描述  
上下文 user
变量类型 实数
来源 默认
最小值 0
最大值 1
枚举值  
启动值 0.1
重置值 0.1
源文件  
源行  
需要重启 false

文档cursor_tuple_fraction

cursor_tuple_fraction (PostgreSQL 9.4)

设置 0.1
单位  
类别 查询调优 / 其他规划器选项
简短描述 设置规划器对游标将检索的行所占比例的估计。
扩展描述  
上下文 user
变量类型 实数
来源 默认
最小值 0
最大值 1
枚举值  
启动值 0.1
重置值 0.1
源文件  
源行  

文档cursor_tuple_fraction

cursor_tuple_fraction (PostgreSQL 9.3)

设置 0.1
单位  
类别 查询调优 / 其他规划器选项
简短描述 设置规划器对游标将检索的行所占比例的估计。
扩展描述  
上下文 user
变量类型 实数
来源 默认
最小值 0
最大值 1
枚举值  
启动值 0.1
重置值 0.1
源文件  
源行  

文档cursor_tuple_fraction

cursor_tuple_fraction (PostgreSQL 9.2)

设置 0.1
单位  
类别 查询调优 / 其他规划器选项
简短描述 设置规划器对游标将检索的行所占比例的估计。
扩展描述  
上下文 user
变量类型 实数
来源 默认
最小值 0
最大值 1
枚举值  
启动值 0.1
重置值 0.1
源文件  
源行  

文档cursor_tuple_fraction

cursor_tuple_fraction (PostgreSQL 9.1)

设置 0.1
单位  
类别 查询调优 / 其他规划器选项
简短描述 设置规划器对游标将检索的行所占比例的估计。
扩展描述  
上下文 user
变量类型 实数
来源 默认
最小值 0
最大值 1
枚举值  
启动值 0.1
重置值 0.1
源文件  
源行  

文档cursor_tuple_fraction

cursor_tuple_fraction (PostgreSQL 9.0)

设置 0.1
单位  
类别 查询调优 / 其他规划器选项
简短描述 设置规划器对游标将检索的行所占比例的估计。
扩展描述  
上下文 user
变量类型 实数
来源 默认
最小值 0
最大值 1
枚举值  
启动值 0.1
重置值 0.1
源文件  
源行  

文档cursor_tuple_fraction

cursor_tuple_fraction (PostgreSQL 8.4)

设置 0.1
单位  
类别 查询调优 / 其他规划器选项
简短描述 设置规划器对游标将检索的行所占比例的估计。
扩展描述  
上下文 user
变量类型 实数
来源 默认
最小值 0
最大值 1
枚举值  
启动值 0.1
重置值 0.1
源文件  
源行  

文档cursor_tuple_fraction

变更历史

示例

cursor_tuple_fraction 的用法示例 - 首先,设置一个包含 10,000,000 行(已索引)随机数的简单表,并禁用自动清理

cursor_tuple_fraction 设置为 1(最大值)并且 random_page_cost 设置为一个非常高的值时,会选择顺序扫描

postgres=# BEGIN;
BEGIN

postgres=*# SET random_page_cost TO 1000;
SET

postgres=*# SET cursor_tuple_fraction TO 1;
SET

postgres=*# EXPLAIN
  DECLARE cur CURSOR FOR
  SELECT * FROM cursor_test ORDER BY val;
                                 QUERY PLAN                                 
----------------------------------------------------------------------------
 Sort  (cost=40459807.82..40484763.90 rows=9982431 width=8)
   Sort Key: val
   ->  Seq Scan on cursor_test  (cost=0.00..188320.31 rows=9982431 width=8)
(3 rows)

但将其降低到 0.1(默认值)会导致索引扫描

postgres=*# SET cursor_tuple_fraction TO 0.1;
SET

postgres=*# EXPLAIN
  DECLARE cur CURSOR FOR
  SELECT * FROM cursor_test ORDER BY val;
                                         QUERY PLAN                                         
--------------------------------------------------------------------------------------------
 Index Only Scan using val_ix on cursor_test  (cost=0.43..54989736.90 rows=9982431 width=8)
(1 row)

通过实际获取 10 行所需的时间,分别将 cursor_tuple_fraction 设置为 10.1,可以演示这种差异

postgres=# BEGIN ;
BEGIN
Time: 0.261 ms

postgres=*# SET cursor_tuple_fraction TO 1;
SET
Time: 0.305 ms

postgres=*# DECLARE cur CURSOR FOR
  SELECT * FROM cursor_test ORDER BY val;
DECLARE CURSOR
Time: 0.324 ms
postgres=*# FETCH 10 FROM cur; val ------------------------ 4.086947802406371e-08 2.2672169275317344e-07 3.811600721714825e-07 4.729380020940255e-07 5.001395353421145e-07 5.545030219433755e-07 5.911655163171048e-07 6.835541628280595e-07 7.550144764945088e-07 7.852209042980007e-07 (10 rows) Time: 3699.970 ms (00:03.700) postgres=*# SET cursor_tuple_fraction TO 0.1; SET Time: 0.295 ms postgres=*# FETCH 10 FROM cur; val ------------------------ 1.0436382211764794e-06 1.0606182454520052e-06 1.3870003436888823e-06 1.4260912035712892e-06 1.5682459066912458e-06 1.7877217302064707e-06 1.8104408385788417e-06 1.9592999442874515e-06 1.974146760508333e-06 2.328882489743833e-06 (10 rows) Time: 0.311 ms

分类

游标GUC 配置项规划器

反馈

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