首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >并行更新Azure SQL Server中数百万行的大型表

并行更新Azure SQL Server中数百万行的大型表
EN

Database Administration用户
提问于 2020-08-26 15:59:40
回答 1查看 1.1K关注 0票数 1

我们有一个包含许多行的大型ProductOrders表,并计划对其进行更新。该表的ProductType Ids范围为1-1000。

表有大约200万行,15列。通用ProductOrders表: ProductOrderId、ProductId、ProductTypeid、ManufacturerId、OrderDate等,索引被正确地放置在外键和常见查询上。

提出了两个更新表的选项,

  1. 设置并行发送的10,000+多个查询(按产品TypeIds的范围分组),并一次性更新ProductOrders表。
  2. 或者第二个命题,就是用下面的方法。在此按顺序更新它们,以避免锁定整个表。https://stackoverflow.com/a/35931214/12425844

我假设选项1)有多个更新查询会导致多个Writer死锁。

多个查询并行发送安全吗?哪一种选择是最佳做法?此外,最好让Sql与配置的Maxdop设置并行地执行DDL项,而不是让用户尝试。

https://learn.microsoft.com/en-us/sql/database-engine/configure-windows/configure-the-max-degree-of-parallelism-server-configuration-option?view=sql-server-ver15

第一个选项是由我们的应用软件团队提出的。

目前正在使用AzureSQl。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2020-08-26 18:25:40

为什么不用一个update语句更新表呢?

如果数据库设置为读取提交的快照,并且可以阻止其他会话在更新期间写入表,则这是最简单的选项。

否则,按批顺序更新它们(选项2)。运行大量并行DML语句(选项1)太复杂,而且太容易出现阻塞和死锁问题。IE并不能解决使用单一UPDATE语句的所有问题,它引入了新的更新语句。

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/274411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档