你准备好解开微软SQL Server 2014的力量了吗?在这篇博文中,我将介绍我最喜欢的3个新特性,展示SQL Server 2014如何提供高性能OLTP、业务分析的优化和数据到云的迁移。
三个基本主题分类在SQL Server 2014版本:关键任务性能,更快地洞察任何数据和平台的混合云。我选择了一个选择的新功能每个主题下给予感受新版本的功能。
选择的要素:在内存OLTP
增加物理内存可以提高数据库服务器的性能,这一点一直都是正确的。直接从物理内存进行逻辑I/O操作比从存储进行物理I/O操作要快得多。在SQL Server 2014中,微软引入了内存中的OLTP数据库引擎,它可以直接从内存中对选定的表执行整个I/O操作集。新架构中包含了一个无锁并发模型,并支持本机编译的存储过程,从而在同一硬件上记录了高达20倍的性能提升。内存中的OLTP选项是一个企业级特性,顾名思义,是专门为典型的OLTP流量平衡并发访问数据的读/写操作而设计的。在继续创建内存优化表之前,必须在数据库级别启用它。
为了使一个数据库到主机存储器优化的表,一个特殊的文件组需要先添加到包含MEMORY_OPTIMIZED_DATA数据库。此文件组创建一个文件夹来包含存储器优化的数据被加载到存储器中之前。
有各种限制适用于新的内存中OLTP特性。例如,外键约束、默认约束、检查约束、标识列和触发器不允许在内存优化的表上使用。但是,如果需要任何受限制的功能,通常可以使用本机编译的存储过程代码对其进行编码。为了帮助迁移到内存优化的表,SQL Server Management Studio有一个表内存优化顾问,它将提供关于限制以及如何在必要时解决这些限制的专家建议。
例如,目前有DEFAULT约束的表需要有那些删除,如果它要被迁移到一个内存优化表。如果创建用于插入一个存储过程,等效处理可以被编码,并且可以实现在内存OLTP的性能优势。如果你点击一个顾问“教我如何”超链接的示例代码所示。
当寻找一个有效的CREATE TABLE语句的内存优化表中,MEMORY_OPTIMIZED = ON子句是必需的。耐久性=架构和数据子句将确保更新写入事务日志上,即使访问和更新表在内存中完全取得盘。随着缺席,在新的架构锁,同时也保护了交易失败的情况下,这将使巨大的性能提升。在最新的交易并不需要收回很少的情况下,持久性= SCHEMA_ONLY可以使用,但不建议出于显而易见的原因。
我下载了一个样品从微软的www.codeplex.com使用Windows Server 2012 R2和SQL Server 2014 CTP2预定义的图像代码共享网站,以测试在内存OLTP与经典的磁盘上的模型与SQL Server 2014我安装一个Windows Azure的VM(后来见本博客)从Windows Azure的图片廊。将样品测试出使用压力测试工具OSTRESS既基于磁盘的存储器最优化和表格重型更新。在我有限的测试中,内存优化表处理跨越100个线程重复1000周的交易产生了相当于基于磁盘的表提高了6倍。磁盘I / O显着减少,但由于仍然需要在磁盘上的耐用性原因要更新的事务日志不能完全去除。这个测试是针对升级AdventureWorks2012数据库作为一种概念证明取得。
Codeplex上的样品,请访问:http://msftdbprodsamples.codeplex.com/releases/view/114491
作为简单的概念验证,我在一个使用双核CPU和3.5GB内存的轻量级VM上运行了我的测试。示例的作者使用了一台拥有24个逻辑核心和用于数据和日志文件的独立SSD驱动器的机器,从而实现了令人印象深刻的50倍的改进。
选择的要素:聚集列存储索引
在SQL Server 2012中,微软引入了非聚集的Columnstore索引,该索引是为数据仓库中的大型事实表而精心设计的,并提供了一个数量级的性能增益,基于大量的列压缩和优化的“星型”查询,这是典型的数据库。这种类型的索引的主要限制是,当Columnstore索引存在时,表只能作为只读表操作。当然,在典型的数据仓库中,数据在非高峰时间应用更改时是只读的。索引通常在增量更新之前和之后被删除和重新创建,因此这不是大多数安装的主要限制。解决方案包括使用相同结构的独立“Delta”表的概念,在此表中可以在以后进行更改并与主表合并。一个类似的解决方案使用分区切换来实现相同的结果。现在,在SQL Server 2014中,您可以创建一个集群Columnstore索引,该索引现在是可更新的。
在测试中,聚集的Columnstore索引(CCI)确实获得了与其非聚集的同类索引类似的性能提升(超过10倍),并且按照设计接受了更新。然而,就像所有的特性一样,也存在某种程度的权衡。在这种情况下,CCI必须是表上的唯一索引,并且它不支持主键或外键约束。因此,为了在现有的表上测试它,我必须首先删除所有PK和FK约束以及任何其他索引。与所有聚集索引一样,所有列都包含在CCI中。在内部,CCI实际上管理自己的Delta表,将数据适当地合并到表中。同样,事务日志确保所有更新都是持久的和可恢复的。与在内存中的OLTP解决方案中一样,PK和FK约束提供的验证可以通过存储过程代码模拟(如果需要的话)。还有其他的限制,这些都在网上的书籍中有完整的记录。聚集的Columnstore索引是一个企业级特性。
选择的要素:新云迁移向导
基于云的数据提供了更大的灵活性和“弹性”的可扩展性,非常适合快速发展的组织。还有许多悬而未决的基于安全性的问题,但有些数据库“本地”数据库是适当的主机在云和同步敏感。这种分布式的方式为我们的数据是行业增长的趋势。微软在这个技术,它的Windows Azure平台,支持SQL Azure的云中的数据库中的前列。Windows Azure中也支持高达托管虚拟机(VM),它可以支持全版本的SQL Server,如果需要的设置。再次,易用性和更低的成本是微软的价值主张。SQL Azure是现在与SQL Server 2014兼容,并支持新的云迁移向导。
Windows Azure和SQL Azure可以直接使用http://windowsazure.com。30天免费试用版。在此之后,根据存储的要求和使用资源的月租费,收费。可以创建SQL Server数据库和使用Web界面或远程使用SQL Server Management Studio中,利用Windows Azure平台提供的完全合格的DNS域名(FQDN)访问数据库服务器填充。SSIS包也可以使用相同的FQDN SQL Azure数据库中提取信息。SQL Azure数据库必须使用SQL Server身份验证,但可以使用任何在SSIS工具箱提供的SSIS任务的访问。以这种方式,在云中访问数据是基本相同的任何其他数据源。
将数据库迁移到云计算,你现在可以使用它可以通过SQL Server Management Studio中2014年推出了全新的云迁移向导,您可以选择使用任务到本地数据库迁移到SQL Azure的:“数据库部署到WindowsAzure的SQL数据库...”在你的数据库。向导将在任何限制,如每个表报告必须在SQL Azure的一个聚集索引,指导您完成移植数据库到云的过程。
如果你愿意,你可以安装在Windows Azure中的VM到主机的完整版本的SQL Server和使用任务:“部署数据库到Windows Azure的VM ......”。在这种情况下,你是不是仅限于SQL Azure的为你有效地处理SQL Server的实例正常碰巧使用云服务上的Windows Azure虚拟机上运行的局限性。我测试了这一点,使用的Windows Azure虚拟机与Windows Server 2012 R2运行SQL Server 2014 CTP2和成功迁移一个SQL Server 2014数据库的SQL Azure数据库。然后我连接到使用SSMS 2014年SQL Azure数据库,并能使用“部署数据库到Windows Azure的VM ...”选项进行部署。再次,令人印象深刻的技术。微软已经成功地将云计算作为其架构的扩展,而不是作为一个完全独立的平台,因此被允许客户利用现有的技术,现在被称为混合云。
结论
Microsoft SQL Server的2014有一些伟大的新功能,允许您开发使用混合云更高性能,更具扩展性的下一代应用程序。该功能在本质上主要是增量应该让我们相信微软正在构建的SQL Server的基础建立2008年和2012年使用类似的架构和管理工具的事实,我们应该根据需要能够顺利升级我们的系统和技能新的功能,并根据自己的时间表。
评估/预发行拷贝可在http://www.microsoft.com/sql
干杯
布赖恩