我已閱讀了相當數量的這一點。但找不到可行的解決方案。我有一個有大量RAM和10GB數據庫的服務器。我想將整個數據庫(包括索引)加載到RAM /緩存中。熱身數據庫(把整個數據庫放入緩存)
該解決方案似乎不工作:http://sqlsmurf.wordpress.com/2011/05/23/sql-warm-up-script/
有沒有加載到一切RAM存儲的方式?我可以做SELECT * FROM blah
,但是(我相信)不會工作,因爲它不會正確加載索引,它也會有點慢。
我已閱讀了相當數量的這一點。但找不到可行的解決方案。我有一個有大量RAM和10GB數據庫的服務器。我想將整個數據庫(包括索引)加載到RAM /緩存中。熱身數據庫(把整個數據庫放入緩存)
該解決方案似乎不工作:http://sqlsmurf.wordpress.com/2011/05/23/sql-warm-up-script/
有沒有加載到一切RAM存儲的方式?我可以做SELECT * FROM blah
,但是(我相信)不會工作,因爲它不會正確加載索引,它也會有點慢。
當我需要帶的東西到緩存(也有是使用情況爲,例如縮短離線索引構建所需的時間),我用的是這樣的:
SELECT COUNT_BIG(*)
FROM T WITH (NOLOCK, INDEX(IndexNameHere))
OPTION (MAXDOP 1)
併爲每個索引運行它。它並沒有比這更有效率。 NOLOCK
用於獲取IAM掃描而不是b-tree-order掃描。
不過,我想知道爲什麼要這樣。數據庫在使用時會逐漸進入緩存。基本上首先訪問頁面緩存的頁面。這還不夠嗎?
你可以在所有的表上運行'UPDATE STATISTICS table WITH FULLSCAN'嗎? – Turophile
在你的域邏輯層中定義一個CACHE怎麼樣? –
@MihaiBejenariu該應用程序是一個寧靜的.NET應用程序,我不想開始處理在該層的本地化緩存,除非收益會很大。 – Faraday