在 Microsoft SQL Server 中,以下代码用于获取 IX(Intent Exclusive)锁:
SELECT request_mode FROM sys.dm_tran_locks WHERE resource_database_id = DB_ID() AND resource_associated_entity_id = OBJECT_ID(N'dbo.cars');
在 PostgreSQL 中,pg_locks
表可以用来告诉锁信息。但是,有许多类型locktype
,它们是:
关系、扩展、frozenid、页面、元组、transactionid、virtualxid、对象、用户锁或咨询
哪种类型的locktype
frompg_locks
相当于 Microsoft SQL Server 的 IX(Intent Exclusive)锁?
如果locktype
要查看的列有误pg_locks
,请告知我应该使用哪一列pg_locks
?
谢谢
您需要退后一步,检查意图锁的用途。
此处对MS-SQL 服务器的事务锁定进行了广泛解释: https ://learn.microsoft.com/en-us/sql/relational-databases/sql-server-transaction-locking-and-row-versioning-guide
对于PostgreSQL,它在这里得到了广泛的解释 https://www.postgresql.org/docs/current/mvcc.html
MS-SQL 服务器文档说:
PostgreSQL中没有与意图锁等效的东西。IS、IX、SIX、IU、SIU、UIX 锁定模式没有等价物,因为它们指的是 PostgreSQL 没有并且看似不需要的概念。