[d23] sql server 2014 リリース記念!~hekaton,...

31
Hekaton, カラムストアを試して、 さらにギンギンに速くしてみました! Copyright © 2014 Insight Technology, Inc. All Rights Reserved. 平間大輔 株式会社インサイトテクノロジー SQL Server 2014 リリース記念!

Upload: insight-technology-inc

Post on 28-Nov-2014

2.107 views

Category:

Technology


5 download

DESCRIPTION

 

TRANSCRIPT

Page 1: [D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuke Hirama

Hekaton, カラムストアを試して、

さらにギンギンに速くしてみました!

Copyright © 2014 Insight Technology, Inc. All Rights Reserved.

平間大輔

株式会社インサイトテクノロジー

SQL Server 2014 リリース記念!

Page 2: [D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuke Hirama

なぜ、今出したのか?

Page 3: [D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuke Hirama

どっちが速い?

Copyright © 2014 Insight Technology, Inc. All Rights Reserved.

速い!

新しい!

多い!

Page 4: [D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuke Hirama

チェックポイントはQPI

Copyright © 2014 Insight Technology, Inc. All Rights Reserved.

Xeon E5-4600

(Sandy Bridge-EP)

Xeon E7-4800

(Westmere-EX)

Page 5: [D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuke Hirama

NUMAの恐怖

Copyright © 2014 Insight Technology, Inc. All Rights Reserved.

0

200

400

600

800

1000

1200

ノード0 ノード1 ノード2 ノード3

Sandy Bridge-EP RAID1 1組のスループット(MB/s)

Page 6: [D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuke Hirama

戦える武器をついに手にした

Copyright © 2014 Insight Technology, Inc. All Rights Reserved.

Xeon E7-4800 v2

(Ivy Bridge-EX)

Page 7: [D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuke Hirama

NUMA node間の速度も違う

Copyright © 2014 Insight Technology, Inc. All Rights Reserved.

3

Page 8: [D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuke Hirama

10GB/s越え!

Copyright © 2014 Insight Technology, Inc. All Rights Reserved.

0

2000

4000

6000

8000

10000

12000

4KB 8KB 16KB 32KB 64KB

SSD22本(RAID10)のスループット (MB/s)

Page 9: [D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuke Hirama

2 Socket マシンだってすごい

Page 10: [D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuke Hirama

Numa Node間のQPIは2本

Copyright © 2014 Insight Technology, Inc. All Rights Reserved.

Xeon E5-2600 (Sandy Bridge)

Xeon E5-2600v2 (Ivy Bridge)

Page 11: [D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuke Hirama

SSDの性能限界を引き出す!

Copyright © 2014 Insight Technology, Inc. All Rights Reserved.

0

2000

4000

6000

8000

10000

12000

14000

4KB 8KB 16KB 32KB 64KB 128KB 256KB 512KB 1024KB

SSD22本(RAID10)のスループット(MB/s) - 2socket machine

reading - random

reading - sequential

writing - random

writing - sequential

Page 12: [D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuke Hirama

IOPSもすごいぞ

Copyright © 2014 Insight Technology, Inc. All Rights Reserved.

0

50000

100000

150000

200000

250000

300000

350000

400000

450000

4KB 8KB 16KB 32KB 64KB 128KB 256KB 512KB 1024KB

reading - random

reading - sequential

writing - random

writing - sequential

Page 13: [D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuke Hirama

ここまでのまとめ

• データベースサーバーは注意深く選ぼう

• CPUコア数も大事だけどI/Oがキモだよ。

• Xeon E5-4600シリーズ(v2も)は罠だ!

• ストレージはディスク単体よりトータルのスループットが重要

Copyright © 2014 Insight Technology, Inc. All Rights Reserved.

Page 14: [D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuke Hirama

いよいよ、SQL Server 2014の新機能へ!

Copyright © 2014 Insight Technology, Inc. All Rights Reserved.

Page 15: [D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuke Hirama

実用的になったカラムストアインデックス

※全ての図版について、出典:SQL Server 2014 自習書より

Page 16: [D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuke Hirama

Copyright © 2014 Insight Technology, Inc. All Rights Reserved.

CPUキャッシュに最適化

※db tech showcase 2013 Tokyo 熊澤氏の講義資料より

Page 17: [D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuke Hirama

Copyright © 2014 Insight Technology, Inc. All Rights Reserved.

最大値・最小値も自動格納

Page 18: [D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuke Hirama

実行時間は 1/3 !

Copyright © 2014 Insight Technology, Inc. All Rights Reserved.

CSIなし CSIあり

Page 19: [D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuke Hirama

更新してしまうと…

Copyright © 2014 Insight Technology, Inc. All Rights Reserved.

CSIなし CSIあり CSIあり更新後

Page 20: [D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuke Hirama

リビルドで復活!

Copyright © 2014 Insight Technology, Inc. All Rights Reserved.

Page 21: [D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuke Hirama

TPC-Hは3部門でトップに

Copyright © 2014 Insight Technology, Inc. All Rights Reserved.

Page 22: [D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuke Hirama

新機能の大本命、その名はHekaton

Copyright © 2014 Insight Technology, Inc. All Rights Reserved.

In memory OLTP機能

メモリ最適化テーブル

データの永続化も可能

ネイティブコンパイルストアドプロシージャ

ロック・ラッチ待ちなし

既存のテーブルと共存可能

Page 23: [D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuke Hirama

Copyright © 2014 Insight Technology, Inc. All Rights Reserved.

行の生存期間を行内に持つ

Row header Payload (table columns)

Begin Ts End Ts StmtId IdxLinkCount

8 bytes 8 bytes 4 bytes 2 + 2 (padding)

bytes

8 bytes * (IdxLinkCount)

※Microsoft Build 2014より

• メモリ最適化テーブルの行フォーマット

Page 24: [D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuke Hirama

古い行へはポインタで

Copyright © 2014 Insight Technology, Inc. All Rights Reserved.

50, ∞ John Paris

Timestamps Name Chain ptrs City

Hash index

on Name

Transaction 100:

UPDATE City = ‘Prague’ where Name = ‘John’

No locks of any kind, no interference with transaction 99

100, ∞ John Prague

90, ∞ Susan Bogota

100

Transaction 99: Running compiled query

SELECT City WHERE Name = ‘John’

Simple hash lookup returns direct pointer to ‘John’ row

Background operation will unlink and deallocate the old ‘John’ row after transaction 99 completes.

※Microsoft Build 2014より

Page 25: [D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuke Hirama

Hekatonを使うためには

Copyright © 2014 Insight Technology, Inc. All Rights Reserved.

• PRIMARY KEY制約が必須

• FOREIGN KEY, CHECK, UNIQUE制約は使えない

• CHARとVARCHARのコードページは1252(Latin1)のみ

• スキーマ変更不可(インデックスの追加作成も不可!)

• トリガー不可

• インデックス内の全ての列はNOT NULL

• インデックス内の文字列型の照合順序はBIN2のみ

• 複数データベースにまたがるクエリ不可

• トランザクション内の分離レベルはSNAPSHOT, REPEATABLE

READ, SERIALIZABLEのみ、かつwith句でのテーブルヒントとして指定する必要あり

• ネイティブコンパイルストアドプロシージャでの制限

– カーソル不可

– サブクエリ不可

– ディスクベースのテーブルへのアクセス不可

– ビューへのアクセス不可 …まだまだあるよ!

Page 26: [D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuke Hirama

TPC-Cで勝負だ!

ベンチマークツールHammerDBを既存のアプリケーションに見立て、以下の通り修正

– メモリ最適化テーブルに変更

– 主キーを設定(元テーブルはUNIQUEインデックス)

– 全クエリにWITH(SNAPSHOT)ヒントを追加

– データの永続化を選択

以下は使わず(もし使えばパフォーマンス向上の余地あり)

– HASHインデックスは使わない

– ネイティブコンパイルストアドプロシージャは使わない

使ったら10倍以上の性能向上との情報もあるけど…

環境は以下の通り

– DBサイズは約10GB

– マシンはMemory: 768GB, SSD: 750GB

→ つまり、通常でも全データがバッファに載る環境

Copyright © 2014 Insight Technology, Inc. All Rights Reserved.

Page 27: [D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuke Hirama

DEMO

Copyright © 2014 Insight Technology, Inc. All Rights Reserved.

DEMO

Page 28: [D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuke Hirama

sys.dm_os_wait_statsで理由を確認

wait_type 10秒間での待機時間(ms)

WRITELOG 643289

WAIT_XTP_HOST_WAIT 44180

LAZYWRITER_SLEEP 20055

SLEEP_TASK 15141

SQLTRACE_INCREMENTAL_FLUSH_SLEEP 12001

XE_TIMER_EVENT 11439

HADR_FILESTREAM_IOMGR_IOCOMPLETION 10065

DIRTY_PAGE_POLL 10063

WAITFOR 10003

REQUEST_FOR_DEADLOCK_SEARCH 10001

LOGMGR_QUEUE 9780

WAIT_XTP_OFFLINE_CKPT_NEW_LOG 7273

BROKER_TO_FLUSH 5128

SOS_SCHEDULER_YIELD 1650

PREEMPTIVE_OS_WRITEFILE 233

PREEMPTIVE_OS_FILEOPS 18

PREEMPTIVE_OS_CREATEFILE 17

SOS_PHYS_PAGE_CACHE 2

PREEMPTIVE_OS_CLOSEHANDLE 2

LCK_M_IU 2

PREEMPTIVE_OS_DELETEFILE 1

LOGPOOL_FREEPOOLS 1

Copyright © 2014 Insight Technology, Inc. All Rights Reserved.

wait_type 10秒間での待機時間(ms)

CXPACKET 1078921

WRITELOG 432895

PAGELATCH_EX 214532

PAGELATCH_SH 152736

LCK_M_X 99154

LCK_M_S 96476

CXROWSET_SYNC 50585

LAZYWRITER_SLEEP 20024

SLEEP_TASK 15224

LATCH_EX 12703

DIRTY_PAGE_POLL 10063

HADR_FILESTREAM_IOMGR_IOCOMPLETION 10025

XE_TIMER_EVENT 10001

WAIT_XTP_OFFLINE_CKPT_NEW_LOG 10001

WAITFOR 10000

REQUEST_FOR_DEADLOCK_SEARCH 9998

LOGMGR_QUEUE 9815

SQLTRACE_INCREMENTAL_FLUSH_SLEEP 8008

BROKER_TO_FLUSH 5132

SOS_SCHEDULER_YIELD 2604

LCK_M_RIn_NL 1651

LATCH_SH 592

LCK_M_RS_S 400

LCK_M_RS_U 233

CMEMTHREAD 203

LCK_M_U 199

EXECSYNC 181

PAGEIOLATCH_SH 57

PREEMPTIVE_OS_WRITEFILE 39

PREEMPTIVE_OS_WRITEFILEGATHER 23

PREEMPTIVE_OS_FILEOPS 17

PREEMPTIVE_OS_GETDISKFREESPACE 10

LCK_M_IX 7

PREEMPTIVE_OS_FLUSHFILEBUFFERS 5

RESOURCE_SEMAPHORE_MUTEX 3

PAGELATCH_UP 1

通常のテーブル メモリ最適化テーブル

Page 29: [D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuke Hirama

Hekatonでもディスクアクセスするの?

Copyright © 2014 Insight Technology, Inc. All Rights Reserved.

Page 30: [D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuke Hirama

Hekatonは本物だ

Copyright © 2014 Insight Technology, Inc. All Rights Reserved.

• Hekatonは単にメモリ上にテーブルを載せただけのものではない。専用のトランザクション分離レベルを導入し、ロック・ラッチ待ちをなくすことで、たとえ全データがキャッシュに載るDB

であってもさらに速くなる。

• 既存の環境を持ってくるときは要注意。

– テーブル、プロシージャの修正がほぼ必須

– スナップショット分離への変更に伴うアプリケーションの見直しも必要

• データ永続化をするならストレージにも注意。

みんな、SQL Server 2014で幸せになろうぜ!

Page 31: [D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuke Hirama

•無断転載を禁ず

•この文書はあくまでも参考資料であり、掲載されている情報は予告なしに変更されることがあります。

•株式会社インサイトテクノロジーは本書の内容に関していかなる保証もしません。また、本書の内容に関連したいかなる損害についても責任を負いかねます。

•本書で使用している製品やサービス名の名称は、各社の商標または登録商標です。