每個實例的 SQL Server Express 記憶體和 CPU 限制嗎?
如果我在伺服器中有 8GB 的 RAM 並執行 4 個 SQL Server Express 實例,SQL Server 使用的總記憶體限制是 1GB 還是 4GB?
是否建議像這樣執行多個實例以使每個數據庫能夠更好地利用資源(假設伺服器有大量資源)?
如果我在伺服器中有 8GB 的 RAM 並執行 4 個 SQL Express 實例,SQL Server 使用的總記憶體限制是 1GB 還是 4GB?
每個實例最多可以為緩衝池使用 1GB 記憶體。每個實例總共可以使用超過 1GB 的空間,因為並非所有記憶體分配都通過緩衝池進行。在您的情況下,緩衝池的四個實例使用的最大記憶體為 4GB。
為了確認,我啟動了 SQL Server 2008 Express 數據庫引擎的兩個實例,執行了一些活動來載入(單獨的)緩衝池,然後以多種方式查看每個實例的記憶體使用率,例如使用DBCC MEMORYSTATUS或通過使用sys.dm_os_buffer_descriptors DMV計算緩衝區的數量。
下面的物理記憶體使用量是使用對數據庫引擎每個實例上的系統 DMV sys.dm_os_process_memory的同時查詢獲得的:
SELECT dopm.physical_memory_in_use_kb FROM sys.dm_os_process_memory AS dopm;
輸出:
╔═══════════╦═══════════╗ ║ Instance1 ║ Instance2 ║ ╠═══════════╬═══════════╣ ║ 1102872 ║ 1059812 ║ ╚═══════════╩═══════════╝
每個都略超過 1GB,因為總物理記憶體使用量不僅僅包括緩衝池使用量,如前所述。
是否建議像這樣執行多個實例以使每個數據庫能夠更好地利用資源(假設伺服器有大量資源)?
如果每個實例上的數據庫在功能上是獨立的,那麼以這種方式執行多個 Express 實例至少是可行的,儘管您需要特別注意配置和維護可能會變得更加複雜。
如果預期用途與許可證相匹配,則使用其他版本可能會更好地為您服務,例如功能齊全(且非常便宜)的開發人員版)。你需要更多地說明情況才能在這一點上得到明確的答案。