考试科目: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
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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。





