费了半天劲,今天终于装好SQL Server2012了。按照MSDN中的新特性资料(Columnstore Indexes for Fast DW QP SQL Server 11)。尝试了下ColumnStore Index。ColumnStore Index按照其字面意思所示。是基于列存储的索引。这个概念如图1所示。

图1.ColumnStoreIndex和基于行的Index比较

ColumnStoreIndex是按照列存入页当中,而不是按照传统的以行为单位存入页。因此带来的好处可以归结如下:

  • 以往的数据按照行存储,select哪怕只有一列,也会将整个行所在的页提取出来,而使用基于列的索引,仅仅需要提取select后面的列。提高了性能。
  • 压缩更容易
  • 缓存命中率大大提高,因为以列为存储单位,缓存中可以存储更多的页(缓存常用的列,而不是整个行)

微软号称自己是第一个支持“纯”列存储的主流数据库。其他数据库我不甚了解,有知道的同学可以反驳下……

使用ColumnStore Index不能像使用其它非聚集索引那样没有限制,使用ColumnStoreIndex的限制如下:

1.一个表只能有一个ColumnStore Index

2.不能使用过滤索引

3.索引必须是partition-aligned

4.被索引的表变成只读表

5.被索引的列不能是计算列

6.不能使用Include关键字

因此可以看出,中小型的OLTP环境基本和这个功能无缘。ColumnStore Index貌似适用于OLAP和读写分离用。

下面我们来看一些使用ColumnStore Index的实例

建立ColumnStore Index和对ColumnStore Index所在表数据进行更改

建立ColumnStore Index和建立普通的非聚集索引看起来基本没有区别,仅仅是多加了一个ColumnStore关键字,如图2所示。

图2.建立ColumnStore Index的表后对其插入数据失败

如果要对有ColumnStore Index的表进行数据更改,则需要在停用ColumnStore Index后,插入数据,完成后,重建ColumnStore Index,如图3所示。

图3.对有ColumnStore Index的表进行数据插入

ColumnStore Index查询性能测试

ColumnStore Index带来的最大好处是查询性能的增加。下面来进行测试。在刚才图1中所建的表中插入100万条从1到1000的随机数,如图4所示。

图4.插入100万条测试数据

然后在Data列上分别建立ColumnStore Index和普通的非聚集索引,如图5所示。

图5.分别建立两个索引

然后分别利用这两个索引做一次聚合查询,测试结果发现使用ColumnStore Index对IO的占用大大的减少了。如图6所示。

图6.使用两种索引的性能对比

所对应的执行计划如图7所示。

图7.两种索引的执行计划

可以看出,使用ColumnStore Index对性能的提升是巨大的。

总结

本文通过对ColumnStore Index做了简单的介绍后,做了简单的测试得出,使用ColumnStore Index对性能的提升是巨大的,但由于ColumnStore Index的使用受到诸多限制。目前只能在OLAP环境中使用。更多的使用场景未来再看吧。

转载于:https://www.cnblogs.com/qanholas/archive/2013/03/08/2949207.html

