锁兼容性
如果某个事务已锁定一个资源,而另一事务又需要访问该资源,那么 Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) 会根据第一个事务所用锁定模式的兼容性确定是否授予第二个锁。
对于已锁定的资源,只能施加兼容类型的锁。例如,如果持有排他 (X) 锁,那么,除非在第一个事务结束时释放该 X 锁,否则其他事务将无法获取该资源的共享锁、更新锁或排他锁。相反,如果已向某个资源应用共享 (S) 锁,那么,即使第一个事务尚未完成,其他事务也可以获取该资源的共享锁或更新 (U) 锁。但是,只有在释放共享锁之后,其他事务才可以获取排他锁。
资源的锁定模式有一个兼容性矩阵,可以显示哪些锁与在同一资源上获取的其他锁兼容,并按照锁强度递增的顺序列出这些锁。
下表显示了请求的锁定模式及其与现有锁定模式的兼容性:
请求的模式 | IS | S | U | IX | SIX | X |
---|---|---|---|---|---|---|
意向共享 (IS) |
是 |
是 |
是 |
是 |
是 |
否 |
共享 (S) |
是 |
是 |
是 |
否 |
否 |
否 |
更新 (U) |
是 |
是 |
否 |
否 |
否 |
否 |
意向排他 (IX) |
是 |
否 |
否 |
是 |
否 |
否 |
意向排他共享 (SIX) |
是 |
否 |
否 |
否 |
否 |
否 |
排他 (X) |
否 |
否 |
否 |
否 |
否 |
否 |
注意: |
---|
IX 锁与 IX 锁定模式兼容,因为 IX 指示其意向是更新某些行,而不是更新所有行。只要不会影响其他事务正在更新的行,那么也允许其他事务读取或更新某些行。 |
锁兼容性矩阵
SQL Server Compact Edition 支持下列锁:
- Sch-S、Sch-X、S、U、X、IS、IU、IX、SIU、SIX、UIX
注意: |
---|
除了架构修改 (Sch-M) 锁定模式之外,架构稳定性 (Sch-S) 锁与所有锁定模式都兼容。Sch-M 锁与所有锁定模式都不兼容。 |
有关锁兼容性矩阵,请参阅 SQL Server 联机丛书。