内存优化顾问

事务性能报告工具(请参阅 “确定应将表或存储过程移植到 In-Memory OLTP”)告知你,如果移植到使用 In-Memory OLTP,数据库中哪些表将受益。 确定要移植到 In-Memory OLTP 的表后,可以使用内存优化顾问来帮助将基于磁盘的数据库表迁移到 In-Memory OLTP。

首先,连接到包含基于磁盘的数据库表的实例。 可以连接到 SQL Server 2012 或 SQL Server 2014 实例。 但是,如果要使用顾问执行迁移作,则必须连接到启用了 In-Memory OLTP 功能的 SQL Server 2014 实例。 有关 In-Memory OLTP 要求的详细信息,请参阅 使用 Memory-Optimized 表的要求

有关迁移方法的信息,请参阅 In-Memory OLTP - 常见工作负荷模式和迁移注意事项

使用 Memory-Optimization 顾问的演练

对象资源管理器中,右键单击要转换的表,然后选择 Memory-Optimization 顾问。 这将显示 表内存优化顾问的欢迎页。

内存优化清单

单击“表内存优化顾问”欢迎页中的“下一步”时,会看到内存优化清单。 内存优化表不支持基于磁盘的表中的所有功能。 内存优化清单报告基于磁盘的表是否使用与内存优化表不兼容的任何功能。 表内存优化顾问不会修改基于磁盘的表,以便可以迁移它以使用 In-Memory OLTP。 在继续迁移之前,必须进行这些更改。 对于找到的每个不兼容情况, 表内存优化顾问 将显示一个指向有助于修改基于磁盘的表的信息的链接。

如果要保留这些不兼容的列表,若要规划迁移,请单击 “生成报告 ”以生成 HTML 列表。

如果表没有不兼容,并且已连接到具有 In-Memory OLTP 的 SQL Server 2014 实例,请单击“ 下一步”。

内存优化警告

下一页的内存优化警告包含一系列问题,这些问题不会阻止表迁移到使用 In-Memory OLTP,但这可能导致其他对象(如存储过程或 CLR 函数)的行为失败或导致意外行为。

列表中的前几个警告是信息性的,可能或可能不适用于表。 表右侧列中的链接将带你了解详细信息。

警告表还会显示表中不存在的潜在警告条件。

可作警告将在左侧列中有一个黄色三角形。 如果有可作的警告,则应退出迁移,解决警告,然后重启该过程。 如果未解决警告,则迁移的表可能会导致失败。

单击“ 生成报表 ”以生成这些警告的 HTML 报告。 单击“下一步”继续。

查看优化选项

现在您可以在下一个屏幕中修改迁移到 In-Memory OLTP 的选项。

内存优化文件组
内存优化文件组的名称。 在创建内存优化表之前,数据库必须具有至少一个文件的内存优化文件组。

如果没有内存优化文件组,可以更改默认名称。 无法删除内存优化文件组。 内存优化文件组的存在可能会禁用某些数据库级功能,例如 AUTO CLOSE 和数据库镜像。

如果数据库已有内存优化文件组,则此字段将预先填充其名称,并且无法更改此字段的值。

逻辑文件名和文件路径
将包含内存优化表的文件的名称。 在创建内存优化表之前,数据库必须具有至少一个文件的内存优化文件组。

如果没有现有的内存优化文件组,则可以更改要在迁移过程结束时创建的文件的默认名称和路径。

如果你有现有的内存优化文件组,这些字段将预先填充,并且你将无法更改这些值。

将原始表重命名为
在迁移过程结束时,将使用表的当前名称创建新的内存优化表。 若要避免名称冲突,必须重命名当前表。 可以在此字段中更改该名称。

估计的当前内存成本(MB)
Memory-Optimization 顾问估计新的内存优化表将基于基于磁盘表的元数据消耗的内存量。 表大小的计算在 表和 Memory-Optimized 表中的行大小中解释。

如果未分配足够的内存,迁移过程可能会失败。

此外,将表数据复制到新的内存优化表
如果还希望将当前表中的数据移动到新的内存优化表,请选择此选项。 如果未选择此选项,将创建没有行的新内存优化表。

默认情况下,该表将迁移为持久表
与持久内存优化表相比,In-Memory OLTP 支持性能优越的非持久表。 但是,服务器重启后,非持久表中的数据将丢失。

如果选择此选项,Memory-Optimization 助手将创建临时表而非永久表。

警告

仅当了解与非持久表关联的数据丢失风险时,才选择此选项。

单击“下一步”即可继续操作。

查看主键转换

下一个屏幕是 “查看主键转换”。 Memory-Optimization 顾问将检测表中是否有一个或多个主键,并根据主键元数据填充列列表。 否则,如果要迁移到持久内存优化表,则必须创建主键。

如果主键不存在并且表正在迁移到非持久表,则不会显示此屏幕。

对于文本列(包含类型charncharvarcharnvarchar的列),必须选择适当的排序规则。 In-Memory OLTP 仅支持内存优化表上的列的 BIN2 排序规则,并且不支持带有补充字符的排序规则。 有关支持的排序规则以及排序规则更改的潜在影响的信息,请参阅 排序规则和代码页

可以为主键配置以下参数:

为此主键选择新名称
此表的主键名称在数据库中必须唯一。 可以在此处更改主键的名称。

选择此主键的类型
In-Memory OLTP 支持内存优化表上的两种类型的索引:

  • 非聚集 HASH 索引。 此索引最适合具有许多点查找的索引。 可以在 “存储桶计数 ”字段中为此索引配置存储桶计数。

  • 非聚集索引。 这种类型的索引最适合具有许多范围查询的索引。 可以配置“排序列和顺序”列表中每一列的排列顺序。

若要了解最适合主键的索引类型,请参阅 哈希索引

在进行主键选择后单击“ 下一步 ”。

查看索引转换

下一页是审阅索引转换。 Memory-Optimization 顾问将检测表中是否有一个或多个索引,并填充列和数据类型的列表。 可以在 “审阅索引转换 ”页中配置的参数类似于上一页的 “查看主键转换 ”页。

如果该表只有主键并且正在被迁移到持久性表中,则此界面不会出现。

为表中的每个索引做出决策后,单击“ 下一步”。

验证迁移操作

下一页是 验证迁移操作。 若要编写迁移作脚本,请单击“ 脚本 ”以生成 Transact-SQL 脚本。 然后,可以修改和执行脚本。 单击 “迁移 ”开始表迁移。

该过程完成后,刷新 对象资源管理器 以查看新的内存优化表和基于磁盘的旧表。 可以在方便时保留旧表或删除它。

另请参阅

迁移到 In-Memory OLTP