Dim*_*las 5 sql-server concurrency transaction nolock
最近我NOLOCK在 SQL Server 中搜索了选项。我发现当事务在表上处于活动状态时,SQL Server 甚至不允许从特定表中读取,直到事务提交或回滚(据我了解,何时应该使用“with ( nolock)” )。
同时,其他 RDBMS(例如 PostgreSQL)允许您从具有活动写入事务的行读取值。他们只会给你写之前的价值观。特别是这似乎是 PostgreSQL MVCC 的行为(正如我从第 13 章的介绍中了解到的。并发控制)。
我有这个迫切的问题。为什么在 SQL Server 中存在死锁的可能性,而在其他 RDBMS 中,您只是在写入新值之前获得旧值?
注意:我问是因为我可能理解错误。