Sql-Server

在相同的主機記憶體壓力上執行 MongoDB 和 SQL Server

  • June 3, 2014

我們有一個新的應用程序,它同時使用傳統的 MS SQL 和 MongoDB 進行數據儲存。我們在同一台具有 64GB RAM 的 Windows 2008R2 x64 機器上執行這兩個實例。

我已經開始調查一些關於性能不佳的軼事報告。

我可以看到 SQL Server 消耗的記憶體沒有我預期的那麼多,並且顯示出記憶體壓力的跡象。

例如。

AppDomain 16 (mssqlsystemresource.dbo[runtime].15) is marked for unload due to memory pressure

相比之下,MongoDB 正在使用一個巨大的工作集,這是基於文件的預期行為

它依賴於 Windows 來管理記憶體使用。

似乎 SQL 伺服器無法或沒有請求使用 Mongo 工作集中的任何記憶體,這會影響性能。伺服器目前處於非常低的負載狀態。

  • 頁面預期壽命似乎很高:1536
  • 和緩衝區記憶體命中率:404002
  • 空閒列表檔位/秒:695
  • 免費頁面:26529

有沒有人遇到過這個問題?在這種情況下 SQL 伺服器的預期行為是什麼?我正在考慮使用min server memory配置選項。

設置min server memorySQL Server 的選項。它仍然會在記憶體壓力下釋放頁面,除非您還允許 SQL Server 將頁面鎖定在記憶體中。在記憶體中設置min server memory和鎖定頁面的組合應該可以解決問題。

我從來沒有用過MongoDB,所以我不知道你是否可以管理記憶體使用。快速搜尋使您似乎無法做到。

假設您正在執行 64 位伺服器,並且有超過 4 GB 的 RAM,您可以執行 32 位 MongoDB 實例,這將根據其架構將記憶體限制為 2、3 或 4GB。32 位 MongoDB 是否存在?

在 SSMS 中右鍵點擊您的伺服器,選擇屬性。

轉到記憶體選項卡並將最小伺服器記憶體設置為某個合理的值。

由於 mongo 餓死 SQL Server,我們遇到了性能問題,導致它經常交換到磁碟。然後我們將最小值設置為 8GB(超過 32GB),並且在一分鐘內它開始變得更好。

引用自:https://dba.stackexchange.com/questions/61332