b15 sql server と index の進化 by 熊澤幸生
TRANSCRIPT
•−
•−
•−
•−
−
•−
−
−
−
−
•−
−−
−
−
−
−−
−
−
•−
−
•−
•
•−
•
•
•
−
−
−
−
−
−
−
−
−
−
•
カラム・オリエンテッド
データストアー
行・オリエンテッド
データストアー
コア・キャッシュ・インターコネクト
30MB
L3 Cache
キー1 a1 b1 c1 d1
キー2 a2 b2 c2 d2
a1 a2 a3 ……. an
b1 b2 null ……. bn
CPU
Core2
CPU
Core1
CPU
Core3
CPU
Core4
CPU
Core5
CPU
Core6
CPU
Core7
CPU
Core8
L1
L2
L1
L2
L1
L2
L1
L2
L1
L2
L1
L2
L1
L2
L1
L2
Intel Xeon E7 シリーズの例
CPU
Core9 CPU
Core10
L1
L2
L1
L2
•
•
•
−
•
•
−
SUM(bigTransactionHistory.Quantity)
•
•
•
•
•
•
•
•
•
Base table
A B C D
データ型
変換と圧縮
データ型
変換と圧縮
データ型
変換と圧縮
Compressed
column segments
R
ow
gro
up
1
Ro
w g
rou
p 2
R
ow
gro
up
3
1M rows/group
Column store index
Blobs
Row
group
Row group
Row
group
Se
gm
en
t
dir
ecto
ry
新しいシステムテーブル: sys.column_store_segments
セグメントメタデータ: サイズ、最小データ id、
最大データ id 等
sys.column_store_segments (セグメント情報)
column
_id
segment
_id version
encoding
_type row_count
has_
nulls base_id
magnitud
e
primary_
dictionary
_id
secondary
_
dictionary
_id min_data_id max_data_id
null_
value
on_disk_siz
e
1 0 1 1 1,048,576 0 -2 1 -1 -1 1 1,048,576 -1 2,796,792
1 1 1 1 1,048,576 0 1,048,574 1 -1 -1 1,048,577 2,097,152 -1 2,796,792
1 27 1 1 1,048,576 0 28,311,550 1 -1 -1 28,311,553 29,360,128 -1 2,796,792
1 28 1 1 1,048,576 0 29,360,126 1 -1 -1 29,360,129 30,408,704 -1 2,796,792
1 29 1 1 854,897 0 30,408,702 1 -1 -1 30,408,705 31,263,601 -1 2,280,632
2 0 1 2 1,048,576 0 -1 -1 0 -1 1,001 50,999 -1 2,097,736
2 1 1 2 1,048,576 0 -1 -1 0 -1 1,001 50,999 -1 2,097,736
2 28 1 2 1,048,576 0 -1 -1 0 -1 1,001 50,999 -1 2,097,736
2 29 1 2 854,897 0 -1 -1 0 -1 1,001 50,999 -1 1,710,704
3 0 1 2 1,048,576 0 -1 -1 0 -1 164,716,290,768,896 164,892,384,428,032 -1 1,240
3 1 1 2 1,048,576 0 -1 -1 0 -1 164,892,384,428,032 165,072,773,054,464 -1 1,256
3 28 1 2 1,048,576 0 -1 -1 0 -1 172,958,333,009,920 173,263,275,687,936 -1 1,720
3 29 1 2 854,897 0 -1 -1 0 -1 173,263,275,687,936 173,508,088,823,808 -1 1,816
4 0 1 2 1,048,576 0 -1 -1 0 -1 1 100 -1 70,696
4 1 1 2 1,048,576 0 -1 -1 0 -1 1 100 -1 80,184
5 28 1 4 1,048,576 0 0 1 -1 -1 0 7,109,871,466 -1 5,059,216
5 29 1 4 854,897 0 0 1 -1 -1 0 7,115,849,544 -1 4,106,080
•
−
−
•
−
−
−
•
−
−
−
…
C1 C2 C3 C5 C6 C4
ColumnStore indexes は、カラム (列) 単位に データを格納する
それぞれのページは単一のカラムが格納される
高いデータ圧縮
従来のページ圧縮と比較し、2 倍の圧縮率を実現
メモリーの有効利用を実現
複数のカラムへのアクセスは並列処理が可能
クエリーが必要なカラムのみをフェッチ
大幅な物理 I/O の削減
HoBT (Heap or B-Tree) store 行単位にデータを格納する
•
•
•
•
•
•
C1 C2 C3 C5 C6 C4
セグメント
行
グループ
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•−
−
−
−
−
•−
−
•−
•
−
−
•−
−
•
−
•
•
•
•
•