Sql server 一个脚本中的并行更新

Sql server 一个脚本中的并行更新,sql-server,sql-server-2014,Sql Server,Sql Server 2014,我有一个脚本,可以在某个时候更新几个大表。这些表相互独立,有40多行,每行通过重置整数值进行更新。比如: 使用设置为整数列=1的行更新表 使用设置为整数列=1的行更新表 等等 处理每份此类声明需要8到15分钟 有没有办法并行运行两个或多个表更新?磁盘速度非常快,有8个以上的内核可用 谢谢只要它们在同一连接上运行的单个脚本中,就不需要了。无法使SQL Server以异步线程方式处理单个脚本。至少不是在TSQL中。可能在CLR过程中。香草T-SQL不会提供太多并行运行少量更新的可能性。作为例外-异步

我有一个脚本,可以在某个时候更新几个大表。这些表相互独立,有40多行,每行通过重置整数值进行更新。比如:

使用设置为整数列=1的行更新表

使用设置为整数列=1的行更新表

等等

处理每份此类声明需要8到15分钟

有没有办法并行运行两个或多个表更新?磁盘速度非常快,有8个以上的内核可用


谢谢

只要它们在同一连接上运行的单个脚本中,就不需要了。无法使SQL Server以异步线程方式处理单个脚本。至少不是在TSQL中。可能在CLR过程中。

香草T-SQL不会提供太多并行运行少量更新的可能性。作为例外-异步ServiceBroker,但它是高级主题

简单的方法有:

  • 并行执行少量T-SQL任务的SSIS包
  • 由一个主作业同时触发的几个SQL代理作业
  • 几个并行运行查询的SSMS窗口

如果您有多个内核,引擎将根据您的服务器设置确定是否应使用并行。基于ID列运行5个不同的查询可能不是一个好主意。如果要“重置”整个列,则可能存在XY问题。我相信这仅适用于单个语句,例如select query,甚至是带有cte的merge语句。不是一个接一个的几个语句。XY问题?什么意思?我基本上需要将引用的“所有者”(从用户表)更改为合并为一个值(=单个所有者),如果您在70 mil行中一致地将列“重置”为一个简单的、主要是任意的值,解决为什么需要将每一行更新为相同的值,而不是加快进程的问题。因为这是遗留数据库中的迁移场景。是的,我有点这样认为。我想我会选择一个powershell脚本来调度几个sqlcmd任务…@当然,是的,好的方面powershell可以异步运行一些任务,或者,如果你觉得不好,你可以选择好的旧xp_cmdshell:-d很好地提到
CLR
。如果它也能做到,我会很感兴趣的。另外,你应该试一下,看看你能不能翻译一些我遗漏的东西。