内存中 OLTP(内存中优化)
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 可带来最大性能提升的方案的详细信息,请参阅 内存中 OLTP - 常见工作负载模式和迁移注意事项。
内存中 OLTP 将提高具有短时间运行的事务的 OLTP 中的性能。
In-Memory OLTP 将改进的编程模式包括并发方案、点查找、具有大量插入和更新的工作负载以及存储过程中的业务逻辑。
与 SQL Server 集成意味着可以在同一数据库中同时拥有内存优化表和基于磁盘的表,并跨两种类型的表进行查询。
SQL Server 2014 (12.x) In-Memory OLTP 支持的 Transact-SQL 外围应用存在限制。
In-Memory OLTP 通过使用以下方法实现显著的性能和可伸缩性提升:
专为访问内存常驻数据而优化的算法。
用于消除逻辑锁的积极并发控制。
消除所有物理锁和闩锁的免锁对象。 执行事务工作的线程不使用锁或闩锁进行并发控制。
本机编译存储过程,在访问内存优化表时,其性能明显高于解释型存储过程。
重要
一些对表和存储过程的语法更改将需要使用内存中 OLTP。 有关详细信息,请参阅 迁移到内存中 OLTP。 在尝试将基于磁盘的表迁移到内存优化表之前,请阅读 确定表或存储过程是否应移植到In-Memory OLTP ,了解哪些表和存储过程将受益于In-Memory OLTP。
本节内容
本节提供有关以下概念的信息:
主题 | 说明 |
---|---|
使用内存优化表的要求 | 讨论使用内存优化的表的硬件和软件要求及指导原则。 |
在虚拟机环境下使用内存中 OLTP | 涉及在虚拟化的环境下使用内存中 OLTP。 |
内存中 OLTP 代码示例 | 包含说明如何创建和使用内存优化的表的代码示例。 |
Memory-Optimized Tables | 介绍内存优化的表。 |
内存优化表变量 | 一个代码示例,其中展示如何使用内存优化的表变量代替传统的表变量以减少 tempdb 的使用次数。 |
内存优化表上的索引 | 介绍内存优化索引。 |
本机编译的存储过程 | 介绍本机编译的存储过程。 |
管理内存中 OLTP 的内存 | 了解和管理系统中的内存用量。 |
创建和管理用于内存优化对象的存储 | 论述数据和差异文件,其中存储有关内存优化的表中事务的信息。 |
内存优化表的备份、还原和恢复 | 讨论内存优化表的备份、还原和恢复。 |
对内存中 OLTP 的 Transact-SQL 支持 | 讨论对 In-Memory OLTP 的 Transact-SQL 支持。 |
对内存中 OLTP 数据库的高可用性支持 | 讨论 In-Memory OLTP 中的可用性组和故障转移聚类分析。 |
SQL Server 对内存中 OLTP 的支持 | 列出支持内存优化表的新增和更新的语法和功能。 |
迁移到内存中 OLTP | 论述如何将基于磁盘的表迁移到内存优化的表。 |
有关内存中 OLTP 的更多信息,请参阅: