在Microsoft SQL Server中,下面的代码用于获取IX (意图独占)锁:
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,它们是:
关系、扩展、冻结or、页、元组、事务处理、虚拟page、对象、用户锁或咨询
来自pg_locks的哪些类型的D6等效于来自Microsoft的IX (意图排他)锁?
如果locktype是查看pg_locks的错误列,请建议在pg_locks中使用哪一列?
谢谢
发布于 2021-01-07 11:35:00
你需要后退一步,检查一下锁定的目的是什么。
MS的事务锁定在这里有广泛的解释: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
说:
意图锁之所以被命名为意向锁,是因为它们是在较低级别的锁之前获得的,因此表示有意将锁放置在较低的级别。意图锁有两个目的:防止其他事务修改较高级别的资源,从而使较低级别的锁失效。以提高SQL Server数据库引擎在更高粒度级别检测锁冲突的效率。
no与PostgreSQL中的意向锁等效于。IS、IX、6、IU、SIU、UIX锁模式没有等效的效果,因为它们引用的概念是PostgreSQL没有而且似乎不需要的。
https://dba.stackexchange.com/questions/282728
复制相似问题