42、SQL Server并发编程:悲观锁与乐观锁策略

SQL Server并发编程:悲观锁与乐观锁策略

1. SQL Server并发特性升级

在SQL Server中,SNAPSHOT隔离级别和READ_COMMITTED_SNAPSHOT设置是并发特性的重要升级。当进行表数据读取时,第二次读取的数据可能与第一次不同,这种行为类似于普通的READ COMMITTED,但在检索单个语句产生的行时,不会出现幻读和不可重复读的问题(其他用户在扫描表时可以删除和添加行,但不会影响当前读取),且SQL Server无需加锁或阻塞其他用户。

虽然它在数据一致性方面与普通的READ COMMITTED存在相同问题,甚至可能稍差,但它能减少阻塞,降低在小报告和只读查询中使用脏读查看活动OLTP数据的需求,还能为用户界面进程缓存数据。

2. 并发编程考虑因素

在构建数据库系统时,必须考虑多个用户可能同时修改数据的情况。大多数应用程序的一般事件流程如下:
1. 为用户或进程获取数据以供查看。
2. 对数据进行操作。
3. 对数据进行更改或根据检索到的值做出决策。
4. 用户完成操作后,将更改提交到数据库,或根据决策将数据保存到其他表。

在编码时,需要考虑用户将数据缓存在客户端时的延迟时间。例如,当不同用户想要同一数据并进行更改时,可采用以下常见方案:
- 悲观锁 :假设用户很可能尝试修改相同数据,因此对重要资源进行单线程访问。
- 乐观锁 :假设用户不太可能在同一时间尝试修改同一行数据,仅在用户想要更改数据时验证缓存数据的有效性。

使用这两种方案中的一种

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值