【问题标题】:How can I retrieve existing data from an SQL Server database while updating many rows?如何在更新多行时从 SQL Server 数据库中检索现有数据?
【发布时间】:2020-01-31 11:50:59
【问题描述】:

我们有一个程序,它每半小时解析几个文件,并在 MS SQL Server 数据库中插入或更新数据。问题是程序似乎一次提交了许多操作。在过去,这不是问题,但最近解析的文件的大小显着增加,现在每半小时数据库会在 5 分钟左右无响应,我们无法在程序完成提交时执行简单的选择语句无论它做出什么改变。

我们无法更改程序,那么如何让数据库在程序完成提交更改时检索旧行,而不是像当前那样超时?

【问题讨论】:

    标签: sql sql-server transactions timeout freeze


    【解决方案1】:

    您可以更改数据库的隔离级别以使用已提交的读取快照隔离。 https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/snapshot-isolation-in-sql-server

    阅读这篇文章,以更好地了解将 RCSI 切换为开启的含义。它可能会导致性能下降并可能会给您带来不想要的结果,所以请测试!:https://www.brentozar.com/archive/2013/01/implementing-snapshot-or-read-committed-snapshot-isolation-in-sql-server-a-guide/

    【讨论】:

    • 感谢您的信息。我打开了这个功能,到目前为止它似乎工作正常,但我会继续监控性能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-19
    • 1970-01-01
    • 1970-01-01
    • 2020-07-25
    • 1970-01-01
    相关资源
    最近更新 更多