2010-09-16 102 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

相關問題