微软SQL Server 2014代码发布:内存内数据库引擎成最大亮点
内存内数据库引擎、经过改进的Windows Azure集成能力再加上面向高性能数据仓库应用的全新索引技术——本周二开始正式向制造商发布的SQL Server 2014确实为我们带来不少惊喜。
不过尽管微软方面一直加班加点、殚心竭力,但我们还是从这批下月一号才会提供通用版本的代码中找到了一些不尽如人意的地方。
让我们先来看看积极的方面。
代号“Hekatron”的内存内数据库引擎是此次新版本中最为抢眼的部分;根据微软方面的解释,由它所带来的性能表现提升可达到惊人的30倍。该方案的开发周期历时五年,项目主管经理Kevin Liu在最近的一次SQL Server 2014研讨会上向记者作出说明。
这套数据库引擎属于最新编码成果,不仅能够直接访问内存当中的数据、具备出色的并发水平,而且能够对执行流程进行编译与存储、以备日后的进一步优化。该引擎还会将一套数据副本不断传输至磁盘当中,当然如果大家不在乎数据丢失的话、也可以将其禁用以最大限度提升性能表现。
从性能角度看,新版本的实践效果绝对堪称拔群。即使是在Azure(四核心,7GB内存)上运行一套负载极低的虚拟机,切换至内存内表之后处理10万次事务型操作的时间也能由原先的2分54秒缩减到如今的36秒。
新版本的另一大优势在于整合能力。大家完全可以将内存内与基于磁盘的表引入同一套数据库当中——不过请注意,同时针对这两类表进行查询时效率会受到严重影响。
但局限性也是存在的。目前最严重的问题是,内存内表拥有一大堆无法支持的T-SQL关键字,其中包括IDENTITY、UNIQUE、OUTER JOIN、IN、LIKE、DISTINCT以及其它一些常用命令、触发器以及BLOB字段。虽然官方建议用户采取变通方案,但要想充分发挥其潜在能力、移动工作恐怕在所难免。
SQL Server 2014:全部功能特性尽列于此,但真能全部用上吗?
作为首个发行版本,SQL Server 2014当中还存在其它一些局限。首先,官方建议保存在内存当中的数据总量不要超过256GB。
“请放心,关于这一点我们将在未来的版本中进行大幅增强,”Liu表示。
另一大局限在于,“建议使用双插槽硬件”以避免由NUMA(即非统一内存访问)导致的问题影响性能表现。
目前最适合借用内存内数据库强大实力的业务逻辑要数交互元素较少的存储流程以及客户端-服务器通信。利用外部代码实现业务逻辑的应用程序则无法发挥其全部潜能。
微软还在与Azure的集成性方面下了一番力气。目前SQL Server 2014已经具备数种可行方案。大家可以直接启动保存在Azure当中的数据库文件;虽然SQL Server能够以缓存形式保留大量活动数据,但由此带来的延迟在很多情况下仍会使实际效果变得比较糟——从另一个角度看,将其用于归档倒是个很好的选择。
目前应用范围比较广泛的功能之一就是利用Azure存储机制进行备份,而且该功能在新版本中已经以内置姿态出现。在Management Studio当中,大家可以选择URL作为备份目标,系统会自动提示要求Azure证书。另一项名为Managed Backup的新工具则更适合规模较小的企业,允许他们以自动化方式将数据库备份保存在Azure当中。大家只需要配置相关证书以及数据保留期限即可。
另一项Azure集成化功能是将SQL Server数据库的副本运行在Azure虚拟机之上。此外,大家还可以利用Add Azure Replica向导设置保证其随时可用。
资源调控器(即Resource Governor)允许大家限制特定用户能够使用的资源数量
聚合列存储索引表现出色……但还称不上王牌
SQL Server 2012首次引入了列存储索引机制。这种面向列的存储方案非常适合进行压缩,因为各个列当中通常都会包含有类似的值,而且在查询时所选定的往往也只是表中的特定几列。这项功能给掌握着提取自报告及分析等运营数据集的数据仓库应用程序带来了极大的性能提升。不过在SQL Server 2012当中,我们无法对列存储索引进行更新。
在如今的SQL Server 2014当中,经过聚合的全新列存储索引不仅能够进行更新、同时也显露出有意成为数据仓库标准的势头。不过新机制同样存在自己的局限性。最明显的例子就是,我们无法将聚合列存储索引与其它索引相结合。包含有聚合列存储索引的表属于单独一种特殊表类型,其中索引成为该表的主存储方案。虽然这样的处理方式对于数据仓库类应用并无不妥,但却限制了其成为通用型功能的推广道路。
其它新功能还包括Buffer Pool Extension(即缓冲池扩展),它利用固态硬盘作为数据库引擎的缓冲池,从而提高数据吞吐能力、强化资源调控、分配使用配额并允许大家控制特定资源池的每秒I/O操作数量。
总体来说,SQL Server 2014给人留下的主要印象就是产品基本上没有发生太多变动。新的内存内数据库引擎确实算是一大革新(虽然仍存在严重局限),但很明显如果没有它的助阵、微软根本不可能有勇气将2014打造成一个全新版本。聚合列存储索引效果拔群,但却只能在一小部分应用程序当中正常起效。如果大家对于以上两大新特性完全不感冒,那么SQL Server 2014实在拿不出更多让人升级的动力了。
与此同时,当下的硬件发展趋势正逐步给服务器带来更大内存空间与更多处理器数量,而“Hekatron”正好能够对这两大优势兼容并包——虽然作为首个版本,其功能局限性仍然比较明显。
Windows Azure目前被内置在SQL Server Management Studio当中。
我曾经向微软提问,希望了解对方是否关注非关系型数据库的兴起;微软方面则在回应中暗示目前其已经开始涉及这方面的研究项目。我还提到自己对一部分可编程功能的不满,例如.NET中的Entity Framework,微软再次暗示称可编程能力将成为下一个主要版本的关注重点。
微软尚未给出SQL Server 2014定价及授权许可方式的全部细节信息,不过有迹象表明新版本不会对此作出太大改变。根据一份来自网络的表格,标准版本的内存容量限制由过去的64GB提高到了128GB。处理器方面不变,仍然不能超过四个CPU插槽或者十六运算核心。企业版本则取消了上述限制。免费的精简版只支持最高1GB内存、单一插槽或者四计算核心,数据库规模也不允许超过10GB。
总结性意见?SQL Server 2014相对于上个版本作出了全面修整,但同时又保留了足够多的传统元素、鼓励前代产品用户轻松接手并付诸使用。不过微软在一系列关键性层面也出现了失误。相信接下来微软还会带来更多改进项目与新鲜功能。