如果數據庫大於RAM,SQL服務器的性能是否會急劇下降?或者只有索引必須適合內存?我知道這很複雜,但作爲一個經驗法則呢?如果數據庫無法裝入內存,SQL Server的性能是否會降低?
回答
是的,當索引不適合內存或進行全表掃描時。對不在內存中的數據進行聚合功能也需要很多(也可能是隨機的)光盤讀取。
對於一些基準:
查詢時間將顯著 取決於是否受影響的數據目前 駐留在內存或磁盤訪問是需要 。對於磁盤密集型 操作,磁盤順序和隨機I/O性能的特性也很重要。
http://www.sql-server-performance.com/articles/per/large_data_operations_p7.aspx
那裏,不要指望,如果你的數據庫大小> RAM大小相同的性能。
編輯: http://highscalability.com/充滿了類似的例子:
一旦數據庫不適合RAM你碰了壁。
或者在這裏:
即使DB大小比RAM容量更大僅有10%這個測試顯示了2.6倍的性能下降。 http://www.mysqlperformanceblog.com/2010/04/08/fast-ssd-or-more-memory/
雖然,請記住,這是針對熱門數據,您要查詢的數據並且不能緩存。如果可以的話,你可以輕鬆地生活在更少的記憶中。
所有數據庫操作都必須通過寫入磁盤進行備份,有更多的RAM有幫助,但不是必需的。
只有工作集或公用數據或當前使用的數據需要放入緩衝區緩存(又名數據緩存)。這也包括索引。
還有計劃緩存,網絡緩存+其他的東西也。 MS已經在SQL Server的內存管理上投入了大量工作,並且它運行良好,恕我直言。
一般來說,更多的RAM會有所幫助,但這不是必需的。
將整個數據庫加載到RAM中是不實際的。數據庫最近可能高達1TB。任何人都不會購買這麼多的內存。即使可用RAM的大小是數據庫大小的十分之一,我認爲性能仍是最佳的。
那裏我們必須切換到NoSQL的替代品嗎?如果必須從光盤讀取數據庫,數據庫如何高效? – 2010-05-21 08:14:31
即使可用RAM的大小是數據庫大小的十分之一,我認爲性能仍然是最佳的。 – TrustyCoder 2010-05-21 08:15:10
@CarlHörberg:你在做什麼?你幾乎永遠不會擁有內存中的所有數據,也不需要它。 – gbn 2010-05-21 09:32:05
但是讀取操作如何?如果數據不在內存中,則必須對光盤進行讀取訪問,這比從RAM中讀取要慢1000倍? – 2010-05-21 08:10:00