WEB开发网
开发学院数据库MSSQL Server 浅析如何掌握SQL Server的锁机制 阅读

浅析如何掌握SQL Server的锁机制

 2007-05-15 09:31:05 来源:WEB开发网   
核心提示: 1.共享锁 SQL Server中,共享锁用于所有的只读数据操作,浅析如何掌握SQL Server的锁机制(5),共享锁是非独占的,允许多个并发事务读取其锁定的资源,因此在编译查询时,其它事务(包括在表上有排它锁的事务)都能继续运行,默认情况下,数据被读取后

1.共享锁  SQL Server中,共享锁用于所有的只读数据操作。共享锁是非独占的,允许多个并发事务读取其锁定的资源。默认情况下,数据被读取后,SQL Server立即释放共享锁。例如,执行查询“SELECT * FROM AUTHORS”时,首先锁定第一页,读取之后,释放对第一页的锁定,然后锁定第二页。这样,就允许在读操作过程中,修改未被锁定的第一页。但是,事务隔离级别连接选项设置和SELECT语句中的锁定设置都可以改变SQL Server的这种默认设置。例如,“ SELECT * FROM AUTHORS HOLDLOCK”就要求在整个查询过程中,保持对表的锁定,直到查询完成才释放锁定。

2.更新锁  更新锁在修改操作的初始化阶段用来锁定可能要被修改的资源,这样可以避免使用共享锁造成的死锁现象。因为使用共享锁时,修改数据的操作分为两步,首先获得一个共享锁,读取数据,然后将共享锁升级为排它锁,然后再执行修改操作。这样如果同时有两个或多个事务同时对一个事务申请了共享锁,在修改数据的时候,这些事务都要将共享锁升级为排它锁。这时,这些事务都不会释放共享锁而是一直等待对方释放,这样就造成了死锁。如果一个数据在修改前直接申请更新锁,在数据修改的时候再升级为排它锁,就可以避免死锁。

3.排它锁  排它锁是为修改数据而保留的。它所锁定的资源,其他事务不能读取也不能修改。 

4.结构锁 执行表的数据定义语言 (DDL) 操作(例如添加列或除去表)时使用架构修改 (Sch-M) 锁。当编译查询时,使用架构稳定性 (Sch-S) 锁。架构稳定性 (Sch-S) 锁不阻塞任何事务锁,包括排它锁。因此在编译查询时,其它事务(包括在表上有排它锁的事务)都能继续运行。但不能在表上执行 DDL 操作。

上一页  1 2 3 4 5 

Tags:浅析 如何 掌握

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接