gpt4 book ai didi

.net - Web 应用程序的最佳 SQL Server 隔离级别?

转载 作者:行者123 更新时间:2023-12-01 13:55:36 24 4
gpt4 key购买 nike

我们有一个使用 ASP.NET MVC 的网站和 SQL Server 2008 年,我们使用的是可序列化的默认事务范围隔离级别。但是,如果打开任何事务,它会使应用程序无法使用,因为我们有一个几乎所有东西都在使用的表,并且它运行起来像

select * from table1 where id = 1

所以我认为在执行上述操作时它会锁定整个表。

我一直在阅读对于具有大量事务的 Web 应用程序来说,什么是最佳选择。

我有点喜欢快照隔离级别。尽善尽美:

  • 通过抛出错误更改读取数据时的数据保护。
  • 还允许读取事务中的数据。

根据您的经验,Web 应用程序可以采用哪种隔离级别?

编辑:默认隔离级别来自事务范围,只是为了澄清我为什么提到可序列化作为默认值。

我在这里阅读了很多博客和答案,建议使用 no_lock 进行选择,但如果你问我,那是一种 hack。在现实生活场景中,可能有 99.99% 的时间会没事。这对 Facebook、Twitter 或 Stack Overflow 来说是件好事。谁在乎数据是否损坏。但我的看法是,如果我们使用事务隔离,那么它必须是 100% 保证的架构。否则根本不要使用它,并使用触发器或其他东西添加一些其他数据完整性检查。

最佳答案

您应该在数据库中使用已提交的读取快照。此隔离级别提供最高程度的并发性,但代价是在更新期间维护版本存储。如果您的应用是读取密集型应用而不是 oltp 密集型应用,那么这种权衡是值得的。

如果您在数据库中启用了已提交读快照,则已提交读隔离下的事务将自动使用快照隔离。

可序列化的隔离级别通常是矫枉过正,一个真正的性能 pig 。读取已提交(简单,无快照)很好,但它可能会导致问题,因为它会阻塞读取与写入。

关于.net - Web 应用程序的最佳 SQL Server 隔离级别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1662957/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com