亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > SQL Server > 正文

SQL Server Column Store Indeses

2024-08-31 00:54:46
字體:
來源:轉載
供稿:網友
SQL Server Column Store IndesesSQL Server Column Store Indeses

SQL Server Column Store Indeses. 1

1. 概述... 1

2. 索引存儲... 2

2.1 列式索引存儲... 2

2.2 數據編碼和壓縮... 3

2.2.1 編碼... 3

2.2.2 優化行順序... 4

2.2.3 壓縮... 4

2.3 I/O和Cache. 4

3 查詢處理和優化... 4

3.1 查詢處理加強... 4

3.2 查詢優化

1. 概述

SQL Server 11增加了新特性列存儲索引和相關的查詢操作符。批量行處理來提高數據倉庫的查詢性能。

傳統的數據庫系統使用行存儲的,heap,btree都是。這種數據組織方式對于,只處理到一部分數據的事務處理表現很好,但是并不適應數據倉庫的,數據倉庫通常是對掃描很多記錄,但是只涉及到某一些行。這個時候列方式組織就能執行的很好。因為可以讀取需要的列,并且列存儲的數據可以得到很好的壓縮。

SQL Server列存儲索引是純粹的列存儲,不是混合的。不同的列被存放在不同的page下。

使用1TB測試數據庫(TPC-DS),catalog_sales包含1.44billion條數據,使用星型結構來測試列存儲索引的性能提升,只對事實表做列存儲索引,其他表都是行存儲。在40核啟用了超線程,256GB內存,磁盤性能在10GB/sec設備上測試。

SELECT w_city ,w_state ,d_year ,SUM(cs_sales_PRice) AS cs_sales_price

FROM Warehouse ,catalog_sales ,date_dim

WHERE w_warehouse_sk = cs_warehouse_skAND cs_sold_date_sk = d_date_skAND w_state = 'SD'AND d_year = 2002

GROUP BY w_city , w_state ,d_year

ORDER BY d_year , w_state , w_city;

比較容易看出性能,在improvement行中可以看出,CPU花費少了13倍,在cold情況下執行時間少了25倍。

2. 索引存儲

在SQL Server 11之前所有的索引都是以行存儲的。不管是btree還是heap。

列存儲,以新的索引類型引入到SQL Server列存儲索引。設計的目的是為了加快列的掃描。

2.1 列式索引存儲

列存儲保存方式如下:

  1. 把行轉化為column segment,先把行分為一個個的row groups,每個groups由1million數據。每個row group獨立的進行編碼和壓縮。生產一個壓縮的column segment,里面只包含一個列。

如圖表分為3個row group,獨立的進行編碼和壓縮,生成9個壓縮的column segments。

  2. 然后使用現有的blob存儲機制來保存這些壓縮的column segments。Segment目錄用來跟蹤每個segment的位置,這樣每個segment可以很容易的被定位。這個segment目錄被保存在系統表可以使用sys.column_store_segments來查看,視圖里面也保存了一些元數據。

2.2 數據編碼和壓縮

數據存儲是使用壓縮的方式來減少存儲空間和I/O消耗??梢赃x擇允許column segment直接使用不需要解壓縮。壓縮步驟如下:

1.對所有的column的值進行編碼。

2.優化行的順序。

3.對每個行進行壓縮。

2.2.1 編碼

編碼就是把列值轉化為唯一的類型:32bit或者64bit。支持2個類型的encode:基于字典的編碼和基于值的編碼。

基于字典的編碼把不同的值轉為連續的int值的集合。存入數據目錄,本質上是存入以dataids為索引的一個數組中。每個數據字典保存在獨立的blob中,可以使用sys.column_store_dictionaries查看。

基于值的編碼應用在int或者decimal數據類型上。把某個范圍的值弄小?;谥档木幋a由2部分組成:基值和指數。

一旦指數被選中,column segment上的值就會被調整。

2.2.2 優化行順序

重要的性能提升主要是來自于壓縮,數據使用RLE壓縮(run-length encoding)。RLE在許多一樣的數據在一起的時候壓縮表現會很好。因為在row groups中順序是不重要的,所以可以隨意的重新組織順序來提高壓縮效率。

我們使用vertipaq算法來重新重新組織row group中的順序,提高RLE的壓縮性能。

2.2.3 壓縮

一旦row group中的行被重新排序,就可以使用RLE來壓縮。

2.3 I/O和Cache

