设为首页 收藏本站
查看: 1215|回复: 0

[经验分享] postgresql ANALYZE

[复制链接]

尚未签到

发表于 2016-11-19 06:52:27 | 显示全部楼层 |阅读模式
转载自官方中文文档
名称
ANALYZE -- 收集与数据库有关的统计信息

语法
ANALYZE [ VERBOSE ] [ table [ (column [, ...] ) ] ]
描述
ANALYZE 收集表内容的统计信息,然后把结果保存在系统表 pg_statistic 里。随后,查询规划器就可以使用这些统计帮助判断查询的最佳规划。

如果没有参数,ANALYZE 检查当前数据库里的所有表。如果有参数,ANALYZE 只检查那个表。你还可以给出一列字段名字,这个时候只收集那些字段的统计信息。

参数
VERBOSE
显示处理过程的信息

table
要分析的特定表(可能用模式名修饰)的名字。缺省是当前数据库里所有表。

column
要分析的特定字段的名字。缺省是所有字段。

输出
如果声明了 VERBOSE ,那么 ANALYZE 将发出进度信息,表明当前正在处理的是哪行。同时打印有关改表的很多其它信息。

注意
周期性地运行 ANALYZE ,或者在对表的大部分内容做了更改之后马上运行它是个好习惯,准确的统计信息将帮助规划器选择最合适的查询规划,并因此改善查询处理的速度。一种比较经常采用的策略是每天在低负荷的时候运行一次 VACUUM 和 ANALYZE 。

和 VACUUM FULL 不同的是,ANALYZE 只需要在目标表上有一个读取锁,因此它可以和表上的其它活动并发地运行。

ANALYZE 收集的统计信息通常包括每个字段最常用数值的列表以及显示每个字段里数据近似分布的包线图。如果 ANALYZE 认为它们都没有什么用(比如在一个拥有唯一约束的字段上没有公共的数值)或者是该字段数据类型不支持相关的操作符,那么它们都可以忽略。在章22中有关于统计的更多信息。

对于大表,ANALYZE 采集表内容的一个随机抽样做统计,而不是检查每一行。这样就保证了即使是在很大的表上也只需要很少时间就可以完成分析。不过,要注意的是统计只是近似的结果,而且每次运行 ANALYZE 都会导致 EXPLAIN 显示的规划器的预期开销有一些小变化,即使表内容实际上没有改变也这样。在很小的概率的情况下,这个不确定的行为会导致查询优化器在不同 ANALYZE 之间选择不同的查询规划。为了避免这个问题,可以提高 ANALYZE 收集的统计数量,像下面描述的那样。

分析的广度可以通过用调整 default_statistics_target 配置变量,或者是以每字段为基础通过用 ALTER TABLE ... ALTER COLUMN ... SET STATISTICS (参阅 ALTER TABLE)设置每字段的统计目标来控制。目标数值设置最常用数值列表中的记录的最大数目以及包线图中的最大块数。缺省的目标数值是 10 ,不过可以调节这个数值获取规划器计算精度和 ANALYZE 运行所需要的时间以及 pg_statistic 里面占据的空间数目之间的平衡。特别是,把统计目标设置为零就关闭了该字段的统计收集。这么做对那些从来不参与到查询的 WHERE, GROUP BY, ORDER BY 子句里的字段是很有用的,因为规划器不会使用到这样的字段上的统计。

在被分析的字段中最大的统计目标决定统计采样的行数。增大目标会导致 ANALYZE 的时候成比例地增大对时间和空间的需求。

兼容性
SQL 标准里没有 ANALYZE 语句。
http://blog.csdn.net/scutshuxue/archive/2010/12/14/6075511.aspx

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-302275-1-1.html 上篇帖子: PostgreSQL tips 下篇帖子: postgresql 导出
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表