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

云贝教育【PGCE题目解析3】PG中对于大表,ANALYZE会读取表的所有内容进行统计信息收集。

原创 云贝教育陈老师 2023-11-07
299

考试科目:PGCE-E-091

考试考试题量:44 道单项选择题、29 道多项选择题(每题 2 分)

通过分数:60%

考试时间:60min

本文为云贝教育刘峰原创,请尊重知识产权,转发请注明出处,不接受任何抄袭、演绎和未经注明出处的转载。

【需要通过PGCA、PGCE、PGCM、PGCH内核开发认证考试的同学可以联系云贝陈老师19941464235(微信同号)】



PG中对于大表,ANALYZE会读取表的所有内容进行统计信息收集。

A、正确

B、错误


参考答案:B



解析

根据官方文档中的解释

对于大型表,ANALYZE 对表内容进行随机采样,而不是检查每一行。这甚至可以在很短的时间内分析非常大的表。但请注意,统计信息只是近似值,每次运行 ANALYZE 时都会略有变化,即使实际表内容没有变化。这可能会导致 EXPLAIN 显示的规划者估计成本发生微小变化。在极少数情况下,这种不确定性将导致规划器对查询计划的选择在 ANALYZE 运行后发生变化。为了避免这种情况,请增加 ANALYZE 收集的统计数据量,如下所述。


验证


1、模拟一张大表

testdb=# select count(1) from t1;
  count  
---------
 4613724
(1 row)

2、插入t1表,数据量不超过T1表的10%

目的是不触发自动收集统计信息

testdb=# select relname,reltuples,relpages from pg_class where relname='t1';
 relname |  reltuples   | relpages 
---------+--------------+----------
 t1      | 4.194304e+06 |    18559

确认统计信息并未更新


4、分析表t1

testdb=# analyze VERBOSE t1;
INFO:  analyzing "public.t1"
INFO:  "t1": scanned 20415 of 20415 pages, containing 4613724 live rows and 0 dead rows; 30000 rows in sample, 4613724 estimated total rows
ANALYZE


这里显示是采样统计信息收集


5、查看表t1的统计信息

testdb=# select relname,reltuples,relpages from pg_class where relname='t1';
 relname |  reltuples   | relpages 
---------+--------------+----------
 t1      | 4.613724e+06 |    20415


结论

从上面实验确认,分析大表是采样,并不是全表。



需要通过PGCA、PGCE、PGCM、PGCH内核开发认证考试的同学可以联系云贝陈老师19941464235(微信同号)




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

评论