我们有一个包含许多行的大型ProductOrders表,并计划对其进行更新。该表的ProductType Ids范围为1-1000。
表有大约200万行,15列。通用ProductOrders表: ProductOrderId、ProductId、ProductTypeid、ManufacturerId、OrderDate等,索引被正确地放置在外键和常见查询上。
提出了两个更新表的选项,
我假设选项1)有多个更新查询会导致多个Writer死锁。
多个查询并行发送安全吗?哪一种选择是最佳做法?此外,最好让Sql与配置的Maxdop设置并行地执行DDL项,而不是让用户尝试。
第一个选项是由我们的应用软件团队提出的。
目前正在使用AzureSQl。
发布于 2020-08-26 18:25:40
为什么不用一个update语句更新表呢?
如果数据库设置为读取提交的快照,并且可以阻止其他会话在更新期间写入表,则这是最简单的选项。
否则,按批顺序更新它们(选项2)。运行大量并行DML语句(选项1)太复杂,而且太容易出现阻塞和死锁问题。IE并不能解决使用单一UPDATE语句的所有问题,它引入了新的更新语句。
https://dba.stackexchange.com/questions/274411
复制相似问题