程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL Server 2012中的ColumnStore Index嘗試

SQL Server 2012中的ColumnStore Index嘗試

編輯:關於SqlServer

簡介

費了半天勁,今天終於裝好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的表後對其插入數據失敗

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved