2010-09-16 69 views
1

我有大约4天的时间来加载400万行数据,其中存储过程似乎需要大约500ms /行,所以我建议我们暂时重新使用两台计算机,其中一台作为SQL Server,另一台作为提供它的计算机。每台机器都是4个CPU,2个核心/ CPU计算机,内存很大。有多少线程用于将数据加载到MS SQL Server 2005数据库

关于如何加载数据有两个相互竞争的想法。

  1. 在导入计算机上维护使用虚拟机,这限制了我的4个内核的使用。
  2. 将虚拟机拖入负载并使用全部8个内核来加载。

该数据库将在实际的计算机上,没有虚拟机。

我会得到一个镜头,表明使用虚拟机将大大影响性能,但这只是一种直觉。我需要证明这一点,所以我会建议我们用一个较小的数据集进行测试加载,所以不是加载大约12G的数据,我们可能只做6G,然后得到数字。

但是,由于我在这方面有一个镜头,我想要得出一个合理的猜测,即可以在两种环境中使用多少个线程。

我的猜测是4线程/核心,因为数据库事务涉及大量的线程等待时间,但我不知道这是否会在虚拟机上的线程太多。我不确定如何确定什么是合理的线索数量。

限制因素可能不是具有加载数据的程序的计算机,它可能是数据库计算机实际上是限制因素,32个并发数据库连接可能对于8核心计算机来说太多。

那么,我猜测每个核心的4个线程在两种环境中都是合理的吗?

计算机上的操作系统是Windows Server 2008 R2,VM将使用Hyper-V。

UPDATE:

在它的事项,我使用.NET 4,采用并行框架,所以我在我的配置文件改变其调整的并发线程数,所以情况下,我用大量PLINQ 。

更新2:

今天我有一个想法,以加快速度,在这里我们将使用一个4核虚拟机基准,但在SQL Server将使用24G的虚拟驱动器(RAM驱动器),自电脑有48G RAM,数据库将完全在内存中。这样,我应该能够像馈线程序一样快速地用多个线程来馈送它。如果速度不够快,那么我们将使用全部12个内核来提供它,但他们预计它不会被需要。因此,我应该能够在1天内加载所有数据,而不是在一个月内加载所有数据,但是,一旦我获得了一些基准测试数据,我会让每个人都知道。我可能会看到有关使用较小的桌面来提供它以查看是否存在使用虚拟机的损失,但此虚拟机上只有一个虚拟机,因此8个内核将不会使用。 Hyper-V盒上的操作系统是Windows Core,顺便说一下。

+0

我好想回答42! ;-) – klabranche 2010-09-16 01:06:42

+0

我真的很想听听这个结果。留下评论什么工作....需要多长时间.... :-) – klabranche 2010-09-16 17:09:50

+0

@klabranche - 给了一个迄今为止的更新。 – 2010-09-16 22:51:50

回答

0

有这么多的变量,我会说你的猜测和任何一样好。你已经合理地想出了它,并且测试将是你最好的选择,看看你是否需要为大运行做出调整。

0

做一个小测试,并测试每个内核有1,2,3,4,5,6个线程。绘制出来。应该显示得很清楚...

+0

我想这样做,但我不认为我会得到机会,因为我没有时间,我希望在比较这两种选择时我会得到一个答案。 – 2010-09-16 09:09:23

相关问题