SQL Server 2012中的ColumnStore Index尝试相关推荐

  1. SQL Server 2012中的Contained Database尝试

    简介 SQL Server 2012新增的Contained Database是为了解决数据库在不同SQL Server实例之间迁移的问题.在以往的情况下,数据库本身并不包含一些实例级别的配置参数(比 ...

  2. 微软BI 之SSAS 系列 - 在SQL Server 2012 中开发 Analysis Services Multidimensional Project

    SQL Server 2012 中提供了开发 SSAS 项目的两种模型,一种是新增加的 Tabular Model 表格模型,另一种就是原始的 Multidimensional Model 多维模型. ...

  3. 解读SQL Server 2012中的最新BI功能

    如果SQL Server 2008 R2的重点是让商务智能(BI)的使用者像使用自助服务一样便捷,那么SQL Server 2012则是让自助服务BI这一概念延伸至让IT人员更容易进行管理. 事实上, ...

  4. SQL Server 2012中包含的数据库(Contained Database)探索

    SQL Server 2012引入了包含数据库(Contained Database),解决了与当前(非包含)数据库关联的某些问题和复杂性.包含的数据库不依赖于其所属服务器相关的配置.管理.排序规则和 ...

  5. SQL Server 2012 中的 Service Broker功能的一些改进或增强

    1. 可以将消息发送到多个目标服务(多播) 通过支持多个会话句柄,扩展了 SEND (Transact-SQL) 语句的语法以启用多播. DECLARE @dialog_handle1 UNIQUEI ...

  6. SQL server 2012 中USE和GO的用法

    一.USE 命令 USE 的用法:USE 数据库名 USE //跳转到需要操作的数据库. 例子:USE [ssqadm] 跳转到ssqadm数据库下,对ssqadm数据库下的对象和数据进行操作. US ...

  7. sql server 2012中red gate的sql source control消失

    找到C:\ProgramData\Microsoft\SQL Server Management Studio\11.0\Addins路径,用notepad++打开RedGate.SIPFramewo ...

  8. 微软BI 之SSAS 系列 - 在 SQL Server 2012 下查看 SSAS 分析服务的模型以及几个模型的简单介绍...

    在SSDT中部署一个 SSAS 项目到本地服务器上出现错误. You cannot deploy the model because the localhost deployment server i ...

  9. SQL Server 2012如何打开2016的profiler文件

    作者:markjiang7m2 原文地址:https://www.cnblogs.com/markjiang7m2/p/10980191.html 背景 在上星期,公司负责support的同事接到反馈 ...

最新文章

  1. VS如何将核心函数封装成dll、lib,并供给第三方调用?
  2. python逗号运算符_x,= ... - 这个尾随逗号是逗号运算符吗?
  3. linux下su和su - 的区别
  4. 报告如何单独添加水印?永洪BIV9.2解锁版权保护新方式
  5. java reader_Java Reader reset()方法与示例
  6. bootstrap带有下拉按钮的输入框_关于bootstrap--表单(下拉select、输入框input、文本域textare复选框checkbox和单选按钮radio)...
  7. 关于代理转发,代码如下具体还有待理解
  8. php secket5,《Thinkphp5使用Socket服务》 入门篇
  9. MySql、Oracle、MSSQL中的字符串的拼接
  10. java webservice用户验证_java webservice 用户验证 (服务端 + 客户端)
  11. 安卓开发之刮刮乐实例教程
  12. a better git log
  13. ubuntu16.04下安装配置caffe2和detectron(亲测有效,非常简单)
  14. Firefox控制台日志转入文件
  15. IE6 position:fixed bug (固定窗口方法)
  16. 【转】演化博弈理论(EGT)
  17. 在MySQL中以下属于ddl语句的_ddl语言(以下哪些命令是ddl语句)
  18. 什么叫明文,什么叫密文,为什么不允许在数据库里明文保存密码?
  19. 关于RN报Unrecognized font family ionicons
  20. java中412是什么错_HTTP 412 错误 – 先决条件失败 (Precondition

热门文章

  1. 隋唐5s与linux的关系,我与Linux
  2. php向指定文件发送消息,PHP-将文件发送给用户
  3. python一次性输入10个数_python如何一次性输入多个数
  4. vue 背景透明度_一款媒体小白喜爱的视频编辑软件,vue视频编辑APP,想学就来...
  5. 自然语言理解属于计算机应用的那个范畴,基于自然语言理解的3D场景构造研究-计算机应用技术专业论文.docx...
  6. Android应用开发-快速入门
  7. ViewPager刷新问题详解
  8. Windows 上看端口 找PID
  9. 2020 mse 清华_ICSMSE 2020
  10. python安装linux软件_Linux之安装常用软件