--当update语句执行时,如果其可以获得锁其会首先获得一个排它锁 ExclusiveLock
--在session 1 中 开启一个事务
postgres=# begin;
BEGIN
postgres=# update t set user_name='test rudy' where id=1;
--在session 2 中进行查询
postgres=# SELECT locktype,
pg_locks.pid,
virtualtransaction,
transactionid,
nspname,
relname,
mode,
granted,
CASE
WHEN granted='f' THEN
'get_lock'
WHEN granted='t' THEN
'wait_lock'
END lock_satus,
CASE
WHEN waiting='f' THEN
'waiting'
WHEN waiting='t' THEN
'executing'
END lock_satus, cast(date_trunc('second',query_start) AS timestamp) AS query_start, substr(query,1,25) AS query
FROM pg_locks LEFT OUTER
JOIN pg_class
ON (pg_locks.relation = pg_class.oid) LEFT OUTER
JOIN pg_namespace
ON (pg_namespace.oid = pg_class.relnamespace), pg
postgresql的update锁等待
最新推荐文章于 2024-06-26 10:18:28 发布