数据库锁机制的模式有几种
SQL Server中,锁是中的一个非常重要的概念,它主要用于多用户环境下保证数据库完整性和一致性。
我们知道,多个用户能够同时操纵同一个数据库中的数据,会发生数据不一致现象。即如果没有锁定且多个用户同时访问一个数据库,则当他们的事务同时使用相同的数据时可能会发生问题。这些问题包括:丢失更新、脏读、不可重复读和幻觉读。数据库加锁就是为了解决以上的问题。
当然,加锁固然好,但是一定要避免死锁的出现。
锁的模式和兼容性
在数据库中加锁时,除了可以对不同的资源加锁,还可以使用不同程度的加锁方式,即锁有多种模式,SQL Server中锁模式包括:
1.共享锁
SQL Server中,共享锁用于所有的只读数据操作。共享锁是非独占的,允许多个并发事务读取其锁定的资源。默认情况下,数据被读取后,SQL Server立即释放共享锁。
2.修改锁
修改锁在修改操作的初始化阶段用来锁定可能要被修改的资源,这样可以避免使用共享锁造成的死锁现象。因为使用共享锁时,修改数据的操作分为两步,首先获得一个共享锁,读取数据,然后将共享锁升级为独占锁,然后再执行修改操作。这样如果同时有两个或多个事务同时对一个事务申请了共享锁,在修改数据的时候,这些 事务都要将共享锁升级为独占锁。这时,这些事务都不会释放共享锁而是一直等待对方释放,这样就造成了死锁。如果一个数据在修改前直接申请修改锁,在数据修改的时候再升级为独占锁,就可以避免死锁。修改锁与共享锁是兼容的,也就是说一个资源用共享锁锁定后,允许再用修改锁锁定。
3.独占锁
独占锁是为修改数据而保留的。它所锁定的资源,其他事务不能读取也不能修改。独占锁不能和其他锁兼容。
4.结构锁
结构锁分为结构修改锁(Sch-M)和结构稳定锁(Sch-S)。执行表定义语言操作时,SQL Server采用Sch-M锁,编译查询时,SQL Server采用Sch-S锁。
5.意向锁
意向锁说明SQL Server有在资源的低层获得共享锁或独占锁的意向
6.批量修改锁
批量复制数据时使用批量修改锁。可以通过表的TabLock提示或者使用系统存储过程sp_tableoption的“table lock on bulk load”选项设定批量修改锁。
相关内容
-
win10安全模式
win10安全模式,安全模式,重启,选项,点击,界面,系统,设置,有的...
-
win10进入安全模式的方法步骤
win10进入安全模式的方法步骤,步骤,方法,安全模式,启动,点击,...
-
win10安全模式怎么进入
win10安全模式怎么进入,安全模式,选择,方法,选项,点击,步骤,...
-
微星主板怎么进入bios模式
微星主板怎么进入bios模式,模式,快速,步骤,启动,快捷键,显示...
-
数据库SQL server 2012的安装教程
数据库SQL server 2012的安装教程,安装教程,数据库,安装过程,...
-
sql数据库_SQL Server 2008绿色版经验分享
sql数据库_SQL Server 2008绿色版经验分享,绿色版,数据库,注...
-
正版win7怎样修改任务栏颜色?
正版win7怎样修改任务栏颜色?,修改,任务栏,正版,用户,窗口,咨...
-
Sql server2008正版数据库报价
Sql server2008正版数据库报价,报价,数据库,正版,平台,数据,...
-
sql server数据库_Sql ser2008到2014哪个版本更
sql server数据库_Sql ser2008到2014哪个版本更好用?,版本,数...
-
Win10如何以兼容模式打开程序
Win10如何以兼容模式打开程序,兼容模式,选择,模式,程序运行,...
-
Windows系统sid修改方法
Windows系统sid修改方法,修改,系统,封装,查看,方法,运行,安装...
-
数据库有几种 ,它的作用是什么
数据库有几种 ,它的作用是什么,数据库,服务器,系统,用户,临时...
-
Sql数据库服务怎么弄
Sql数据库服务怎么弄,服务,数据库,服务器,命令,开启,安装,启...
-
数据库的性能从哪几方面测试么呢
数据库的性能从哪几方面测试么呢,性能,数据库,硬件,数据库引...
-
什么是数据库的镜像
什么是数据库的镜像,镜像,数据库,主体,服务器,同步,可用性,安...