客服微信
考试科目:PGCE-E-091
考试题量:44 道单项选择题、29 道多项选择题(每题 2 分)
通过分数:60%
考试时间:60min
本文为云贝教育刘峰(微信:yunbee_DBA)原创,请尊重知识产权,转发请注明出处,不接受任何抄袭、演绎和未经注明出处的转载。
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=# insert into t1 select * from t1 limit 419420; INSERT 0 419420 testdb=# select count(1) from t1; count --------- 4613724 (1 row)
3、查看t1的统计信息
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
结论
从上面实验确认,分析大表是采样,并不是全表。
PostgreSQL PGCE考试为理论考试,需通过两门考试才能拿到“PostgreSQL PGCE证书”。
以下是PostgreSQL官网的考试费,可以添加云贝教育的课程顾问老师微信19941464235或者19906632509,咨询有优惠。
PostgreSQL证书如下 合格考生公布:考后不超过 5 个工作日 “开源软件联盟 PostgreSQL 分会”公众号发布 证书寄送:考后统一寄送至培训机构)
云贝教育有专业的PostgreSQL PGCE认证培训课程,想快速通过考试的同学可以扫码联系老师咨询(点击文字转跳至PostgreSQL PGCE大纲)