封锁是数据库实现并发控制的重要技术。封锁就是事务T在操作该数据对象(比如一个行、一个数据页、一个表等)之前先对其申请加锁。申请加锁后该事务就对该数据对象具有了一定的控制权限,其他事务想要操作该数据必须必须等到事务T释放该锁为止。这有点类似与在超市里面购物,一个顾客去超市购物他占用了一个寄存用的柜子中一个格子,他占据后别人不能够再使用这个格子,除非等到别人释放了这个格子。
基本的封锁类型有两种:排它锁(简称X锁,X:Exclusive)、共享锁(简称S锁,S:Share)。
一、排它锁:顾名思义,当一个事务T对某个数据对象加上X锁后就不允许其它的事务再到该数据上加任何类型的锁,直到T释放了该锁为止。此时只允许T对该数据执行各种操作。
二、共享锁:顾名思义,当一个事务T对某个数据对象加上S锁后,该事务可以对该数据执行读操作,但不允许修改。然而其它事务也可以在该数据上加S锁,即其它事务也可以读取该数据,但不允许加X锁。
以上就是锁的概念和最基本的类型,从上面我们可以了解到为什么数据库在多个用户同时并发操作的情况下数据库中的数据不会出现任何问题,原因是锁在起作用。
每个具体的数据库系统中提供的锁的类型又是不同的,比如SQLServer中提供了共享锁、更新锁、排他锁、意向锁、架构锁、大容量更新锁及键范围的锁。而锁定的数据范围可以从锁定一个行、一批(多行)、一个数据页、一个表、一个数据文件甚至到锁定整个数据库。Oracle又提供了很大程度上不同的锁。锁的知识非常复杂,各位只需要了解有这么一回事即可。爱钻研的同学可以从SQLServer联机丛书上学到相关知识。
了解了锁之后现在的问题是数据库系统在什么情况下会加什么类型的锁?加锁的时候有什么规定没有?什么时候释放锁?这些问题就是封锁协议,封锁协议中继续讨论。
SQL server数据库管理系统提供的封锁机制解决并发操作
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
上一篇:bgp RR客户端什么作用

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
sql server 数据库日志还原
角色是一个权限的集合,只要将用户加入到角色成员(给用户分配一个角色),就可以给这个用户分配这个角色所具有的全部权限。角色的出现极大的简化了权限的管理。
服务器角色 数据库角色 用户定义数据库角色 架构 -
数据库的并发控制和封锁协议分析
数据库的并发控制和封锁协议分析[摘 要] 数据库可以提供给多个用户共享数据信息资源,所以就
学习笔记 数据库 数据 并发控制