在不同的文件组上创建表分区,这是内存优化文件组的第一个边界

clo*_*afe 2 sql-server partitioning memory-optimized-tables sql-server-2016

我们所有交易的 99% 都是针对最近一周的数据,一个 WEEK_SELECTOR 列描述了哪一周被描述。按周对我们的 10 亿+ 行表进行分区将是有益的,如果最近一周的 50 万左右行位于内存分区中,则更是如此。

在尝试将前一周拆分到我们的内存优化文件组时

CREATE PARTITION FUNCTION [TPF](int) AS RANGE RIGHT FOR VALUES (N'1700114')
CREATE PARTITION SCHEME [TPS] AS PARTITION [TPF] TO ([PRIMARY], [memtest])
Run Code Online (Sandbox Code Playgroud)

我们收到以下错误:

Msg 7737, Level 16, State 1, Line 2
Filegroup memtest is of a different filegroup type than the first filegroup in partition scheme TPS
Run Code Online (Sandbox Code Playgroud)

我们现在假设分区的文件组必须是相同类型的,我们的计划是不可能的,但找不到文档说这是不可能的。

有人可以解释如何做到这一点,或者如果没有,请提供一个链接来说明?谢谢。

Pau*_*ite 5

尚不支持直接对内存优化表进行分区。请参阅内存中 OLTP 不支持的 SQL Server 功能

文档Application Pattern for Partitioning Memory-Optimized Tables 中描述了一种解决方法

您可以通过使用公共架构维护分区表和内存优化表来模拟具有内存优化表的分区表。当前数据将在内存优化表中插入和更新,而不太频繁访问的数据将在传统分区表中维护。

或者,您可以考虑使用其他技术解决方案,例如用于实时操作分析的 Columnstore,它将内存中 OLTP 与列存储(作为 [可选过滤] 二级存储)相结合。