深入探索SQL Server 2014 内存OLTP

日期: 2014-04-16 作者:Basit Farooq翻译:Ranma 来源:TechTarget中国 英文

SQL Server 2014 内存OLTP引擎,即此前的微软“Hekaton”项目,它可以在一个传统关系型数据库中创建内存优化OLTP表。这是对SQL Server 2014数据库性能的一个关键提升。目前微软已经开放了SQL Server 2014正式版下载,它支持64位企业版,开发版和评估版。 与传统基于磁盘表上的事务相同,内存优化OLTP表上的事务是完全满足原子性,一致性,隔离性和持久性的(ACID)。

内存OLTP引擎解决了在高并发情况下的性能问题,因为它使用了完全无锁的数据结构,这就意味着在系统中的关键性能路径上不会有内存资源锁或自旋锁。相反,它使用了一项可以提供事务隔离语义的多版本并……

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

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

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

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

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

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

SQL Server 2014 内存OLTP引擎,即此前的微软“Hekaton”项目,它可以在一个传统关系型数据库中创建内存优化OLTP表。这是对SQL Server 2014数据库性能的一个关键提升。目前微软已经开放了SQL Server 2014正式版下载,它支持64位企业版,开发版和评估版。

与传统基于磁盘表上的事务相同,内存优化OLTP表上的事务是完全满足原子性,一致性,隔离性和持久性的(ACID)。内存OLTP引擎解决了在高并发情况下的性能问题,因为它使用了完全无锁的数据结构,这就意味着在系统中的关键性能路径上不会有内存资源锁或自旋锁。相反,它使用了一项可以提供事务隔离语义的多版本并发控制(MVCC)技术,它可以避免事务之间争用。因此,任何用户进程都可以在没有数据库锁的情况下访问任何记录。

MVCC和无锁数据结构的结合会产生一个用户进程无需拖延或等待就可以运行的系统。此外,在优化内存表上进行操作的存储过程会编译为高效的机器代码。这样会将某些工作负载和某些类型查询的运行时性能最大化,因为生成的机器代码只包含执行请求所需信息。根据微软提供的信息,某些应用仅仅通过使用内存OTLP引擎就可以获得50倍的性能提升。

有两种主要的内存优化OLTP表类型:SCHEMA_AND_DATA 和 SCHEMA_ONLY。前者会在模式和数据在SQL Server崩溃或重启时候驻留于内存中,在不丢失数据和事务的情况下,它作为一个事务OLTP应用程序还是很有用的。后者SCHEMA_ONLY只有在模式存留的时候会驻留于内存中,并且它对于你的数据库应用的暂存表也是很有用的。

你可以使用内存优化向导工具,它可以从SSMS中启动,以帮助识别和迁移内存中完全兼容的表,并且可以为高性能执行选择可以编译为机器代码的存储过程。

创建内存优化表

要创建内存优化表,数据库必须拥有一个MEMORY_OPTIMIZED_DATA文件群组。而要创建一个MEMORY_OPTIMIZED_DATA文件群组,就要执行以下代码:

接下来,执行以下代码来添加数据库文件到内存优化文件群组:

下面是创建一个内存优化表的通用语法:

下面是在AdventureWork2012示例数据库中创建一个内存优化表例子的部分代码:

在这些代码中,BUCKET_COUNT参数是在哈希索引中需要创建的bucket的数量。

下面是创建一个本地编译存储过程的通用语法:

实际的使存储过程成为本地存储过程的代码如下所示:

例如,下面是我创建来从Sales.SalesOrderDetail_MemoryOptimized表检索订单详细信息的本地编译存储过程的部分代码。

内存优化表的限制

内存优化表无法支持老版本SQL Server和Transact-SQL在传统基于磁盘表上所支持全部功能。比如不支持Sparse,IDENTITY以及计算列,DML触发器,FILESTREAM数据,列存储过滤和全文本索引,ROWGUIDCOL选项,FOREIGN KEY,CHECK以及UNIQUE约束,TRUNCATE TABLE,MERGE,还有DYNAMIC和KEYSET游标。

内存优化表还不支持以下数据类型:Datetimeoffset,地图数据,几何数据,LOB(yarchar(max),图片,XML,文本和n文本)。

作者

Basit Farooq
Basit Farooq

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

翻译

Ranma
Ranma

相关推荐