代码之家  ›  专栏  ›  技术社区  ›  sventevit

限制SqlBulkCopy上的CPU

  •  1
  • sventevit  · 技术社区  · 16 年前

    是否可以限制SqlBulkCopy的CPU使用率?

    string connectionString = ConfigurationManager.ConnectionStrings["connectionString"].ToString();
    using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connectionString))
    {
        bulkCopy.DestinationTableName = "dbo.CSVFile";
        bulkCopy.BulkCopyTimeout = 600;
        bulkCopy.BatchSize = 1000;
        bulkCopy.WriteToServer(tableCSV);
    }
    

    编辑: 此代码在与db服务器不同的机器上运行。

    我需要限制CPU使用的原因:此SQL server有多个数据库,其中一个数据库经常从两台计算机访问,每台计算机每秒执行两次查询。这两台计算机操作两台大型计算机,因此,每当这台计算机中的一台等待查询执行时,他就会停止机器,等待查询执行,然后再次运行机器。 所以每次我在SQL server上运行一些消耗大量CPU的东西时,就会停止一些机器的生产。

    4 回复  |  直到 16 年前
        1
  •  2
  •   Guillaume    16 年前

    您可以使用MAXDOP临时仅使用一个处理器: http://msdn.microsoft.com/en-us/library/ms181007.aspx

    如果SQL CPU使用率有问题,可以将SqlServer移动到专用服务器。

        2
  •  2
  •   Chris    16 年前

    您正在更新的数据是否会影响其他计算机的查询结果?如果是,那么它应该阻止它们,这与CPU无关,只是因为记录被锁定以进行更新。您希望操作尽可能快地运行,以便最大CPU是好的。

    如果这两个数据集不同,那么没有理由认为配置良好的SQL server不能同时为这两个数据集提供服务,请查看调优选项、可用内存量等

        3
  •  1
  •   Hans Passant    16 年前

    为什么?你要求服务器做工作,它正在做工作。把速度提高一倍是没有意义的。让SQL Server来安排其作业,因为您不知道什么类型的作业处于活动状态,所以您不能自己安排作业。

        4
  •  0
  •   Guillaume    16 年前

    你说:

    他们完全分开了

    您可以安装具有不同CPU相关性/优先级的第二个sql server实例。