SQL Server 2016——可更新的非聚集列存儲索引

ccwv 9年前發布 | 15K 次閱讀 SQL Server

英文原文:SQL Server 2016: Updatable, Non-Clustered Columnstore Indexes

非聚集列存儲索引(NCC Index)在 SQL Server 2016 中也得到了一定程度的功能增強,其中最引人注目的一條在于可以對其進行更新了。

非聚集列存儲索引功能最早出現在 SQL Server 2012 中,它的設計目的是為普通的堆或B樹表提供一種只讀的快照。它的設想是對其進行定期的刪除與重建,可以以每個晚間或每一周作為維護周期。作為一種替代方式,你也能夠通過分區切換加載更多的數據。

在 SQL Server 2014 中出現了聚集列存儲索引(CC Index),這種列存儲引擎的功能得到了升級,能夠支持數據更改。但這種功能并未在 NCC 索引中得到延續,后者的能力依然僅限于快照模式而已。

在 2016 版本中,這一條限制終于被完全取消了。實際上,NCC 索引在默認情況下就是可更新的。如果你仍然希望使用原始的快照方式,那么必須將該索引保存在一個只讀的文件組中。

篩選索引

如果你確信只需要一個經過良好定義的數據子集,那么篩選索引能夠極大地減少所需的磁盤空間。并且在許多情況下,篩選也能夠加速性能。

在 SQL Server 2016 中 NCC 索引的另一個新特性是能夠對索引定義應用篩選條件,這一點只能夠用于非聚集列存儲索引,而聚集列存儲索引與內存優化表仍然需要包括完整的索引定義。

批量模式增強

批量模式處理是一個非常神秘的主題,只有當你理解 SQL Server 解釋器的工作原理時才能夠充分利用它。如果你對這一主題還不熟悉,請閱讀 Chris Adkin 的系列文章“了解 SQL Server 批量模式的底層知識”。簡單來說,批量模式比起一次處理一條記錄的速度至少快兩倍,但并不是在所有情況下都能夠使用這一模式的。

如果你正在運行 13.0 兼容模式(即 SQL Server 2016),那么以下這些操作就可以選擇使用批量模式。

  • 排序
  • 對多個不同函數進行聚合:例如 COUNT/COUNT、AVG/SUM、CHECKSUM_AGG、STDEV/STDEVP
  • 開窗聚合函數:COUNT、COUNT_BIG、SUM、AVG、MIN、MAX,以及 CLR
  • 開窗用戶自定義聚合:CHECKSUM_AGG、STDEV、STDEVP、VAR、VARP,以及 GROUPING
  • 開窗聚合分析函數:LAG< LEAD、FIRST_VALUE、LAST_VALUE、PERCENTILE_CONT、PERCENTILE_DISC、CUME_DIST、以及 PERCENT_RANK

在 SQL Server 1014 中,批量模式只限于并行查詢使用,而現在它也可以用于單線程的工作了。

來自: InfoQ

 本文由用戶 ccwv 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!