温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

PostgreSQL中怎么在pg_locks和pg_stat_activity两张基表基础上创建的视图

发布时间:2021-11-08 16:51:09 来源:亿速云 阅读:191 作者:iii 栏目:关系型数据库

这篇文章主要介绍“PostgreSQL中怎么在pg_locks和pg_stat_activity两张基表基础上创建的视图”,在日常操作中,相信很多人在PostgreSQL中怎么在pg_locks和pg_stat_activity两张基表基础上创建的视图问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PostgreSQL中怎么在pg_locks和pg_stat_activity两张基表基础上创建的视图”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

显示阻塞信息的视图:

CREATE OR REPLACE VIEW vw_lockinfo AS SELECT blocked_locks.pid     AS blocked_pid,          blocked_activity.usename  AS blocked_user,          blocking_locks.pid     AS blocking_pid,          blocking_activity.usename AS blocking_user,          blocked_activity.query    AS blocked_statement,          blocking_activity.query   AS current_statement_in_blocking_process    FROM  pg_catalog.pg_locks         blocked_locks     JOIN pg_catalog.pg_stat_activity blocked_activity  ON blocked_activity.pid = blocked_locks.pid     JOIN pg_catalog.pg_locks         blocking_locks          ON blocking_locks.locktype = blocked_locks.locktype         AND blocking_locks.DATABASE IS NOT DISTINCT FROM blocked_locks.DATABASE         AND blocking_locks.relation IS NOT DISTINCT FROM blocked_locks.relation         AND blocking_locks.page IS NOT DISTINCT FROM blocked_locks.page         AND blocking_locks.tuple IS NOT DISTINCT FROM blocked_locks.tuple         AND blocking_locks.virtualxid IS NOT DISTINCT FROM blocked_locks.virtualxid         AND blocking_locks.transactionid IS NOT DISTINCT FROM blocked_locks.transactionid         AND blocking_locks.classid IS NOT DISTINCT FROM blocked_locks.classid         AND blocking_locks.objid IS NOT DISTINCT FROM blocked_locks.objid         AND blocking_locks.objsubid IS NOT DISTINCT FROM blocked_locks.objsubid         AND blocking_locks.pid != blocked_locks.pid     JOIN pg_catalog.pg_stat_activity blocking_activity ON blocking_activity.pid = blocking_locks.pid    WHERE NOT blocked_locks.GRANTED; [local]:5432 pg12@testdb=# CREATE OR REPLACE VIEW vw_lockinfo pg12@testdb-# AS pg12@testdb-# SELECT blocked_locks.pid     AS blocked_pid, pg12@testdb-#          blocked_activity.usename  AS blocked_user, pg12@testdb-#          blocking_locks.pid     AS blocking_pid, pg12@testdb-#          blocking_activity.usename AS blocking_user, pg12@testdb-#          blocked_activity.query    AS blocked_statement, pg12@testdb-#          blocking_activity.query   AS current_statement_in_blocking_process pg12@testdb-#    FROM  pg_catalog.pg_locks         blocked_locks pg12@testdb-#     JOIN pg_catalog.pg_stat_activity blocked_activity  ON blocked_activity.pid = blocked_locks.pid pg12@testdb-#     JOIN pg_catalog.pg_locks         blocking_locks  pg12@testdb-#         ON blocking_locks.locktype = blocked_locks.locktype pg12@testdb-#         AND blocking_locks.DATABASE IS NOT DISTINCT FROM blocked_locks.DATABASE pg12@testdb-#         AND blocking_locks.relation IS NOT DISTINCT FROM blocked_locks.relation pg12@testdb-#         AND blocking_locks.page IS NOT DISTINCT FROM blocked_locks.page pg12@testdb-#         AND blocking_locks.tuple IS NOT DISTINCT FROM blocked_locks.tuple pg12@testdb-#         AND blocking_locks.virtualxid IS NOT DISTINCT FROM blocked_locks.virtualxid pg12@testdb-#         AND blocking_locks.transactionid IS NOT DISTINCT FROM blocked_locks.transactionid pg12@testdb-#         AND blocking_locks.classid IS NOT DISTINCT FROM blocked_locks.classid pg12@testdb-#         AND blocking_locks.objid IS NOT DISTINCT FROM blocked_locks.objid pg12@testdb-#         AND blocking_locks.objsubid IS NOT DISTINCT FROM blocked_locks.objsubid pg12@testdb-#         AND blocking_locks.pid != blocked_locks.pid pg12@testdb-#   pg12@testdb-#     JOIN pg_catalog.pg_stat_activity blocking_activity ON blocking_activity.pid = blocking_locks.pid pg12@testdb-#    WHERE NOT blocked_locks.GRANTED; CREATE VIEW Time: 131.424 ms [local]:5432 pg12@testdb=# select * from vw_lockinfo; -[ RECORD 1 ]-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------- blocked_pid                           | 2184 blocked_user                          | pg12 blocking_pid                          | 2863 blocking_user                         | pg12 blocked_statement                     | update t_lock set id = 1000 where id = 1; current_statement_in_blocking_process | select pid,locktype,relation::regclass,mode,page,tuple,virtualxid,transactionid,virtualtransaction,granted,fastpath from pg_locks where relation='t_lock'::regclass; Time: 21.032 ms

显示带有时间属性的locks

CREATE OR REPLACE VIEW vw_lockinfo_time AS SELECT a.datname,          l.relation::regclass,          l.transactionid,          l.mode,          l.GRANTED,          a.usename,          a.query,          a.query_start,          age(now(), a.query_start) AS "age",          a.pid FROM pg_stat_activity a JOIN pg_locks l ON l.pid = a.pid ORDER BY a.query_start; [local]:5432 pg12@testdb=# CREATE OR REPLACE VIEW vw_lockinfo_time pg12@testdb-# AS pg12@testdb-# SELECT a.datname, pg12@testdb-#          l.relation::regclass, pg12@testdb-#          l.transactionid, pg12@testdb-#          l.mode, pg12@testdb-#          l.GRANTED, pg12@testdb-#          a.usename, pg12@testdb-#          a.query, pg12@testdb-#          a.query_start, pg12@testdb-#          age(now(), a.query_start) AS "age", pg12@testdb-#          a.pid pg12@testdb-# FROM pg_stat_activity a pg12@testdb-# JOIN pg_locks l ON l.pid = a.pid pg12@testdb-# ORDER BY a.query_start; CREATE VIEW Time: 17.799 ms [local]:5432 pg12@testdb=# select * from vw_lockinfo_time; -[ RECORD 1 ]-+-------------------------------------------------------------------------------- ------------------------------------------------------------------------------------- datname       | testdb relation      | t_lock transactionid |  mode          | RowExclusiveLock granted       | t usename       | pg12 query         | select pid,locktype,relation::regclass,mode,page,tuple,virtualxid,transactionid ,virtualtransaction,granted,fastpath from pg_locks where relation='t_lock'::regclass; query_start   | 2019-08-13 15:32:23.139886+08 age           | 00:11:29.095421 pid           | 2863 ...

到此,关于“PostgreSQL中怎么在pg_locks和pg_stat_activity两张基表基础上创建的视图”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI