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

云贝教育【PGCE题目解析2】PG中,autovacuum可以自动地分析表,并收集表的统计信息。

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

考试科目:PGCE-E-091

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

通过分数:60%

考试时间:60min

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

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





PG中,autovacuum可以自动地分析表,并收集表的统计信息。

A、正确

B、错误


参考答案:A




解析

autovacuum会做两件事

autovacuum_vacuum

autovacuum_analyze


autovacuum_vacuum_threshold:默认50。

与autovacuum_vacuum_scale_factor配合使用, autovacuum_vacuum_scale_factor默认值为20%。

当update,delete的tuples数量超过autovacuum_vacuum_scale_factor*table_size+autovacuum_vacuum_threshold时,进行vacuum。如果要使vacuum工作勤奋点,则将此值改小。

testdb=# show autovacuum_vacuum_threshold;
 autovacuum_vacuum_threshold 
-----------------------------
 50
(1 row)
testdb=# show autovacuum_vacuum_scale_factor;
 autovacuum_vacuum_scale_factor 
--------------------------------
 0.2
(1 row)


autovacuum_analyze_threshold:默认50。

与autovacuum_analyze_scale_factor配合使用, autovacuum_analyze_scale_factor默认10%。

当update,insert,delete的tuples数量超过autovacuum_analyze_scale_factor*table_size+autovacuum_analyze_threshold时,进行analyze。

testdb=# show autovacuum_analyze_threshold;
 autovacuum_analyze_threshold 
------------------------------
 50
(1 row)
testdb=# show autovacuum_analyze_scale_factor;
 autovacuum_analyze_scale_factor 
---------------------------------
 0.1
(1 row)


实验过程


1、创建实验表

postgre=# create table t2(id int,name text);
CREATE TABLE
postgre=# insert into t2 values(generate_series(1,1000),'aaaaa'||generate_series(1,1000));
INSERT 0 1000


2、查看表t2的信息

cmdb=# select relname,reltuples,relpages from pg_class where relname='t2';
 relname | reltuples | relpages 
---------+-----------+----------
 t2      |         -1|      0
(1 row)


3、计算触发条件

autovacuum Vacuum=0.2*1000+50=250;
autovacuum ANALYZE=0.1*1000+50=150;


4、修改t2表151行

postgre=#  update t2 set name='bbb' where id<152; UPDATE 151 postgre=# SELECT schemaname, n_tup_ins as "inserts", n_tup_upd as "updates", n_tup_del as "deletes", n_live_tup as "live_tuples", n_dead_tup as "dead_tuples", last_vacuum, last_autovacuum, last_analyze, last_autoanalyze FROM pg_stat_user_tables WHERE relname = 't2'; -[ RECORD 1 ]----+------------------------------ schemaname | public inserts | 1000 updates | 151 deletes | 0 live_tuples | 1000 dead_tuples | 151 last_vacuum | last_autovacuum | last_analyze | last_autoanalyze | 2023-11-01 21:01:14.482775+08

以上实验可以确认,在修改151条数据时,触发了autovacuum ANALYZE


5、查看统计信息

testdb=# select relname,reltuples,relpages from pg_class where relname='t3';
 relname | reltuples | relpages 
---------+-----------+----------
 t3      |      1000 |        7
(1 row)


可以看到在达到autovacuum ANALYZE的阀值,统计信息己被收集。




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



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

评论