使用内存优化表的要求
适用于: SQL Server
本文介绍了在 SQL Server 中采用的内存中功能的要求。
要求
除了需要满足 SQL Server 2022:硬件和软件要求外,还要满足以下使用内存中 OLTP 的要求:
SQL Server 2016 (13.x) SP 1 及更高版本,任何版本。 对于 SQL Server 2014 (12.x) 和 SQL Server 2016 (13.x) RTM(SP1 预览版),需要 Enterprise、Developer 或 Evaluation 版。
内存中 OLTP 要求 64 位版本的 SQL Server。
SQL Server 需要有足够的内存来保留内存优化表和索引中的数据,以及额外的内存来支持联机工作负载。 有关详细信息,请参阅 估算内存优化表的内存需求。
在虚拟机 (VM) 中运行 SQL Server 时,请确保有足够的内存分配给虚拟机以提供内存优化表和索引所需的内存。 用于保证 VM 内存分配的配置选项可称为“内存预留”或“最小 RAM”(使用动态内存时),具体取决于 VM 主机应用程序。 请确保这些设置足以满足 SQL Server 中的数据库需求。
可用磁盘空间需为你的持久内存优化表大小的两倍。
处理器需支持指令
cmpxchg16b
才能使用内存中 OLTP。 所有新式 64 位处理器都支持cmpxchg16b
。如果使用的是虚拟机,并且 SQL Server 显示因处理器较旧而生成的错误消息,请检查虚拟机主机应用程序是否将配置选项设置为允许使用
cmpxchg16b
。 如果没有设置,可以使用支持cmpxchg16b
的 Hyper-V,而无需修改配置选项。内存中 OLTP 作为 数据库引擎服务的一部分进行安装。
要安装报表生成(确定表或存储过程是否应移植到内存中 OLTP)和 SQL Server Management Studio(通过 SQL Server Management Studio 对象资源管理器管理内存中 OLTP),请下载 SQL Server Management Studio (SSMS)。
注意
- 有关特定于 Azure SQL 中内存中数据的详细信息,请参阅《在 Azure SQL 数据库中使用内存中技术优化性能》和博客:《Azure SQL 数据库中的内存中 OLTP》。
- 有关特定于 Azure SQL 托管实例中内存中数据的详细信息,请参阅《在 Azure SQL 托管实例中使用内存中技术优化性能》。
有关使用内存中 OLTP 的重要说明
在 SQL Server 2016 (13.x) 及更高版本中,对内存优化表的大小没有限制(不同于可用内存)。
在 SQL Server 2014 (12.x) 中,数据库中所有持久表的内存中总大小不应超过 250 GB。 有关详细信息,请参阅 估算内存优化表的内存需求。
注意
从 SQL Server 2016 (13.x) SP 1 开始,Standard 和 Express 版本支持内存中 OLTP,但对给定数据库中可用于内存优化表的内存量设置了配额。 在 Standard 版本中,每个数据库的配额是 32 GB;在 Express 版本中,每个数据库的配额是 352 MB。
如果创建一个或多个包含内存优化表的数据库,应通过向 SQL Server 服务启动帐户授予 SE_MANAGE_VOLUME_NAME 用户权限,启用即时文件初始化 (IFI)。 如果没有 IFI,内存优化存储文件(数据和差异文件)会在创建时初始化,这会对工作负荷性能产生负面影响。 有关 IFI 的更多信息,包括如何启用,请参阅“数据库即时文件初始化”。
-
已知问题:对于具有内存优化表的数据库,执行不带恢复的事务日志备份,然后执行带恢复执行事务日志还原,可能会导致数据库还原过程无响应。 此问题还会影响日志传送功能。 要解决此问题,可在启动还原过程前重启 SQL Server 实例。