b15 sql server と index の進化 by 熊澤幸生

28

Upload: insight-technology-inc

Post on 08-Jun-2015

501 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: B15 SQL Server と Index の進化 by 熊澤幸生
Page 2: B15 SQL Server と Index の進化 by 熊澤幸生

•−

•−

•−

•−

•−

Page 3: B15 SQL Server と Index の進化 by 熊澤幸生

•−

−−

−−

•−

•−

Page 4: B15 SQL Server と Index の進化 by 熊澤幸生

•−

Page 5: B15 SQL Server と Index の進化 by 熊澤幸生

Page 6: B15 SQL Server と Index の進化 by 熊澤幸生
Page 7: B15 SQL Server と Index の進化 by 熊澤幸生

カラム・オリエンテッド

データストアー

行・オリエンテッド

データストアー

コア・キャッシュ・インターコネクト

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

Page 8: B15 SQL Server と Index の進化 by 熊澤幸生
Page 9: B15 SQL Server と Index の進化 by 熊澤幸生

Page 10: B15 SQL Server と Index の進化 by 熊澤幸生

Page 11: B15 SQL Server と Index の進化 by 熊澤幸生

Page 12: B15 SQL Server と Index の進化 by 熊澤幸生

Page 13: B15 SQL Server と Index の進化 by 熊澤幸生

SUM(bigTransactionHistory.Quantity)

Page 14: B15 SQL Server と Index の進化 by 熊澤幸生

Page 15: B15 SQL Server と Index の進化 by 熊澤幸生
Page 16: B15 SQL Server と Index の進化 by 熊澤幸生

Page 17: B15 SQL Server と Index の進化 by 熊澤幸生

Page 18: B15 SQL Server と Index の進化 by 熊澤幸生

Page 19: B15 SQL Server と Index の進化 by 熊澤幸生

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 等

Page 20: B15 SQL Server と Index の進化 by 熊澤幸生

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

Page 21: B15 SQL Server と Index の進化 by 熊澤幸生

Page 22: B15 SQL Server と Index の進化 by 熊澤幸生

C1 C2 C3 C5 C6 C4

ColumnStore indexes は、カラム (列) 単位に データを格納する

それぞれのページは単一のカラムが格納される

高いデータ圧縮

従来のページ圧縮と比較し、2 倍の圧縮率を実現

メモリーの有効利用を実現

複数のカラムへのアクセスは並列処理が可能

クエリーが必要なカラムのみをフェッチ

大幅な物理 I/O の削減

HoBT (Heap or B-Tree) store 行単位にデータを格納する

Page 23: B15 SQL Server と Index の進化 by 熊澤幸生

C1 C2 C3 C5 C6 C4

セグメント

グループ

Page 24: B15 SQL Server と Index の進化 by 熊澤幸生

Page 25: B15 SQL Server と Index の進化 by 熊澤幸生

•−

•−

•−

Page 26: B15 SQL Server と Index の進化 by 熊澤幸生

•−

Page 27: B15 SQL Server と Index の進化 by 熊澤幸生

Page 28: B15 SQL Server と Index の進化 by 熊澤幸生