使用SQL Server 2014内存引擎加速OLTP性能

日期: 2014-08-12 作者:Basit Farooq 来源:TechTarget中国

SQLServer 2014内存OLTP引擎(项目代号Hekaton)可以说是近几年SQL Server数据库架构方面最大的一次改进,它设计的初衷是为了最大程度地提升OLTP性能,降低处理时间。目前,SQL Server 2014的开发版、评估版以及64位企业版都提供了内存OLTP引擎的支持。 与SQL Server的完全集成 与其他厂商采用内存数据库插件或选件的方式不同,SQL Server 2014内存OLTP引擎是完全集成在SQL Server当中的。这意味着一个数据库可以同时拥有内存优化表和基于传统磁盘的表。

DBA可以使用熟悉的Transact-SQL来访问内存优化表,同时不同类型表中……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

SQLServer 2014内存OLTP引擎(项目代号Hekaton)可以说是近几年SQL Server数据库架构方面最大的一次改进,它设计的初衷是为了最大程度地提升OLTP性能,降低处理时间。目前,SQL Server 2014的开发版、评估版以及64位企业版都提供了内存OLTP引擎的支持。

与SQL Server的完全集成

与其他厂商采用内存数据库插件或选件的方式不同,SQL Server 2014内存OLTP引擎是完全集成在SQL Server当中的。这意味着一个数据库可以同时拥有内存优化表和基于传统磁盘的表。DBA可以使用熟悉的Transact-SQL来访问内存优化表,同时不同类型表中的数据能够同步进行更新。

图一:Hekaton内存数据库引擎与SQLServer的架构总览

支持高并发

和基于传统硬盘的数据库表类似,内存优化表的事务完全支持ACID原则(原子性、一致性、隔离性与持久性)。内存OLTP引擎会通过数据结构来解决高并发性,它抛弃了数据库锁(Lock)和锁存器(Latch),这意味着系统中关键性能路径中将不存在锁存器和自旋锁(spinlock)。取而代之,它使用了一个充分优化的多版本并发(MVCC)技术来提供事务之间的隔离语义。这样做能够让ACID支持不受影响,因此任何的用户操作都能够访问表中的任意一行数据,同时避免锁存器和数据库锁。另外,它消除了常见的扩展性瓶颈,同时保证纵向扩展能力与高并发性,提升OLTP与数据仓库负载的性能。

T-SQL编译为机器代码

引用内存优化表的存储过程可以便以为更高效的机器代码,从而进一步提升数据库的性能,这一过程是通过C代码生成器与Visual C编译器完成的。C代码生成器将把存储过程转换为C程序,然后Visual C编译器将C程序编译为一个DLL(高效的机器代码)。经过编译的存储过程被称为“本机编译存储过程”,它与传统基于硬盘的存储过程相比唯一的不同在于,前者在生成的时候就进行编译,而后者是在首次执行的时候才进行编译。正是由于这一原因,许多错误条件,如溢出、类型转换以及零除等条件就能够在创建时被及时发现。此外,本机编译存储过程会为特定的OLTP或数据仓库负载最大化运行时性能,因为生成的机器代码除必须的运行请求之外,将不包含任何其他元素。

图二:SQL Server 2014内存OLTP编译器架构图

主内存优化索引

内存优化表专门针对内存数据进行了设计,其索引采用了Bw-tree结构。所谓Bw-tree就是指一种高性能,无锁存器的B-tree结构。内存优化索引的索引操作并不会被记录到交易日志当中,而SQL Server会确保这些索引的持久性,主要通过将记录点和日志存储到外部存储来实现。

图三:Bw-tree结构图

内存优化索引包含两种类型:非聚集哈希索引、非聚集索引。非聚集哈希索引针对相等谓词的索引查找进行了优化,还支持完整索引扫描。哈希索引没有页,并且始终为固定大小,使用哈希索引的查询返回值将不进行排序。非聚集索引(非哈希索引)支持范围扫描和有序扫描,它支持哈希索引支持的所有功能,外加针对不等谓词(例如大于或小于)的查找操作以及排序顺序。使用非聚集索引的查询返回值将进行排序。

作者

Basit Farooq
Basit Farooq

资深数据库管理员、培训师和技术撰稿人,具有十多年微软SQL Server平台的开发、技术培训和数据库管理的经验。

相关推荐