postgresql - 为什么位图堆扫描的成本与行数不成线性关系
问题描述
我在 postgres 中有两个分析解释输出的两个部分:
-> Bitmap Heap Scan on changegroup cg (cost=332.95..23432.90 rows=17616 width=16) (actual time=1.728..68.845 rows=18091 loops=1)
Recheck Cond: (issueid = 371928)
Heap Blocks: exact=1606
和
-> Bitmap Heap Scan on changeitem ci (cost=4439.94..87423.34 rows=205872 width=17) (actual time=65.291..4281.683 rows=208856 loops=1)
Recheck Cond: ((field)::text = 'Flaky Count'::text)
Heap Blocks: exact=25026
Postgres 预测第二个查询的成本将比第一个查询高 4 倍,尽管预测的行数超过 10 倍。
另一个奇怪的是,第二个查询的实时时间不仅长了 10 倍,甚至是 80 倍左右。
为什么成本甚至与行数不成线性关系,为什么时间与行数呈线性关系?
解决方案
推荐阅读
- linux-kernel - 设备驱动程序和文件系统之间的关系是什么
- kubernetes - 尝试执行从初始化容器复制的文件时,Kubernetes 卷 emptyDir 权限被拒绝
- tcl - 如何在 tcl 中读取 xlsx 工作表文件?
- laravel - 在具有非公共 URL 的 Laravel 应用程序上使用 Elastic Beanstalk 工作程序和 Amazon SQS
- python - 如何在指定签名类型的同时将字符串参数从另一个内部传递给 numba njit python 函数?
- python - 使用 Python 移动 Dropbox 智能同步文件/文件夹
- c - 像堆栈这样的段使用需求分页吗?
- javascript - 密码生成器出现“RangeError:超出最大调用堆栈大小”
- javascript - 如何创建一个返回数组中第一个重复值的索引的函数?
- javascript - 函数卡在一个值上(它返回但值不更新)JS