2013-02-26 15 views
6

我在OLAP環境中的一些非常大的表上運行一些聚合查詢。我目前以200 MB/s的速度受到磁盤IO的瓶頸。SQL提示在執行前將整個表加載到RAM中?

我正在做一個92 GB的RAM機器上的這些查詢。是否有任何SQL提示可以寫入我的查詢中,該提示基本上告訴SQL在執行前將整個表加載到RAM中?

喜歡的東西:

SELECT * FROM myTable的使用(RAMDISK)

我使用MS TSQL。

+0

['DBCC PINTABLE'](http://msdn.microsoft.com/zh-cn/library/ms178015(v = sql.90).aspx)用於執行此操作,但現在已被禁用。下一個版本在內存表中有Hekaton。你仍然可能被瓶頸將數據加載到RAM中,所以不知道它有多大的幫助(可能是一個障礙)先加載到RAM中,而只是在查詢執行時加載到RAM中。 – 2013-02-27 08:35:38

回答

2

否。如果數據庫引擎在頁面緩存中有足夠的空間,它將自動執行此操作。

您可以使用SQL Server Management Studio設置正在使用的內存量。右鍵單擊服務器,選擇內存選項,然後在「最小服務器內存」框中輸入一個大數字。如果你有92G的RAM,那麼85000的數字可能是好的。您需要爲機器上的操作系統和其他服務留下額外的內存。

假設表格適合內存,這應該有助於處理。如果他們不適合記憶,那麼你可能不得不採取另一種方法。

+0

SQL在預測放入讀取緩存中的內容時並不完美,所以它看起來好像是否存在此提示,可能會顯着加快某些查詢的情況。 – 2013-02-26 19:24:05

+0

對於其他類查詢,將50 GB的表加載到RAM中實際上是執行時間的大部分。看起來像添加提示功能的完美情況。 – 2013-02-26 19:25:10

+0

@JohnShedletsky。 。 。我想在混合負載處理的多用戶環境中,要獲得這樣的提示是有很大困難的。擁有智能緩存作爲解決方案功能更強大。但是,這不是這種討論的論壇。 – 2013-02-26 19:30:40

相關問題