Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 » SQL Anywhere 服务器 - SQL 的用法 » 事务和隔离级别 » 锁定的工作方式

 

可以锁定的对象

为了确保数据库一致性并支持事务之间适当的隔离级别,SQL Anywhere 使用以下类型的锁:

  • 模式锁   这些锁控制进行模式更改的能力。例如,事务可以锁定表的模式,以防止其它事务修改该表的结构。

  • 行锁   这些锁用于确保行级别上并发事务之间的一致性。例如,事务可锁定特定的行以防止另一个事务对其进行更改,且如果要修改行,则事务必须在该行上放置一个写锁定。要实现最大并发性,可以单独锁定一行中的键值部分和非键值部分。更新某行的非键值列时不会妨碍对引用该行的外行执行插入和删除操作。

  • 表锁   这些锁用于确保表级别上并发事务之间的一致性。例如,通过插入新列更改表结构的事务可锁定一个表,这样其它事务就不会受到模式更改的影响。在这种情况下,必须限制其它事务进行访问,以防止出现错误。

  • 位置锁   这些锁用于确保表的顺序扫描或索引扫描内的一致性。事务通常使用由索引确定的顺序对行进行扫描,或按顺序对行进行扫描。在这两种情况下,都可以将锁放置在扫描位置上。例如,在索引中放置锁可以防止其它事务插入具有特定值或特定值范围的行。

模式锁提供了一种机制,以防止模式更改无意间影响正在执行的事务。行锁、表锁和位置锁每一种都有单独的用途,但是它们相交互。每种锁都能防止一类特定的不一致。根据您选择的隔离级别,数据库服务器将使用这些锁类型中的一些或全部来保持您所要求的一致性等级。

 锁持续时间