對於SQL Server,我需要多少內存


經常被問到的一個問題:對於SQL Server,我需要多少內存?這個問題還是有同樣的典型的“看情況而定”答案。在今天的文章里,我們來詳細看下“看情況而定的”的不同方面。

全新SQL Server安裝

首先,對於全新的SQL Server安裝,我想談下你如何估計你需要的內存大小。然后我會詳細談下你如何驗證現存的SQL Server有足夠的可用內存。

對於全新的SQL Server安裝,估計下需要多少內存,是個很有挑戰的工作,因為:

  • 你必須知道在你的內存里(你的工作區)要保持多少數據
  • 你必須知道你的索引策略是怎樣
  • 你必須知道你是否要使用SQL Server的標准版,還是企業版本。

從這個清單里你可以看到,問題的答案主要取決於你。我們再談下清單里的每個項目。

你查詢的數據越多,你需要更多的內存。假設,你的大多數數據是用戶不常查詢的歸檔數據。在這個情況下,你的數據留在你的存儲系統里,且從不加載到內存。就想下你的日志和審計表:對於這些特定的表,你真的要查詢多少數據?

更好的索引策略是,你需要的內存更少!如果你有一個真的不好的索引策略(甚至你沒有索引策略!),你會需要大量的內存來支持你的工作負荷。假設你有100GB數據的表,你在表里查詢特定行。如果你在查詢謂語上沒有支持的索引。SQL Server會掃描你的整個堆表或聚集表。這就是說SQL Server需要加載你的“整個”表到內存里,只返回1條記錄!有了支持的索引,SQL Server可以進行高效的查找操作,只需要讀幾個頁就可以返回請求的記錄。這個會是天差地別——相信我!

對於你的SQL Server安裝,SQL Server的版本也會影響你可以有的內存大小。使用標准版本,你會限制只能用到128G的內存。這聽起來是很多內存,膽實際上是啥也不是!如果你的數據庫包含幾個TB的數據,且你用標准版本的SQL Server(預算限制)。在這個情況下,對於每個單獨的提交到SQL Server的查詢,你要非常小心,而且你要確保你要有完全一致的索引策略。使用企業版本就不需要考慮這么多,因為SQL Server支持系統的最大內存(Window Server 2016目前支持12TB的內存)。

現存的SQL Server安裝

對於現存的SQL Server安裝,對於的工作負荷,很容易找出你是否有足夠的內存。我們都知道,SQL Server在緩存池里存儲所有從存儲子系統里獲得的頁。而且緩存池為你提供一個名為PAGE LIFE EXPANCTANCY的計數器。這個計數器告訴你在緩存池里SQL Server在每個8K頁的存儲時間。

現在你的PAGE LIFE EXPANCTANCY計數器至少有一些幾千秒。內存越大,這個數字越高。如果你的PAGE LIFE EXPANCTANCY低於那個閾值,你會有很嚴重的問題,因為SQL Server不能在緩存池里保持你的數據太長時間。作為副作用,你會引入更多的物理I/O,整個服務器性能會下降。再提一下,你可以在索引策略上下功夫,確保從存儲子系統里讀取的數據都是你查詢邏輯請求的數據。

小結

對於你的SQL Server你應該有多少內存,真的是個“看情況而定”的問題。如果你使用標准版的SQL Server,你應該至少有這個版本給你支持的最大內存。越多越好。而對於企業版的SQL Server,你應該有盡可能多的內存。內存相比企業版的授權,現在已經越來越便宜了。因此不要在錯誤的地方省錢啦!

感謝關注!

原文鏈接

https://www.sqlpassion.at/archive/2016/09/19/how-much-ram-do-i-need-for-sql-server/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM