考试科目: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申请的读共享锁。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




