SQL Server数据库锁的类型、用法及注意事项详解

一、为什么要引入锁

多个用户同时对数据库的并发操作时会带来以下数据不一致的问题:

丢失更新:A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个修改的结果,比如订票系统

脏读:A用户修改了数据,随后B用户又读出该数据,但A用户因为某些原因取消了对数据的修改,数据恢复原值,此时B得到的数据就与数据库内的数据产生了不一致

不可重复读:A用户读取数据,随后B用户读出该数据并修改,此时A用户再读取数据时发现前后两次的值不一致

并发控制的主要方法是封锁,锁就是在一段时间内禁止用户做某些操作以避免产生数据不一致

二、锁的种类

从整个数据库应用系统编程者角度说,锁分为两类:

1 乐观锁

2 悲观锁

乐观锁的含义是:指望DBMS自动完成所有的锁操作、且结果理想,程序员根本不知道锁的存在;而悲观锁则完全相反:

所有操作都必须自己完成锁操作,根本不指望其他系统能得到支持。

猜你喜欢

转载自blog.csdn.net/lucky51222/article/details/104621398