Microsoft SQL Server(以下简称SQL
Server)作为一种中小型数据库管理系统,已经得到了广泛的应用,该系统更强调由系统来管理锁。在用户有SQL请求时,系统分析请求,自动在满足锁定
条件和系统性能之间为数据库加上适当的锁,同时系统在运行期间常常自动进行优化处理,实行动态加锁。
对于一般的用户而言,通过系统的自动锁定管理机制基本可以满足使用要求,但如果对数据安全、数据库完整性和一致性有特殊要求,就必须自己控制数据库的锁定和解锁,这就需要了解SQL Server的锁机制,掌握数据库锁定方法。
锁的多粒度性以及锁升级
数据库中的锁是指一种软件机制,用来指示某个用户(也即进程会话,下同)已经占用了某种资源,从而防止其他用户做出影响本用户的数据修改或导致数据库数
据的非完整性和非一致性。这儿所谓资源,主要指用户可以操作的数据行、索引以及数据表等。根据资源的不同,锁有多粒度(multigranular)的概
念,也就是指可以锁定的资源的层次。SQL
Server中能够锁定的资源粒度包括:数据库、表、区域、页面、键值(指带有索引的行数据)、行标识符(RID,即表中的单行数据)。
采用多粒度锁的重要用途是用来支持并发操作和保证数据的完整性。SQL
Server根据用户的请求,做出分析后自动给数据库加上合适的锁。假设某用户只操作一个表中的部分行数据,系统可能会只添加几个行锁(RID)或页面
锁,这样可以尽可能多地支持多用户的并发操作。但是,如果用户事务中频繁对某个表中的多条记录操作,将导致对该表的许多记录行都加上了行级锁,数据库系统
中锁的数目会急剧增加,这样就加重了系统负荷,影响系统性能。因此,在数据库系统中,一般都支持锁升级(lock
escalation)。所谓锁升级是指调整锁的粒度,将多个低粒度的锁替换成少数的更高粒度的锁,以此来降低系统负荷。在SQL
Server中当一个事务中的锁较多,达到锁升级门限时,系统自动将行级锁和页面锁升级为表级锁。特别值得注意的是,在SQL
Server中,锁的升级门限以及锁升级是由系统自动来确定的,不需要用户设置。
SQL Server锁类型
1. HOLDLOCK: 在该表上保持共享锁,直到整个事务结束,而不是在语句执行完立即释放所添加的锁。
2. NOLOCK:不添加共享锁和排它锁,当这个选项生效后,可能读到未提交读的数据或“脏数据”,这个选项仅仅应用于SELECT语句。
3. PAGLOCK:指定添加页锁(否则通常可能添加表锁)。
4. READCOMMITTED用与运行在提交读隔离级别的事务相同的锁语义执行扫描。默认情况下,SQL Server 2000 在此隔离级别上操作。。
5. READPAST: 跳过已经加锁的数据行,这个选项将使事务读取数据时跳过那些已经被其他事务锁定的数据行,而不是阻塞直到其他事务释放锁,READPAST仅仅应用于READ COMMITTED隔离性级别下事务操作中的SELECT语句操作。
6. READUNCOMMITTED:等同于NOLOCK。
7. REPEATABLEREAD:设置事务为可重复读隔离性级别。
8. ROWLOCK:使用行级锁,而不使用粒度更粗的页级锁和表级锁。
9. SERIALIZABLE:用与运行在可串行读隔离级别的事务相同的锁语义执行扫描。等同于 HOLDLOCK。
10. TABLOCK:指定使用表级锁,而不是使用行级或页面级的锁,SQL Server在该语句执行完后释放这个锁,而如果同时指定了HOLDLOCK,该锁一直保持到这个事务结束。
11. TABLOCKX:指定在表上使用排它锁,这个锁可以阻止其他事务读或更新这个表的数据,直到这个语句或整个事务结束。
12. UPDLOCK :指定在读表中数据时设置更新 锁(update
lock)而不是设置共享锁,该锁一直保持到这个语句或整个事务结束,使用UPDLOCK的作用是允许用户先读取数据(而且不阻塞其他用户读数据),并且
保证在后来再更新数据时,这一段时间内这些数据没有被其他用户修改。
分享到:
相关推荐
MS SQL Server数据库事务锁机制分析 MS SQL Server数据库事务锁机制分析
sql server锁机制,介绍sql的各种锁的文档
浅析SQL Server数据库事务锁机制.pdf
SQLSERVER数据库系统安全保护机制研究
无论是操作系统 (Unix 或者Windows),还是应用程序 (Web 服务,数据库系统等等) ,通常都有自身的日志机制,以便故障时追溯现场及原因。Windows Event Log和 SQL Server Error Log是这样的日志, PS: SQL Server 中...
锁机制详解锁机制详解锁机制详解锁机制详解锁机制详解锁机制详解锁机制详解锁机制详解锁机制详解锁机制详解锁机制详解
连接SQL Server数据库的机制
SQL Server数据库安全机制研究.pdf
SQL SERVER数据库安全机制探讨.pdf
浅析SQL Server的锁机制,很深入的介绍了SQL锁的机制和处理方法
SQL SERVER数据库安全机制的研究.pdf
基于SQL Server数据库安全机制研究.pdf
SQL 缓存依赖是.NET Framework2.0里新增的一个功能,当表中或特定行中发生更改时,带有依赖项的项(缓存数据)便会失效,并会从缓存中移除。并重新读取数据到缓存中,这时候应用程序获取的是最新的数据。
SQL server锁的机制 SQL server锁的机制 SQL server锁的机制
SqlServer中日志文件的作用,全量备份,差异备份,事务日志备份,文件备份,部分备份,维护计划的使用。如何新建维护几乎啊,清除备份文件,数据库宕机情况下的应对技巧。
深入介绍了SQL Server的锁的机制,锁与事务隔离等级的关系及影响,分析了死锁的案例和解决方案。提出了锁的性能分析方法,分析并发性阻塞的问题和应用技巧。
本文对数据库安全的内涵和要求及数据库管理系SQL Serer的安全防护机制,如身份认证、访问控制、完整性保障、访问审计、数据加密与视图、存储过程等进行了详细分析和研究。
基于SQL Server数据库安全机制问题的研究与分析.pdf
深入理解SqlServer索引机制及合理优化数据库
【赛迪网-IT技术报道】SQL Server数据库查询速度慢的原因有很多,常见的有以下几种: 1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2、I/O吞吐量小,形成了瓶颈效应。 3、没有...