SQL Server 2012容量管理:列存儲索引

来源:互联网 发布:对越自卫反击战知乎 编辑:程序博客网 时间:2024/06/11 19:08
 【TechTarget中國原創】由於在大數據集中常常會出現擴展問題,微軟公司即將推出的SQL Server 2012中大部分針對擴展性和容量管理的新功能都定位專門處理大負載:數據倉庫,商業智能(BI)和决策支持應用程序。把這样一些應用程序整合到一起是相當辛苦的,而維護它們的數據結構就更困難了。

  列存儲索引

  列存儲索引被標榜为SQL Server 2012中最大的可擴展性改進,現在社區技術預覽(CTP)中已經可用了。列存儲索引为每個列把數據打包到磁盤頁的獨立集合中。這是相對於傳統的每頁存儲多行的方法而言的。

  微軟公司宣稱使用這種新的索引方法有幾個優勢。舉例來說,存儲列這種方式使得計算特殊查詢需要的列能輕松快速地提取。這是因为該索引壓縮了數據,平均來看列比整個行更冗餘,因此可壓縮性也更高。磁盤訪問模式和緩沖允許數據被更加快速地提取和保留。在给定表中存在的列越多,或者你計劃添加到给定表中的列越多,列索引给表帶來的擴展效果就越好。

  從擴展性的角度來看,優點是很明顯的。你可以给數據庫擴充容量,而無需擔心這會對BI查詢(查詢的數據可能達到數十億行)性能造成影響。微軟公司自己前期工作發現,請求巨量行數據的各種查詢訂單程數量級激增,這跟你手頭的數據類型有關。

  需要說明的一點是,一旦你给表增加了列存儲索引,它就變成只讀的了。具體來說,你不能使用“Insert,Update,Delete”或者“Merge”語句,也不能使用批量操作添加數據。我猜這是避免列存儲索引被重复更新的一種手段,進而避免損失擺在首位的性能優勢。

  如果你需要在沒有列存儲索引的情況下運行查詢(例如,判斷净性能增益),你可以在T-SQL查詢中使用“IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX”選項,從該選項的名稱也可以看出,微軟公司已經計劃推出集群的列存儲索引。


原创粉丝点击