`

SQL Server 2012鲜为人知的两个功能

阅读更多
如果你是一个资深的SQL Server DBA,那么关于它的每一个功能你应该都会接触过至少一次。事实上,SQL Server发展到现在,它的根基并没有变,一个大树上长出纷繁的枝叶。今天的这篇文章,我将在这些“枝叶”中挑选几个我认为值得关注的,来仔细聊一聊。列存储索引(Columnstore Indexes)和Hekaton内存数据库是新版SQL Server中很重要的两个功能,它们都是跨时代的技术革新,能够大大提升SQL Server数据库的性能。

  列存储索引

  列存储索引是SQL Server 2012版本中自带的功能,它的前身是开发用来进行PowerPivot内存存储的功能。列存储同传统的关系型数据库中行存储有着本质上的不同,数据按照列布局的方式存储,能够将上百万个列值全部聚合到一个blob结构当中。同时这个结构还能提供让人意想不到的数据压缩比。

  快速批处理模式还能够加速SQL Server 2012数据库的查询过程。正如David Dewitt博士在两年前的SQL PASS大会上所做的演示,连续列值的紧密结构,通过将数据在缓存和CPU之间的来回移动次数减小到最小,从而能够充分利用现代CPU技术所提供的优势。

  当然,列存储索引也并非无懈可击,它有一个非常大的局限性——只读。这意味着表索引也是只读的。所以任何一个拥有列存储索引的表,它是不允许任何插入、更新以及删除操作的。要对数据进行修改,就必须先删除列存储索引限制,然后再对数据进行增删改,最后重建列存储索引。由此可以看出,这对于OLTP系统的用户友好度是有欠缺的。因此可以说,列存储索引仅对处理数据仓库和OLAP负载有优势。在下一版本的SQL Server中,微软已经承诺进行改进,去掉更新数据的限制并允许进行列存储的聚集索引(clustered index)。

  对于这个功能,我曾经也做过一些实验。我发现当查询的性质与列存储相吻合的时候,它的性能提升是显而易见的。一般来说,一个表中的列越多,列存储索引的施展空间就越大,它能够避免SQL Server去读取更多的索引部分。在另一种情况下,针对相对列数较少的实体-属性值表,所得到的结果就要分开来说。汇总查询要快得多,从300秒降到了3秒钟。但是返回一个小行集的所有列时,它起到的作用就不大。

  Hekaton内存数据库

  当列存储索引将数据仓库应用性能提升一个档次时,微软的另一个项目正在将目标瞄准OLTP系统,它就是Hekaton内存数据库。网站、邮件服务器、ERP系统以及订单录入系统等,它们每一秒钟执行着大量的交易(一笔交易通常是比较小的),而这些系统正是Hekaton的目标群体。Hekaton事实上算是SQL Server的一个扩展,可以把它看做是一个内存数据库,它将在下一版本的SQL Server中正式发布,而目前的发布日程还没有最终公布。

  Hekaton先从存储在磁盘中的表入手,将它们完全放入到RAM当中。这意味着它将限制在较小的表之上,或者可以设计一个结构将活跃数据与历史数据进行分割。随着硬件设备的不断更新,RAM变得越来越大,从500 GB到上TB不等,对于存储应用系统的活跃数据,这么大的RAM是绝对够用了,这也是Hekaton应运而生的一个原因。

  在Hekaton系统中,DBA能使用T-SQL进行编码,这让它的使用门槛降低了许多。但要注意的是,与传统T-SQL还是有所不同,Hekaton代码将编译成原始的机器语言而且不带解释器。T-SQL在数据操控方面很好用,但是辅助业务逻辑不是它的强项;本机编译能够对其进行良好的提速效果。

  随着服务器的处理器核心越来越多,进行纵向扩展时的资源争用问题将会变得更加严重。Hekaton通过部署自身的锁定机制来避免这一问题,它对交易进行优化,来更加适应内存数据库,能够让多个交易同步地运行。然而,它的限制是如何将Hekaton表和其他表进行联合。

  通过内存数据处理、编译代码以及新的并发控制机制,Hekaton最初的基准测试数据相当吸引人。在SQL PASS 2012大会上,我看到开发人员的现场演示,其中吞吐量提升了25倍,是25倍,而不是25%哦!这只是Hekaton的初亮相,最终微软会给出我们怎样的答案,我会拭目以待。

  原文链接:http://www.searchdatabase.com.cn/showcontent.aspx
分享到:
评论

相关推荐

    SQL Server 2012内置审计功能 增强合规性

    SQL Server 2012提供了两种定义审计的方式:SQL Server Management Studio (SSMS) 和 Transact-SQL。在SSMS中,用户可以通过图形界面创建审计和审计规范,而Transact-SQL则适合自动化或更复杂的设置。审计的创建过程...

    [SQL Server] Microsoft SQL Server 2012 技术内幕 (英文版)

    [Microsoft Press] Microsoft SQL Server 2012 技术内幕 (英文版) [Microsoft Press] Microsoft SQL Server 2012 Internals (E-Book) ☆ 图书概要:☆ Dive deep inside the architecture of SQL Server 2012 ...

    SQL Server 2012驱动包

    SQL Server 2012驱动包是用于连接Java应用程序与Microsoft SQL Server数据库的关键组件。它包含了一组Java Database Connectivity (JDBC)驱动程序,使得Java开发者能够利用Java编程语言访问和操作SQL Server 2012...

    Microsoft SQL Server 2012 Express LocalDB.zip

    这个提示意味着你的开发环境缺少SQL Server的一个轻量级版本,即SQL Server 2012 Express LocalDB。 **什么是LocalDB?** LocalDB是SQL Server Express的一个特殊版本,设计用于满足开发者对快速、无管理数据库的...

    sqlserver驱动2012版

    2012版的驱动程序主要针对SQL Server 2012及后续的兼容性进行优化,支持最新的特性和功能。 描述中提到的“Navicat工具”是一款流行的数据库管理工具,它允许用户通过图形界面连接并管理多种类型的数据库,包括SQL ...

    SQL Server 2012 从入门到精通pdf

    《SQL Server 2012 从入门到精通》是一本深入浅出的教程,旨在帮助初学者和有一定经验的数据库管理员全面理解并熟练掌握Microsoft SQL Server 2012的使用。这本书以实例为引导,使学习过程更加生动且易于理解。在SQL...

    microsoft system clr types for sql server 2012

    总结来说,Microsoft System CLR Types for SQL Server 2012是.NET开发者在利用SQL Server功能时不可或缺的组件,它为.NET应用程序与SQL Server之间的交互提供了强大的支持。在进行WSUS部署时,确保安装了正确版本的...

    sqlServer2012驱动包

    在这个场景中,我们关注的是如何在Java环境中,特别是使用Spring框架,来配置德鲁伊(Druid)连接池以连接到SQL Server 2012数据库。德鲁伊作为一款高效且功能丰富的数据库连接池,常被用于大型项目以优化数据库操作...

    SQL Server 2012 Native Client.rar

    这个压缩包包含了x64和x86两个版本的客户端组件,以适应不同操作系统平台的需求。以下是对SQL Server 2012 Native Client的详细解释: 1. **SQL Server Native Client的介绍**: SQL Server Native Client是一个...

    Microsoft System CLR Types For SQL Server 2012.rar

    总之,"Microsoft System CLR Types for SQL Server 2012"是SQL Server与.NET Framework之间的一个关键桥梁,它极大地扩展了数据库系统的功能和应用范围,为开发者提供了更强大、更灵活的数据库编程工具。

    sqlserver 2012驱动

    Microsoft® SQL Server® 2012 Microsoft® SQL Server® 2008 R2 Microsoft® SQL Server® 2008 Microsoft® SQL Server® 2005 Microsoft® SQL Azure 返回页首返回页首 说明 JDBC Driver 的 Microsoft ...

    SQL Server 2012 R2

    SQL Server 2012 R2.ios 可直接解压或虚拟光驱安装 见下载网盘.txt

    SQL Server 2012 64位

    SQL Server 2012 64位,用于数据库开发、SQL Server 2012 64位,用于数据库开发SQL Server 2012 64位,用于数据库开发SQL Server 2012 64位,用于数据库开发SQL Server 2012 64位,用于数据库开发

    microsoft system clr types for sql server 2012.7z

    这个组件包含了用于与SQL Server交互的.NET类库,使得开发者可以在.NET环境中使用C#、VB.NET等编程语言执行SQL Server特定的操作,如操作空间数据、XML数据、以及利用存储过程等功能。 描述中的“百度好久下到的,...

    Microsoft SQL Server 2012 Native Client 官方安装版 64bit

    此组件是专门为SQL Server设计的,能够提供比通用数据访问接口更高的性能和功能。 **安装问题与Win10兼容性** 在描述中提到,有时在Windows 10操作系统中,使用Navicat这样的数据库管理工具远程连接到SQL Server时...

    sql server 2012 CDC 使用教程

    关于sql server 2012 CDC 使用数据库增量数据的提取

    Windows Server 2012 + SQL Server 2016安装必读

    本文档提供了 Windows Server 2012 + SQL Server 2016 安装的详细指南,旨在帮助用户快速安装和配置这两个软件。本文档将分步骤地指导用户安装 Windows Server 2012 和 SQL Server 2016,并提供了安装过程中的重要...

    sql server 2012 R2企业版安装光盘ISO

    此资源为sql server 2012 R2版本 内部版本号2200,安装后可直接运行

    Microsoft SQL Server 2012 Analysis Services 高级教程 pdf

    《Microsoft SQL Server 2012 Analysis Services 高级教程》是针对数据库管理员、数据分析师以及IT专业人士的一本深入指南,旨在帮助读者掌握SQL Server 2012中的Analysis Services(简称SSAS)的各项高级功能。...

Global site tag (gtag.js) - Google Analytics