Sql server sqlserver中多处理器的使用

Sql server sqlserver中多处理器的使用,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我现在正在准备从SQLServer导出到第三方ERP系统的过程。它扫描数据库scheme中的几乎所有表,并为每个产品创建XML。导出足够长,客户希望使其更快。我意识到导出过程只使用1个CPU 因此,我认为,如果我使用不同的参数(不同的产品范围)多次运行相同的过程,我可以使用所有处理器,而且速度会更快 问题 如何仅使用SQL Server工具实现这一点。 可能的解决方案之一是使用SSI。还有别的吗 处理器的数量可能会有所不同。我可以使用sys.dm\u os\u sys\u info获取处理器计数

我现在正在准备从SQLServer导出到第三方ERP系统的过程。它扫描数据库scheme中的几乎所有表,并为每个产品创建XML。导出足够长,客户希望使其更快。我意识到导出过程只使用1个CPU

因此,我认为,如果我使用不同的参数(不同的产品范围)多次运行相同的过程,我可以使用所有处理器,而且速度会更快

问题

  • 如何仅使用SQL Server工具实现这一点。 可能的解决方案之一是使用SSI。还有别的吗

  • 处理器的数量可能会有所不同。我可以使用
    sys.dm\u os\u sys\u info
    获取处理器计数。如何从处理器数量动态启动程序几倍可靠


  • 要记住以下几点:

    1-您确定是CPU绑定而不是IO绑定吗?根据我的经验,很少有CPU成为进程的瓶颈,更有可能存在磁盘访问速度限制。您应该进行额外的测试,以避免整个流程因硬盘驱动器无法跟上而仅获得2%的速度提升

    2-它可以像检查服务器端并行度设置一样简单。有时DBA会将其设置为1,因为它可以缓解错误查询计划的问题,但通常好处有限


    3-您可以使用
    选项(MAXDOP#)设置查询的最大并行度。
    其中#是您希望允许的并行进程数。

    是否同时使用此服务器?如果是这样,您可能不想占用其他处理器。此导出将不在生产服务器上进行,而是在本地服务器上进行,并且每个客户端数据库只进行一次。但是有很多数据库。我检查性能计数器-CPU总是100%,但HD每秒只写30K左右-这是因为所有的基址都缓存在内存2中。是的,它的平行度m=13。-MAXDOP只限制核心数量,而不是扩大核心数量,不是吗?@Dalex-如果性能计数器指示CPU为100%,那么您希望我将其拆分为多个批次,得到什么?如果您已经是CPU受限的,那么您将只有4个作业以25%的速度运行…@Dalex-然后我将查看MaxDOP进行测试。它可以简单到允许查询处理器使用更多的内核。不幸的是,MAXDOP不会让其他内核因查询而忙碌。换句话说,结果是一样的。