SQL server数据库并发控制--加锁
来源:互联网 发布:部落冲突亡灵升级数据 编辑:程序博客网 时间:2024/04/20 14:13
http://blog.csdn.net/zdplife/article/details/48035837
当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁。加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作。
锁的分类(SQLServer):
1. 共享(S)锁
多个事务可封锁一个共享页;任何事务都不能修改该页;通常是该页被读取完毕,S锁立即被释放。
2. 排它(X)锁
仅允许一个事务封锁此页;其他任何事务必须等到X锁被释放才能对该页进行访问;X锁一直到事务结束才能被释放。
3. 更新(U)锁
更新锁在修改操作的初始化阶段用来锁定可能要被修改的资源,这样可以避免使用共享锁造成的死锁现象。
因为使用共享锁时,修改数据的操作分为两步,首先获得一个共享锁,读取数据,然后将共享锁升级为排它锁,然后再执行修改操作。这样如果同时有两个或多个事务同时对一个事务申请了共享锁,在修改数据的时候,这些事务都要将共享锁升级为排它锁。这时,这些事务都不会释放共享锁而是一直等待对方释放,这样就造成了死锁。如果一个数据在修改前直接申请更新锁,在数据修改的时候再升级为排它锁,就可以避免死锁。
SQL Server支持的锁粒度可以分为为行、页、键、键范围、索引、表或数据库。
0 0
- SQL server数据库并发控制--加锁
- 数据库并发控制及SQL Server的并发控制机制
- SQL Server 2008多版本并发控制
- SQL Server 2000 并发控制内容提要
- SQL SERVER 行加锁问题
- SQL SERVER 行加锁问题
- MySQL的并发控制与加锁分析
- MySQL的并发控制与加锁分析
- mysql的并发控制和加锁分析
- MySQL的并发控制和加锁分析
- 浅谈SQL Server数据库并发测试方法
- 浅谈SQL Server数据库并发测试方法
- 浅谈SQL Server数据库并发测试方法
- 浅谈SQL Server数据库并发测试方法
- 浅谈SQL Server数据库并发测试方法
- 浅谈SQL Server数据库并发测试方法
- 事务并发——并发控制(加锁)
- SQL Server数据库的安全性控制策略
- 【poj2886】Who Gets the Most Candies?——线段树
- MySQL 触发器简单实例
- PAT乙级—1048. 数字加密(20)-native
- 程序员面试金典(三)--数组和字符串
- C++开源库
- SQL server数据库并发控制--加锁
- N-0.5倍分频(Verilog)
- 如何学习android(看stay4it的笔记)+android stdio简单实用简介
- Oracle 执行计划优化
- AngularJs+bootstrap搭载前台框架2
- ThinkPHP中的行为扩展和插件详解
- linux IIC子系统分析(六)——I2c plaform driver 初始化
- Linear Layout
- 解决AngularJS使用ng-bind-html会过滤html中style属性的问题