锁定 (SQL Server Compact Edition)
当多个用户或应用程序同时访问同一数据时,锁定可防止这些用户或应用程序同时对数据进行更改。锁由 Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) 数据库引擎 在内部进行管理。根据用户采取的操作,会自动获取和释放锁。
如果在没有使用锁定时多个用户同时更新同一数据,则数据库内的数据会出现逻辑错误。如果出现这种情况,则对这些数据执行的查询可能会产生意外的结果。
应用程序从不直接请求锁。相反,当事务开始并在事务内以查询语言、数据操作语言 (DML) 或数据定义语言 (DDL) 执行命令时,SQL Server Compact Edition 会锁定任何所需的资源以帮助保护所需隔离级别的资源。
SQL Server Compact Edition 自动确定何时为所有资源授予和释放锁。默认情况下,行级锁定用于数据页,页级锁定用于索引页。为保留系统资源,当超过行锁数的可配置阈值时,锁管理器将自动执行锁升级。在锁管理器中可以为每个会话分配的最大锁数是 262143。
您可以选择更改某些操作的锁定粒度。请慎用此操作,因为更改锁定粒度可能对并发性有负面影响。
SQL Server Compact Edition 可以锁定下列资源:
- 行
- 4 KB 数据页或索引页
- 表架构
- 表
- 数据库
在较小粒度(如行级)上锁定会提高并发性,但开销更多,因为如果锁定许多行,则必须持有更多的锁。在较大粒度(如表级)上锁定会降低并发性,因为锁定整个表会限制其他事务对该表任何部分的访问。但是,此级别上的锁定开销较少,因为维护的锁较少。
本节的相关信息
主题 | 说明 |
---|---|
介绍 SQL Server 2005 Compact Edition 中锁定的基础知识。 |
|
介绍 sys.lock_information 视图返回的显示信息。 |
|
介绍自定义锁定的方法。 |