SQL Server 2014(12.x)中的新增功能 In-Memory OLTP 可以显著提高 OLTP 数据库应用程序性能。 In-Memory OLTP 是集成到 SQL Server 引擎中的内存优化数据库引擎,已针对 OLTP 进行优化。
![]() |
是否要试用 SQL Server 2016? 注册 Microsoft Azure,然后转到 此处 ,启动已安装 SQL Server 2016 的虚拟机。 完成后,可以删除虚拟机。 |
若要使用 In-Memory OLTP,请将大量访问的表定义为内存优化。 内存优化表是完全事务性的、持久性的,使用 Transact-SQL 访问的方式与基于磁盘的表相同。 查询可以引用内存优化表和基于磁盘的表。 事务可以更新内存优化表和基于磁盘的表中的数据。 仅引用内存优化表的存储过程可以本机编译为计算机代码,以进一步改进性能。 In-Memory OLTP 引擎旨在针对从高度横向扩展的中间层驱动的 OLTP 类型的事务实现非常高的会话并发。 为此,它使用无闩锁数据结构和乐观的多版本并发控制。 结果是可预测的、亚毫秒级低延迟和高吞吐量,且能够在数据库事务中实现线性扩展。 实际性能提升取决于许多因素,但 5 到 20 倍的性能提升是常见的。
下表总结了使用 In-Memory OLTP 最可能受益的工作负荷模式:
实现方案 | 实现方案 | In-Memory OLTP 的优点 |
---|---|---|
多个并发连接产生的高数据插入速率。 | 主要是仅追加存储。 无法跟上插入工作负载。 |
消除争用。 减少日志记录。 |
通过定期批量插入和更新来提升读取性能和扩展性。 | 高性能读取操作,尤其是在每个服务器请求中有多个读取操作需要执行时。 无法满足纵向扩展要求。 |
当新数据到达时消除争用。 较低的延迟数据检索。 尽量减少代码执行时间。 |
数据库服务器中的密集型业务逻辑处理。 | 插入、更新和删除工作负荷。 存储过程内的密集型计算。 读取和写入争用。 |
消除分歧。 尽量减少代码执行时间,以减少延迟并提高吞吐量。 |
低延迟。 | 需要典型的数据库解决方案无法实现的低延迟业务事务。 | 消除冲突。 尽量减少代码执行时间。 低延迟代码执行。 高效的数据检索。 |
会话状态管理。 | 频繁插入、更新和点查找。 来自许多无状态 Web 服务器的大规模负载。 |
消除竞争。 高效的数据检索。 使用非持久表时的可选 IO 减少或删除 |
有关 In-Memory OLTP 将带来最大性能提升的方案的详细信息,请参阅 In-Memory OLTP - 常见工作负荷模式和迁移注意事项。
In-Memory OLTP 在处理短时间运行事务的 OLTP 中将表现出最佳性能提升。
In-Memory OLTP 将改进的编程模式包括并发情况、点查询、包含大量插入和更新的工作负载,以及存储过程中的业务逻辑。
与 SQL Server 集成意味着可以在同一数据库中同时具有内存优化表和基于磁盘的表,并跨这两种类型的表进行查询。
在 SQL Server 2014(12.x)中,支持 In-Memory OLTP 的 Transact-SQL 表面区域有一定限制。
In-Memory OLTP 通过使用这些技术,从而显著提升性能和可扩展性。
优化用于访问内存驻留数据的算法。
消除逻辑锁的乐观并发控制技术。
锁定释放对象,消除所有物理锁和闩锁。 执行事务工作的线程不使用锁或闩锁进行并发控制。
访问内存优化表时,本机编译的存储过程的性能明显优于解释的存储过程。
重要
需要对表和存储过程进行一些语法更改才能使用 In-Memory OLTP。 有关详细信息,请参阅 迁移到 In-Memory OLTP。 在尝试将基于磁盘的表迁移到内存优化表之前,请阅读“ 确定表或存储过程是否应移植到 In-Memory OLTP ,以查看哪些表和存储过程将受益于 In-Memory OLTP。
本部分内容
本部分提供有关以下概念的信息:
主题 | DESCRIPTION |
---|---|
使用 Memory-Optimized 表的要求 | 讨论有关使用内存优化表的硬件和软件要求和指南。 |
在 VM 环境中使用 In-Memory OLTP | 介绍如何在虚拟化环境中使用 In-Memory OLTP。 |
In-Memory OLTP 代码示例 | 包含演示如何创建和使用内存优化表的代码示例。 |
Memory-Optimized 表 | 引入内存优化表。 |
Memory-Optimized 表变量 | 演示如何使用内存优化表变量而不是传统的表变量来减少 tempdb 的使用代码示例。 |
Memory-Optimized 表上的索引 | 引入内存优化索引。 |
本机编译的存储过程 | 介绍本机编译的存储过程。 |
管理 In-Memory OLTP 的内存 | 了解和管理系统上的内存使用情况。 |
为 Memory-Optimized 对象创建和管理存储 | 讨论数据和增量文件,这些文件用于在内存优化表中存储有关事务的信息。 |
Memory-Optimized 表的备份、还原和恢复 | 讨论内存优化表的备份、还原和恢复。 |
Transact-SQL 对 In-Memory OLTP 的支持 | 讨论对 In-Memory OLTP 的 Transact-SQL 支持。 |
In-Memory OLTP 数据库的高可用性支持 | 讨论 In-Memory OLTP 中的可用性组和故障转移群集。 |
SQL Server 对 In-Memory OLTP 的支持 | 列出支持内存优化表的新语法和功能。 |
迁移到 In-Memory OLTP | 讨论如何将基于磁盘的表迁移到内存优化表。 |
有关 In-Memory OLTP 的详细信息,请参阅: