2017-02-21 78 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 –