代码之家  ›  专栏  ›  技术社区  ›  Scott Weinstein

CLR存储过程中的多线程代码?

  •  3
  • Scott Weinstein  · 技术社区  · 17 年前

    我有一个数据密集型任务,有很多并行化的潜力。CLR存储过程将非常有助于消除将数据移出进程的开销,我担心我将不得不放弃并行计算。

    我有什么选择?

    注意:我们使用的是SQL Server 2005,计划位于<升级到SQL Server 2008的4个月期限

    1 回复  |  直到 17 年前
        1
  •  4
  •   Remus Rusanu    17 年前

    如果是 数据 设置

    如果处理是面向标量和CPU密集型的(甚至是一些面向集合的处理),请将处理放在UDF CLR函数中,然后再次让查询执行并行化函数执行。

    如果您的处理有任何类型的I/O(即web调用),请执行以下操作 将其放在SQL中,放在服务器进程之外。

    如果您的处理 真正地 不属于所有这些类别,您仍然相信可以从多线程中获益,理论上讲,在SQL中启动线程是可能的。请注意,SQL中的CLR主机是 您的普通CLR主机(即众所周知的应用程序主机或ASP主机)。SQLCLR是第三种主机类型,它提供自己的原语(线程、锁定、内存管理等),这些原语是在 SOS