Blob存儲的column segment或者字典可能跨多個page,當我們讀入內存的時候column segment和字典被保存在新的cache中用來保存大對象,而不是基于page 的buffer pool中。而且每個對象都是連續的,沒有空隙。

為了提高I/O性能,預讀可以被應用在segment內和多個segment上。對于磁盤存儲,可以使用額外的壓縮,是否使用額外的壓縮,需要在I/O和cpu之間平衡。

3 查詢處理和優化3.1 查詢處理加強

標準的查詢處理是基于行的,一次處理一行,為了減少cpu,使用了新的處理方式,以批處理的方式一次性處理一批行。批處理方式適用于OLAP但是不會取代行處理在OLTP中的地位。

SQL Server沒有去創建一個新的引擎,而是在原來的引擎上面做擴展。有以下好處:

1.用戶不需要花時間在新的引擎上,和不需要再2個引擎上做轉化。

2.極大的減少了實現引擎的花費

3.查詢計劃可以混合兩個操作。

4.查詢可以自動的在batch和row操作間轉化。

5.所有的特性相容。

新的batch有獨立的訪問方法有不同的數據源支持,列存儲索引的訪問方法支持謂詞和bitmap過濾。Batch模式一般適用于數據密集的計算,計算復制的過濾條件,select列表,join和聚合。

新的訪問方法有新的優化,如:延遲字符串實例化和透明使用新的迭代器。雖然批處理方式可以減少cpu處理時間,但是達不到目標。

有一些額外的優化方式:

1.新的迭代器針對最新的cpu進行優化,增加內存的吞吐量。

2.bitmap過濾的實現。

3.runtime資源管理被提升,可以讓操作以更靈活的方式共享。

3.2 查詢優化

和其他索引不同,列存儲索引不能很好的支持point query和range scan,因為列存儲索引沒有順序,沒有統計信息。列存儲索引值提供高壓縮的數據來減少cpu和io,對于scan可以從列存儲索引上提升性能。

是否使用batch處理方式由查詢分析器決定,也可以混合row和batch處理,但是2者之間的轉化是有花費的,因此mssql會限制轉化次數。

為了在生成的圖形計劃中區分batch和row,加入了一個新的屬性,用這個屬性來區分是batch還是row。,也可以決定是否有必要做轉化。所有的batch操作要求輸入都是batch,row操作輸入都是row。

除了batch處理方法,也引入的新的方法來控制多個join。Sql server優化器視圖把inner join轉化為一個多維join操作。好處是可以一次性處理整個join graph。

1.我們先通過join的表達式和謂詞來識別那個join key 是唯一的。使用識別的唯一信息來判斷哪些是事實表,哪些是維度表,事實表不會有唯一信息。

2.然后從最小的事實表開始展開join graph,盡量多的覆蓋維度表,在事實表周圍形成一個雪花型。然后處理另外一個試試表。

3.之后,我們會有多個雪花型join,然后從最大的事實表開始,遞歸的把周圍的雪花以維度表方式加入,開始形成最終的執行計劃。首先,識別哪些join值得創建bitmap過濾,一旦識別就創建一個right deep join樹,把維度表放在左邊,事實表放在右邊。每個維度表可能都是一個雪花型,然后以遞歸的方式分解每一個雪花。在每個join上,確定條件,檢查是否可以使用batch,如果不行則用row模式。若到達了,所有吧可以batch的放在下面,其他的放在上面。

參考:

