mssql sqlserver 并发影响及并发控制类型


摘要:
当多个用户同时操作指定数据时,如果存储系统没有做好相关的并发控制,则会产生脏读,更新丢失等
异常现象,下文讲述并发影响及并发控制,如下所示:



一、并发影响

1.1 丢失更新
当两个人同时对数据库指定行进行修改操作,此时后提交的人会将前一个人提交的数据更新掉,
此时就会出现”丢失更新”。
1.2 脏读
当一个人正在操作相关数据,另一个人正在同时读取此数据,此时如果不进行相关控制,则读取数据
可能为操作前或操作后的数据,我们并不能确定数据的正确性。
1.3 不一致性
当在一个操作中,我们多次获取同一行数据,可能每次获取的数据都不相同。
1.4 幻读
当我们对一行数据执行插入和删除操作时,此时行数据被其它事务读取时,可能出现幻读(假读)

二、并发控制方法

1.悲观并发控制
当我们对某一行数据进行操作时,只有当锁的持有者释放该锁,其它用户才可以对行数据进行相关操作,
这种方法我们称之为悲观并发控制。
悲观并发控制主要应用于数据需强保护的环境中。
2.乐观并发控制
当我们使用乐观并发控制时,用户读取数据时不需锁定数据。
当数据被编辑完发送更新时,系统会检查读取的数据是否被更改,如果更新,则产生相应的错误信息,
当用户收到错误信息后,将回滚读取事务,重新读取数据。