AWS RDS-Lock:transactionid 与 Lock:tuple 区别?

问题描述 投票:0回答:1

我正在检查 AWS RDS 的文档(以及我的数据库的性能见解),我发现 lock:transactionidlock:tuple 有 2 个单独的描述。然而,我不清楚有什么区别,因为行和元组在数据库中意味着相同的东西。那么为什么 RDS 有 2 种不同的方式来描述同一事物?

amazon-web-services amazon-rds
1个回答
0
投票

这与OP相关可能为时已晚,但对于任何通过谷歌搜索的人来说,这与事务与元组上下文有关。

  • Lock:transactionid = 等待事务持有的锁,并且锁信息在内存中可用。阻塞事务还可能持有其他锁,而不仅仅是该元组上的锁。
  • Lock:tuple = 这是您认为的行/元组级锁。只是在像 pg_locks 这样的视图中,您更有可能看到 transactionid 锁,因为元组级锁信息通常保存在磁盘上。

虽然元组是一种可锁定类型的对象,但有关行级锁的信息存储在磁盘上,而不是内存中,因此行级锁通常不会出现在该视图中。如果一个进程正在等待行-级别锁,它通常会在视图中显示为等待该行锁当前持有者的永久事务 ID。

来自 https://www.postgresql.org/docs/17/view-pg-locks.html

© www.soinside.com 2019 - 2024. All rights reserved.