暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PG执行计划

原创 IT邦德 2021-08-30
567
作者:IT邦德

中国DBA联盟(ACDU)成员,目前从事DBA及程序编程(Web\java\Python)工作,主要服务于生产制造
现拥有 Oracle 11g  OCP/OCM、Mysql、Oceanbase(OBCA)认证
分布式TBase\TDSQL数据库、国产达梦数据库以及红帽子认证
从业8年DBA工作,在数据库领域有丰富的经验
B站主播Oracle、Mysql、PG实战课程,请搜索:jeames007

微信:jem_db
QQ交流群:168797397

1 执行计划

优化器基于代价估算生成最佳的执行计划
顺序扫描还是索引扫描?
有多个索引时使用哪个索引或哪些索引的组合?
使用何种索引扫描方式?
Indexscan
先查索引找到匹配记录的ctid,再通过ctid查堆表
bitmapscan
先查索引找到匹配记录的ctid集合,把ctid通过bitmap做集合运算和排序后再查堆表
Indexonlyscan
如果索引字段中包含了所有返回字段,对可见性映射 (vm)中全为可见的数据块,
不查堆表直接返回索引中的值。关于Index-Only扫描可参考:
https://wiki.postgresql.org/wiki/Index-only_scans

可通过下面的SQL查询代价估算相关的参数值
代价估算基于内置的公式+代价估算参数+统计信息
select name,setting,unit,short_desc from pg_settings where category ='Query Tuning / Planner Cost Constants';


2.统计信息

pg_class
每个表和索引中的记录总数占据的磁盘块数( pg_class表的 reltuples和relpages )
select reltuples,relpages from pg_class;

pg_statistic/pg_stats

NULL字段的比例,独立数值的数目,最常见数值及频度,直方图等,参考
http://www.postgres.cn/docs/12/view-pg-stats.html

统计信息的更新

统计信息是采样值而非精确值,由ANALYZE和VACUUM ANALYZE命令收集。
autovacuum后台进程会自动收集和更新统计信息,关于autovacuum的调度参考:
http://www.postgres.cn/docs/12/runtime-config-autovacuum.html

本文如有错误或不完善的地方请大家多多指正,请关注公众号:IT邦德
留言微信:jem_db 或 QQ:2243967774 皆可,您的批评指正是我写作的最大动力!
大家多多点赞,转发,谢谢

PG海报.jpeg

最后修改时间:2021-09-03 22:21:10
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论