SQL Server意向锁研究 解决数据库资源冲突(sqlserver意向锁)
SQL Server意向锁研究
随着多人并发访问网站资源和大数据中心的快速增长,资源冲突问题也随之而来,特别是当多个数据库用户同时访问某个数据库时,资源冲突问题就变得异常突出。为了解决这种事务处理数据库中发生的并发时可能出现的资源冲突问题,微软SQL Server提出了一种新的技术,称为“意向锁”。
“意向锁”技术允许一个用户在执行事务更新操作时,锁定相关资源,以防止其他用户对资源的非法访问,也就是说,一个用户更新某些记录时,在某个表中就会创建一个意向锁,以建立对此表中的某个记录有把控权。同时,意向锁还可以定义允许哪些可以访问资源,以及怎样访问资源,以及以怎样的优先级访问资源,以及什么时候请求锁定应该被接受。
要使用意向锁,必须在 T-SQL 语句中使用关键字 WITH,它可以让用户编写有关请求的额外信息。例如,以下查询语句就使用了“WITH”子句,以请求意向锁:
SELECT * FROM Customer WITH (HOLDLOCK)
WHERE CustomerID = ‘123’
上面的查询语句会指定一个HOLDLOCK类型的意向锁,它会阻止其他用户获取数据库中指定ID的客户相关记录,直到当前事务结束。
意向锁正迅速地被企业所采用,并且在实时系统等性能要求极高的系统中得以良好的实现。在微软的 SQL Server 数据库中,只要程序员在写入数据的情况下使用 WTIH 关键字就可以获得获得性能优良的意向锁,这将大大改变系统中并发访问时可能发生的资源冲突问题,从而提升数据库性能。