常常被問到的一個問題:對於SQL Server,我須要多少內存?這個問題仍是有一樣的典型的「看狀況而定」答案。在今天的文章裏,咱們來詳細看下「看狀況而定的」的不一樣方面。sql
首先,對於全新的SQL Server安裝,我想談下你如何估計你須要的內存大小。而後我會詳細談下你如何驗證現存的SQL Server有足夠的可用內存。數據庫
對於全新的SQL Server安裝,估計下須要多少內存,是個頗有挑戰的工做,由於:緩存
從這個清單裏你能夠看到,問題的答案主要取決於你。咱們再談下清單裏的每一個項目。服務器
你查詢的數據越多,你須要更多的內存。假設,你的大多數數據是用戶不常查詢的歸檔數據。在這個狀況下,你的數據留在你的存儲系統裏,且從不加載到內存。就想下你的日誌和審計表:對於這些特定的表,你真的要查詢多少數據?性能
更好的索引策略是,你須要的內存更少!若是你有一個真的很差的索引策略(甚至你沒有索引策略!),你會須要大量的內存來支持你的工做負荷。假設你有100GB數據的表,你在表裏查詢特定行。若是你在查詢謂語上沒有支持的索引。SQL Server會掃描你的整個堆表或彙集表。這就是說SQL Server須要加載你的「整個」表到內存裏,只返回1條記錄!有了支持的索引,SQL Server能夠進行高效的查找操做,只須要讀幾個頁就能夠返回請求的記錄。這個會是天差地別——相信我!spa
對於你的SQL Server安裝,SQL Server的版本也會影響你能夠有的內存大小。使用標準版本,你會限制只能用到128G的內存。這聽起來是不少內存,膽其實是啥也不是!若是你的數據庫包含幾個TB的數據,且你用標準版本的SQL Server(預算限制)。在這個狀況下,對於每一個單獨的提交到SQL Server的查詢,你要很是當心,並且你要確保你要有徹底一致的索引策略。使用企業版本就不須要考慮這麼多,由於SQL Server支持系統的最大內存(Window Server 2016目前支持12TB的內存)。 日誌
對於現存的SQL Server安裝,對於的工做負荷,很容易找出你是否有足夠的內存。咱們都知道,SQL Server在緩存池裏存儲全部從存儲子系統裏得到的頁。並且緩存池爲你提供一個名爲PAGE LIFE EXPANCTANCY的計數器。這個計數器告訴你在緩存池裏SQL Server在每一個8K頁的存儲時間。server
如今你的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/