2017-02-21 85 views
0

SQL服務器中的內存優化表有可能將部分數據存儲在內存中,其餘部分存儲在磁盤上?內存優化表 - 部分將數據加載到內存中

我有一個要求,最近3個月的數據加載到內存中,並且它的其餘部分 是不是真的需要在內存中,因爲它不會被 查詢。

有沒有辦法用內存優化表做到這一點?如果沒有,有沒有其他方法可以做到這一點?

+2

您是否考慮過對錶進行分區,經常訪問的分區將駐留在數據高速緩存中,而不需要內存優化表。 –

+0

@SteveFord經常訪問的分區只會保留在緩存中,除非它們因內存壓力而被清除。自從DBCC PINTABLE被刪除後,不再有任何保留在熱緩衝區中的任何保證。提供保證的唯一選項是內存優化表。這是一個很好的模式,在這一點上有一個策略,即熱點數據在內存優化表中,而所謂的「冷」數據在磁盤上。一個UNION ALL視圖,類似於我們用'分區視圖'的方式將數據綁定在一起時的方式。應用程序邏輯也可以這樣做。 –

回答

1

數據庫可以在磁盤上和一些內存幾張桌子,但它是不可能有,有的在磁盤表中的數據,並在內存中的一些數據

我有一個要求,加載上次3個月的數據到內存中,其餘部分並不需要在內存中,因爲它不會被查詢

爲什麼不定期歸檔表,因此它只保留三個月的數據並優化它用於內存使用..

2

使用視圖將內存表與標準表(分區視圖)結合使用。根據需要運行維護過程以將數據從內存表移動到標準表。

您可以將檢查約束添加到標準表,以幫助在查詢中將其消除,如果該數據不會被觸及。

+0

這個答案是要走的路。 https://docs.microsoft.com/en-us/sql/relational-databases/in-memory-oltp/application-pattern-for-partitioning-memory-optimized-tables –