【问题标题】:Tradeoffs with bulk update on high-traffic table对高流量表进行批量更新的权衡
【发布时间】:2016-03-15 00:28:07
【问题描述】:

假设我有一个 SQL Server 表,它有数百万行,每分钟接收超过 2000 次插入。一个单独的进程需要对该表进行批量更新,假设使用将更新 1000 行的 where 子句。但它不关心性能,并且可以选择使用主键运行 1000 次单行更新。

如果批量更新运行时间过长,它会阻止传入的插入,对吗?而单独更新行将允许插入通过裂缝而不是阻塞?那么从优化插入性能的角度来看,我最好一次运行更新一行吗?

【问题讨论】:

  • 插入不会阻止更新(除非您请求表锁定..)。如果您的更新没有阻止整个表(单个事务占用超过 5000 个锁),我没有看到任何问题。我推荐通过示例模式和表上的索引以及示例更新查询提出有关 DBA SE 的问题

标签: sql-server


【解决方案1】:

更新不会阻止插入,但如果 where 条件的 where 条件未应用于新插入的行,则可能会出现意外行为。因此,最好检查应用程序的逻辑以确保新的更新中不需要插入的行。 但总的来说,批量更新比单次更新要好得多。

【讨论】:

    猜你喜欢
    • 2016-01-13
    • 2018-02-14
    • 2016-08-15
    • 2012-06-20
    • 2016-05-02
    • 1970-01-01
    • 2019-06-15
    • 2021-01-24
    • 2012-08-23
    相关资源
    最近更新 更多