2010-06-30 15 views
0

我有一個數據轉換查詢,需要很長時間才能在我的開發計算機上運行(運行在3.9GHz的Core i7 920以及Windows Server 2003 x86下的12GB RAM,與2個Velociraptors 300GB iN RAID0)。如何強制SQL Server使用更多的CPU

當我看到任務管理器時,CPU保持在26%左右,第三個(最高4)核心是最活躍的。

因爲這不是一個生產環境,有沒有什麼辦法可以告訴SQL Server 2008我用它更多的CPU可以使用它,還是因爲我的查詢因某種原因無法並行化? 如果不應該SQL Server足夠聰明,以較小的塊切割查詢,並跨越多個線程運行,以便每個核心都可以得到它?

謝謝。

+0

你可以發佈查詢詳細信息和有關你正在查詢的表的一些數據嗎?像表格大小,定義索引等東西... – Oded 2010-06-30 14:15:03

+0

http://stackoverflow.com/questions/3038067/get-non-overlapping-dates-ranges-for-prices-history-data/3038275#3038275 <這是更多或減去我使用的查詢。源表大約有150 000行。 – 2010-06-30 14:40:31

回答

2

優化您的查詢。有可能是問題出在了它而不是SQL Server上。

+0

不幸的是,根據之前提出的問題,它不是那麼優化。 – 2010-06-30 14:10:51

+0

@Kharlos Dominguez - 所有表格都被正確編入索引?而且你沒有用SQL執行任何長時間運行的任務? – Oded 2010-06-30 14:11:46

+0

@Kharlos Dominguez您需要優化您的查詢以允許將其分割爲多個線程。這實際上可能涉及到對其進行優化。沒有看到查詢和執行計劃,就不可能說更多。 – 2010-06-30 14:16:14

0

它已經知道它沒問題,除非您通過配置或通過設置MAXDOP參數來明確限制它只使用一定數量的CPU。

這聽起來像你可能會受到你的硬盤或內存的限制。

請注意,因爲您正在運行x86版本的Windows(以及擴展sql服務器),所以您可能將RAM限制在3GB左右。即使啓用了PAE(物理地址擴展),它也會比起開始使用x64操作系統和SQL Server的速度慢得多。

換句話說,您可能會考慮從頭開始重新安裝機器,以充分利用您擁有的所有x64優點。

+0

謝謝。但是,我沒有看到多少硬盤活動,其他一切都運行得很快......我的RAID陣列提供了200MB /秒的速度,並且我可以以幾乎正常的速度正常工作而不會出現任何問題。 – 2010-06-30 14:11:58

+0

如果是這樣的話,你應該也知道sql server將只使用多個處理器,這取決於查詢的可並行性。如果查詢只能分爲2或3個處理器,那麼這就是所有的sql服務器將使用的。 – NotMe 2010-06-30 18:30:01