2017年2月2日 星期四

[SQL Server]使用InMemory記憶體最佳化發生系統記憶體不足,無法執行此查詢之錯誤

為了增加針對SQL Server在寫入以及讀取上的效能,將特定資料表採用InMemory的技術,
能大幅增加資料查詢的時間,使用起來異常痛快,但哪知還是採到地雷啊!

特此筆記之。

測試過程中持續寫入至InMemory資料表中,直到記憶體都被塞滿了吐出這樣的錯誤訊息。
資源集區 'default' 中的系統記憶體不足,無法執行此查詢。

這一切看起來都很合理,但是當我再做以下的查詢時...

或是重新啟動SQL Server服務...

我的老天爺啊,整個資料庫都往生啦~
整個動彈不得,後果不堪設想(基本上就是整個系統都GG了)。

目前已知的處理方法如下:
1. 設定資料庫使用記憶體上限。當發生此狀況時,停止資料寫入Memory並增加記憶體上限,使資料庫可以正常運作。

2. 軟的不喜歡那就來硬的吧!拆開機殼,翻出DRAM,插入主機板...

呃...小弟我才疏學淺,目前只知道如此的解法。

結論:
使用InMemory技術時要特別小心,需注意機器的記憶體狀態,個人覺得最保險的就是去設定一下SQL Server可用的記憶體上限,至少狀況發生時還可以透過滑鼠便可應急。

關於Sql Server InMemory技術可以參考msdn:
https://msdn.microsoft.com/zh-tw/library/dn133186.aspx

沒有留言:

張貼留言