为内存优化对象创建和管理存储

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例

内存中 OLTP 引擎集成到 SQL Server 之中,这可让你在同一数据库中同时拥有内存优化表和(传统的)基于磁盘的表。 但是,内存优化表的存储结构不同于基于磁盘的表。

基于磁盘的表的存储具有以下键属性:

  • 映射到文件组且该文件组包含一个或多个文件。

  • 每个文件分为 8 页的范围,每页的大小为 8 KB(8,192 字节)。

  • 一个区可以跨多个表共享,但分配的页面与表或索引之间存在一对一的映射。 换而言之,一页不能有来自两个或多个表或索引的行。

  • 数据将根据需要移动到内存(缓冲池)中,已修改或新创建的页将异步写入到主要生成随机 IO 的磁盘。

内存优化表的存储具有以下键属性:

  • 所有内存优化表都被映射到内存优化的数据文件组。 此文件组使用类似于 Filestream 的语法和语义。

  • 没有任何页,且数据作为行保留。

  • 通过追加到活动文件来存储对内存优化表的所有更改。 读取和写入文件都是按顺序进行的。

  • 通过进行删除,然后进行插入来实现更新。 删除的行不会立即从存储中删除。 删除的行由名为MERGE的后台进程根据Memory-Optimized 表的持久化中所述的策略移除。

  • 与基于磁盘的表不同,内存优化表的存储不会压缩。 将基于磁盘的ROWPAGE压缩表迁移到内存优化表时,需要考虑大小的变化。

  • 内存优化表可以是持久的或非持久的。 你仅需要配置持久的内存优化表的存储。

本节描述检查点文件对以及内存优化表中数据的存储方式的其他方面。

本节中的文章: