陈老师:1415968548 郑老师:2735197625 乐老师:354331153
客服热线:
19941464235/19906632509(微信同号)

客服微信

【PostgreSQL PGCE-091题目解析21】使用ANALYZE搜集统计信息时,会在表上加一个读锁,因此它可以和表上的其他SQL并发的执行。

作者:炎燚小寶
原创
发布时间:2023-12-22 17:41
浏览量:158

考试科目PGCE-E-091

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

通过分数:60%

考试时间:60min

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




使用ANALYZE搜集统计信息时,会在表上加一个读锁,因此它可以和表上的其他SQL并发的执行。

A. 正确

B. 错误

参考答案:A


解析:

一、窗口1执行大批量修改

testdb=# begin;
BEGIN
testdb=*# select pg_backend_pid();
pg_backend_pid
----------------
         35304
(1 row)

testdb=*# select txid_current();
txid_current
--------------
         777
(1 row)
testdb=*# update t1 set a=667 ;


二、窗口2执行收集统计信息

testdb=# analyze t1;
ANALYZE


发现很快就执行完成


三、窗口3查看琐信息

testdb=# select locktype,database,relation::regclass,transactionid,pid,mode from pg_locks order by pid;
    locktype   | database |  relation  | transactionid |  pid  |    mode
---------------+----------+------------+---------------+-------+------------------
virtualxid     |          |            |               | 30854 | ExclusiveLock
relation       |    16389 | pg_locks   |               | 30854 | AccessShareLock
relation       |    16389 | idx_t1_a4  |               | 35304 | RowExclusiveLock
relation       |    16389 | idx_t1_a3  |               | 35304 | RowExclusiveLock
relation       |    16389 | idx_t1_a2  |               | 35304 | RowExclusiveLock
relation       |    16389 | idx_t1_a1  |               | 35304 | RowExclusiveLock
relation       |    16389 | idx_t1_a   |               | 35304 | RowExclusiveLock
relation       |    16389 | t1         |               | 35304 | RowExclusiveLock
virtualxid     |          |            |               | 35304 | ExclusiveLock
relation       |    16389 | idx_t1_a41 |               | 35304 | RowExclusiveLock
transactionid  |          |            |           777 | 35304 | ExclusiveLock
relation       |    16389 | idx_t1_a5  |               | 35304 | RowExclusiveLock
(12 rows)


结论:我们发现,修改会话1持有对象T1上的RowExclusiveLock,而会话2在执行分析时未申请对象上的排它锁,所以可以正常执行。

进一步确认analyze申请的读共享锁。




PostgreSQL PGCE考试为理论考试,需通过两门考试才能拿到“PostgreSQL PGCE证书”。



以下是PostgreSQL官网的考试费,可以添加云贝教育的课程顾问老师微信19941464235或者19906632509,咨询有优惠


PostgreSQL证书如下 合格考生公布:考后不超过 5 个工作日  “开源软件联盟 PostgreSQL 分会”公众号发布  证书寄送:考后统一寄送至培训机构)



云贝教育有专业的PostgreSQL PGCE认证培训课程,想快速通过考试的同学可以扫码联系老师咨询(点击文字转跳至PostgreSQL PGCE纲)