Sql server 同时使用可序列化和快照隔离的含义

Sql server 同时使用可序列化和快照隔离的含义,sql-server,transactions,snapshot,serializable,Sql Server,Transactions,Snapshot,Serializable,当一个单独的进程正在处理可序列化事务中的连续传入数据时,使用快照隔离一致地读取数据以进行查看,而无需锁定、阻止或脏/幻影读取,是否存在任何问题 我们需要读卡器(保证只读:web数据同步、实时监控视图等)能够读取一致的数据,而不会被阻止或阻止更新。我们对所有内容都使用快照,但一致性失败太多,因此将更新过程切换为可序列化 我已经读过,但不完全清楚同时使用不同隔离级别的影响。我已经看过了,并阅读了各种信息。看起来还可以,但我真的很感谢有实际经验的人对任何重大陷阱的明智指导 在编写可序列化事务时,读卡器

当一个单独的进程正在处理可序列化事务中的连续传入数据时,使用快照隔离一致地读取数据以进行查看,而无需锁定、阻止或脏/幻影读取,是否存在任何问题

我们需要读卡器(保证只读:web数据同步、实时监控视图等)能够读取一致的数据,而不会被阻止或阻止更新。我们对所有内容都使用快照,但一致性失败太多,因此将更新过程切换为可序列化

我已经读过,但不完全清楚同时使用不同隔离级别的影响。我已经看过了,并阅读了各种信息。看起来还可以,但我真的很感谢有实际经验的人对任何重大陷阱的明智指导

在编写可序列化事务时,读卡器使用快照隔离是否存在任何问题?是否存在阻止可序列化事务的情况?使用快照与读取提交(启用读取提交的快照)相比是否有好处


非常感谢,非常感谢您的帮助:-)在快照隔离级别下执行的读取从版本存储中读取任何修改的数据。因此,它们只受写入操作的影响。写入在所有隔离级别下的行为相同。因此,无论并发事务的隔离级别如何,快照读取的行为都是相同的


READ_COMMITTED_SNAPSHOT ON使READ COMMITTED充当快照。实际上,它是快照:READ_COMMITTED_快照是一种快速的方法,可以在不更改代码的情况下将应用程序移植到快照。所以第一段所说的一切都适用。

谢谢!是否存在快照隔离下的读取会导致可序列化事务阻塞的情况?(起初我考虑使用NOLOCK提示,但阅读了一些评论,认为存在风险,所以快照会更好)如果快照事务执行写入,那么它可以阻止任何事务,包括可序列化的事务。如果快照事务执行严格读取,则不会阻止锁上的任何其他事务。还有其他类型的资源争用(即阻塞其他对象而不是锁),但这些都是极端情况,例如内存耗尽,而不是普通操作。在任何情况下,快照读取都是迄今为止最好的选择。