共計 2288 個字符,預(yù)計需要花費 6 分鐘才能閱讀完成。
本篇內(nèi)容介紹了“PostgreSQL 中函數(shù) pg_blocking_pids 的作用是什么”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓丸趣 TV 小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
函數(shù) pg_blocking_pids 用于獲取哪些進(jìn)程 (輸出參數(shù)) 阻塞了某個進(jìn)程(輸入?yún)?shù)).
我們在執(zhí)行某些操作時,console 可能會掛起沒有輸出, 這時候你沒有辦法判斷是因為執(zhí)行很慢還是因為被阻塞了, 通過 pg_blocking_pids 可以判斷是否存在阻塞.
----------- session 1
[local]:5432 pg12@testdb=# begin;
BEGIN
Time: 2.877 ms
[local]:5432 pg12@testdb=#* delete from tbl where id = 1;
DELETE 1
Time: 1.113 ms
----------- session 2
[local]:5432 pg12@testdb=# begin;
BEGIN
Time: 1.700 ms
[local]:5432 pg12@testdb=#* delete from tbl where id = 1;
----------- session 3
[local]:5432 pg12@testdb=# select * from pg_blocking_pids(1628);
pg_blocking_pids
------------------
{1541}
(1 row)
Time: 1.838 ms
[local]:5432 pg12@testdb=#
通過查詢可發(fā)現(xiàn)阻塞 pid = 1628 的進(jìn)程 1541. 這時候可以查詢 pg_locks 和進(jìn)程活動信息獲取更詳細(xì)的信息
[local]:5432 pg12@testdb=# select pid,locktype,relation::regclass,mode,page,tuple,virtualxid,transactionid,virtualtransaction,granted,fastpath from pg_locks where relation= tbl ::regclass;
-[ RECORD 1 ]------+--------------------
pid | 1628
locktype | relation
relation | tbl
mode | RowExclusiveLock
page |
tuple |
virtualxid |
transactionid |
virtualtransaction | 5/27
granted | t
fastpath | t
-[ RECORD 2 ]------+--------------------
pid | 1541
locktype | relation
relation | tbl
mode | RowExclusiveLock
page |
tuple |
virtualxid |
transactionid |
virtualtransaction | 3/123
granted | t
fastpath | t
-[ RECORD 3 ]------+--------------------
pid | 1628
locktype | tuple
relation | tbl
mode | AccessExclusiveLock
page | 0
tuple | 1
virtualxid |
transactionid |
virtualtransaction | 5/27
granted | t
fastpath | f
Time: 4.863 ms
進(jìn)程活動信息
[local]:5432 pg12@testdb=# select * from pg_stat_activity where pid = 1541;
-[ RECORD 1 ]----+------------------------------
datid | 16384
datname | testdb
pid | 1541
usesysid | 10
usename | pg12
application_name | psql
client_addr |
client_hostname |
client_port | -1
backend_start | 2019-08-14 10:46:54.422873+08
xact_start | 2019-08-14 12:06:14.357368+08
query_start | 2019-08-14 12:06:16.982161+08
state_change | 2019-08-14 12:06:16.983058+08
wait_event_type | Client
wait_event | ClientRead
state | idle in transaction
backend_xid | 625
backend_xmin |
query | delete from tbl where id = 1;
backend_type | client backend
Time: 8.979 ms
“PostgreSQL 中函數(shù) pg_blocking_pids 的作用是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注丸趣 TV 網(wǎng)站,丸趣 TV 小編將為大家輸出更多高質(zhì)量的實用文章!
正文完
發(fā)表至: 數(shù)據(jù)庫
2023-07-26