sql-server – 最小事务隔离级别,以避免“丢失更新”
发布时间:2020-12-12 16:09:46 所属栏目:MsSql教程 来源:网络整理
导读:使用SQL Server的事务隔离级别,可以避免某些不必要的并发问题,如脏读等. 我现在感兴趣的是丢失的更新 – 事实上,两个事务可以覆盖彼此的更新,而没有任何人注意到.我看到并听到关于最低限度的隔离级别的冲突声明,我必须选择避免这种情况. Kalen Delaney在她的
使用SQL Server的事务隔离级别,可以避免某些不必要的并发问题,如脏读等.
我现在感兴趣的是丢失的更新 – 事实上,两个事务可以覆盖彼此的更新,而没有任何人注意到.我看到并听到关于最低限度的隔离级别的冲突声明,我必须选择避免这种情况. Kalen Delaney在她的“SQL Server内部”一书中说(第10章 – 事务和并发 – 第592页): 在读取未提交的隔离中,除了丢失更新之外,上述所有行为都是可能的. 另一方面,独立的SQL Server培训师给我们一个类告诉我们,我们至少需要“可重复读取”来避免丢失更新. 那么谁是对的?为什么? 解决方法本书中的例子是文员A和文员B接收小部件的发货.他们都检查当前库存,见25库存.文员A有50个小部件和更新到75,文员B有20个小部件,所以更新45覆盖以前的更新. 我认为她的意思是这个现象可以避免在所有的隔离级别的文员A做 UPDATE Widgets SET StockLevel = StockLevel + 50 WHERE ... 和文员B做 UPDATE Widgets SET StockLevel = StockLevel + 20 WHERE ... 当然,如果SELECT和UPDATE作为单独的操作完成,则需要重复的读取才能避免这种情况,因此在该事务的持续时间内保持该行的S锁定(这将导致此情况下的死锁) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- azure – App Insights:禁用SQL依赖关系遥测
- SqlServer分组查询,row_number,partition运用
- sql-server – 删除存储过程的SQL Server 2008日志
- 【SQLServer】“无法对数据库'XXX' 执行删除,因为
- 数据库设计 – OAuth Provider的建议数据库结构是什么
- sql数据库批量处理脚本
- 在sqlserver2005中安装sql server 2000的示例数据库northwi
- ssis – 如何在Foreach文件枚举器上为FileSpec属性设置表达
- Win7下安装MySQL5.7.16过程记录
- sqlserver 2005 kill 连接