SQL Server Column Store Indexes


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲字幕在线观看| 国产成人在线亚洲欧美| 热re91久久精品国99热蜜臀| 亚洲欧洲黄色网| 日韩视频免费大全中文字幕| 国产精品18久久久久久首页狼| 茄子视频成人在线| 高跟丝袜一区二区三区| 亚洲美女视频网站| 欧美性xxxxx极品| 亚洲女人天堂网| 成人精品福利视频| 久久97精品久久久久久久不卡| 久久久精品999| 亚洲精品国产精品国产自| 欧美激情精品在线| 日韩精品在线免费| 日韩美女免费视频| 久久人人爽人人爽人人片av高请| 日本成人免费在线| 北条麻妃一区二区三区中文字幕| 国产精品女人网站| 日韩视频―中文字幕| 97精品视频在线播放| 亚洲三级黄色在线观看| 日韩成人久久久| 日韩人在线观看| 九色91av视频| 青青青国产精品一区二区| 色在人av网站天堂精品| 亚洲一区二区久久久久久久| 国产剧情久久久久久| 国产精品丝袜白浆摸在线| 久久精品中文字幕一区| 狠狠躁夜夜躁人人躁婷婷91| 日韩欧美精品免费在线| 精品视频www| 精品亚洲一区二区三区在线播放| 欧美性猛交xxxx乱大交极品| 日韩综合视频在线观看| 精品国产一区二区三区久久狼5月| 国产精品白嫩初高中害羞小美女| 欧美夫妻性生活xx| 中文字幕av一区二区三区谷原希美| 久久久久久久激情视频| 国产精品亚洲美女av网站| 久久综合伊人77777| 91精品国产99久久久久久| 国产综合视频在线观看| 久久久久国色av免费观看性色| 亚洲综合日韩在线| 国产日本欧美一区二区三区在线| 在线一区二区日韩| 欧洲美女7788成人免费视频| 国产精品视频免费观看www| 亚洲欧美日韩精品久久奇米色影视| 欧美一级电影久久| 96pao国产成视频永久免费| 日韩美女毛茸茸| 国产不卡av在线免费观看| 欧美激情亚洲精品| 成人中文字幕+乱码+中文字幕| 日韩久久免费电影| 福利视频一区二区| 国产精品www| 中文字幕日韩有码| 日本中文字幕不卡免费| 亚洲精品成人久久| 成人久久久久久久| 久久久精品欧美| 57pao成人国产永久免费| 亚洲精品综合久久中文字幕| 中文字幕国产亚洲| 色综久久综合桃花网| 久久精品国产v日韩v亚洲| 日韩av电影在线播放| 久久综合亚洲社区| 成人免费在线网址| 欧美激情欧美狂野欧美精品| 亚洲第一天堂av| 久久精品国产亚洲一区二区| 欧美色视频日本版| 色综合导航网站| 91视频8mav| 日韩电影中文 亚洲精品乱码| 日本三级韩国三级久久| 日韩av在线直播| 国产精品久久久久7777婷婷| 精品国产一区二区三区久久狼5月| 久久午夜a级毛片| 麻豆一区二区在线观看| 亚洲一区二区精品| 欧美日韩亚洲视频| 国产91久久婷婷一区二区| 日韩性xxxx爱| 国产一区香蕉久久| 91亚洲精品久久久| 欧美视频免费在线| 91在线免费看网站| 欧美激情xxxx性bbbb| 欧美老女人性视频| 狠狠躁夜夜躁久久躁别揉| 成人福利网站在线观看| 91精品国产九九九久久久亚洲| 色综合久久中文字幕综合网小说| 成人国产在线激情| 91精品国产高清久久久久久| 亚洲国产成人av在线| 国产成人精品999| 亚洲深夜福利网站| 久久精品国产91精品亚洲| 亚洲精品一区中文| 黑人巨大精品欧美一区二区三区| 91久久综合亚洲鲁鲁五月天| 日韩经典中文字幕| 91tv亚洲精品香蕉国产一区7ujn| 国产午夜精品理论片a级探花| 中文在线资源观看视频网站免费不卡| 日韩精品亚洲视频| 国产精品久久久久福利| 中文字幕在线视频日韩| 91精品久久久久久久久久另类| 色综合视频网站| 亚洲欧美综合图区| 色香阁99久久精品久久久| 国产亚洲aⅴaaaaaa毛片| 国产精品国产亚洲伊人久久| 亚洲社区在线观看| 亚洲丝袜在线视频| 国产精品99一区| 国产精品久久9| 亚洲午夜久久久影院| 欧美第一淫aaasss性| 国产亚洲精品成人av久久ww| 国产免费亚洲高清| 日韩在线视频线视频免费网站| 欧美日韩国产精品一区二区三区四区| 91国在线精品国内播放| 欧美中文在线字幕| 国产一级揄自揄精品视频| 国产亚洲激情视频在线| 日本成熟性欧美| 久久九九全国免费精品观看| 亚洲tv在线观看| 久久精品国产视频| 一区二区三区高清国产| 国产精品久久不能| 成人久久久久久久| 国产成人精品a视频一区www| 久久亚洲影音av资源网| 日韩欧美第一页| 日韩麻豆第一页| 亚洲欧美另类自拍| 欧美日韩激情网| 中文字幕久热精品在线视频| 日韩激情在线视频| 欧美激情手机在线视频| 国产精品一香蕉国产线看观看| 国产午夜一区二区| 日韩av网站电影| 亚洲人成在线观看| 91av在线不卡| 亚洲乱码一区av黑人高潮| 欧美在线视频网|