More Related Content
Similar to SQL Server 2014 データベースエンジン新機能
Similar to SQL Server 2014 データベースエンジン新機能 (20)
More from Masayuki Ozawa (13)
SQL Server 2014 データベースエンジン新機能
- 2. 自己紹介
フリーランスのエンジニアとして SQL Server を
中心に案件に従事
勉強会やブログで SQL Server の情報を発信
2
Twitter: @Masayuki_Ozawa
Facebook : https://www.facebook.com/masayuki.ozawa
勉強会:SQLTO (http://sqlto.net)
ブログ : SE の雑記 (http://engineermemo.wordpress.com)
SQLWorld★大阪#17
2013/09/14
- 3. はじめに
本資料は SQL Server 2014 CTP1 をベースに作成しています。
そのため、製品版では動作が変わる可能性があります。
あらかじめご了承ください。
3
SQLWorld★大阪#17
2013/09/14
- 4. 本日セッションの内容
SQL Server 2014 のデータベースエンジンの以下の新機能についての紹介
クラスター化列ストアインデックス
バッファプール拡張
リソースガバナーの機能拡張
詳細については以下を参照
4
What's New (Database Engine)
http://msdn.microsoft.com/en-us/library/bb510411(v=sql.120).aspx
SQLWorld★大阪#17
2013/09/14
- 7. 行ストア (Row Store)
行を基準としたデータストア
SQL Server の通常のデータストア方法
B-Tree (Balanced Tree) 構造
ID
姓
名
1
井口
拓海
男
2
平岡
頼子
女
3
小畑
美樹
女
4
小宮
喜一郎
男
5
前川
涼子
女
ページ
性別
ルート
ノード
ID
中間
ノード
リーフ
ノード
ID
ID
ID
姓
名
性別
ID
姓
名
性別
ID
姓
名
性別
ID
姓
名
性別
1 列分のデータがほしい場合でも行単位でデータを取得する必要がある。 (正確にはページ)
7
SQLWorld★大阪#17
2013/09/14
- 8. 列ストア (Column Store)
列を基準としたデータストア
SQL Server 2012 で追加された列ストアインデックス
Columnstore インデックス
ID
姓
名
性別
1
井口
拓海
男
2
平岡
頼子
女
3
小畑
美樹
女
4
小宮
喜一郎
男
5
前川
涼子
女
Segment
Segment
Segment
ID
1
2
3
4
5
姓
井口
平岡
小畑
小宮
前川
名
拓海
頼子
美樹
喜一郎
涼子
性別
男
女
女
男
女
ID
Rowgroup
Segment
姓
名
性別
内部構成
Dictionary
Segment
Rowgroup
1 列のデータがほしい場合には対象列のデータ (セグメント) のみを読み込む
8
SQLWorld★大阪#17
2013/09/14
- 9. SQL Server 2012 の列ストアインデックス
高い圧縮効率
xVelocity エンジン (旧 VertiPaq) を使用したデータの圧縮
列ストアインデックスはデータストア内のデータ型が同じであるため、効率よ
く圧縮をすることができる
読み取り専用の非クラスター化列ストアインデックスのみが設定可能
9
読み取りのみが可能であり更新 / 追加 / 削除は通常の T-SQL では行えない。
追加 / 削除に関してはパーティショニングのスイッチをすることで実施。
SQLWorld★大阪#17
2013/09/14
- 11. SQL Server 2014 の列ストアインデックス
更新可能な列ストアインデックス
(Updateable clustered columnstore indexes)
クラスター化列ストアインデックス (CCI) を使用することで更新が可能
SQL Server 2012 Parallel Data Warehouse ではすでに実装済みの機能
アーカイブデータ圧縮
列ストアインデックスに高圧縮のモード (COLUMNSTORE_ARCHIVE) を指定す
ることが可能
http://www.microsoft.com/ja-jp/sqlserver/2012/pdw/default.aspx
クラスター化 / 非クラスター化列ストアインデックスの両方に指定可能
圧縮効率は上がるが CPU 使用率も上がるので負荷とのトレードオフ
バッチモードの処理対象の追加
11
バッチモードで処理される JOIN 句が追加 等
SQLWorld★大阪#17
2013/09/14
- 13. 作成の方法
SSMS または T-SQL で作成可能
CREATE CLUSTERED COLUMNSTORE INDEX
[ClusteredColumnStoreIndex-CCITable]
ON [dbo].[CCITable]
WITH (DATA_COMPRESSION = COLUMNSTORE_ARCHIVE)
GO
13
SQLWorld★大阪#17
2013/09/14
- 14. 行ストアを使用した更新
更新系のデータは行ストアに格納をする
追加 (INSERT) / 一括挿入 (BULKINSERT)
行ストアに追加されたデータを格納
100 万行単位で格納しそれ以上になった場合はそれまでの行ストアを圧縮して、新規の行
ストアを追加
行ストアを CLOSED にしバックグラウンドジョブ (既定で 5 分間隔) で圧縮 (COMPRESSED)
削除 (DELETE)
列ストア内のデータの削除については削除用のビットマップを設定
行ストアのデータの削除についてはストアからデータを削除
削除と追加を組み合わせる
更新 (UPDATE)
削除用のビットマップを設定
行ストアにデータを追加
検索 (SELECT)
14
列ストアと行ストアのデータを結合して使用
SQLWorld★大阪#17
2013/09/14
- 21. バッファプール拡張
高速なディスクをキャッシュとして利用し階層化 (L2 キャッシュ)
キャッシュアウトが発生した場合に、高速なディスク (SSD) にデータを
キャッシュアウトさせ、再度読み込みが発生した場合はそこからデータを読
み込む
ディスクに書き込むオーバーヘッドがあるため、キャッシュに使用するディスクに
よっては全体のスループットへの影響が懸念される (個人的な感想)
Max Server Memory = 128 GB まで
バッファプール拡張の最大サイズは Max Server Memory の 32 倍まで
有効 / 無効化はオンラインでできるが、サイズを小さくしたい場合は、サービスの再
起動が必要となることがある
Buffer Pool Extension
http://msdn.microsoft.com/en-us/library/dn133176(v=sql.120).aspx
データベース
(mdf / ndf)
21
メモリ
(L1 キャッシュ)
SQLWorld★大阪#17
SSD
(L2 キャッシュ)
2013/09/14
- 23. 利用状況の取得方法
キャッシュされているデータがメモリ / 拡張領域のどちらに格納されている
かを DMV / 拡張イベント / パフォーマンスモニターから取得可能
DMV
sys.dm_os_buffer_descriptors
従来から存在していた DMV が拡張
sys.dm_os_buffer_pool_extension_configuration
buffer_pool_eviction_thresholds_recalculated
buffer_pool_extension_pages_evicted
buffer_pool_extension_pages_read
buffer_pool_extension_pages_written
SQLServer:Buffer Manager
拡張イベント
パフォーマンスモニター
23
Extension ~ 系のカウンターが追加
SQLWorld★大阪#17
2013/09/14
- 26. リソースガバナー
SQL Server 2008 で追加されたリソースを制御するための機能
リソース : CPU / メモリ
リソースプール : 使用するリソースの上限
MIN_CPU_PERCENT / MAX_CPU_PERCENT / MIN_MEMORY_PERCENT /
MAX_MEMORY_PERCENT
ワークロードグループ : リソースプールのリソースの利用の許可割合
分類子関数 : どのワークロードグループに割り当てるかを制御
リソースプール
ワークロードグループ
接続
分類子関数
ワークロードグループ
26
SQLWorld★大阪#17
2013/09/14
- 27. 機能拡張
SQL Server 2012
CAP_CPU_PERCENT
CPU の利用上限を厳密に設定することができるようになった
以前のバージョンの CPU 制限は負荷が低いときは制限を超えて利用できた
SQL Server 2014
MAX_IOPS_PER_VOLUME / MIN_IOPS_PER_VOLUME
27
ディスクボリューム単位に IOPS が設定できるようになった
ディスク負荷に余裕がある (低い) 場合でも上限値で制御がされる
ALTER RESOURCE POOL (Transact-SQL)
http://msdn.microsoft.com/ja-jp/library/bb934024(v=sql.120).aspx
SQLWorld★大阪#17
2013/09/14
- 29. I/O の制御状態の確認
SQLServer:Resource Pool Stats の項目が拡張されている
29
Disk Read Bytes/sec
Disk Read IO Throttled/sec
Disk Read IO/sec
Disk Write Bytes/sec
Disk Write IO Throttled/sec
Disk Write IO/sec
SQLWorld★大阪#17
2013/09/14
- 33. その他の機能
並列 SELECT INTO
SELECT INTO を並列スレッドで実行できるようになった (Parallel INSERT)
データベースでの基数の推定
データの基数の推定ロジックが先行して実装されていた SQL Database と同じになった
Windows Azure SQL データベースでの基数の推定
http://msdn.microsoft.com/ja-jp/library/dn369871.aspx
SQL 2014 New Cardinality Estimator
http://www.sqlstash.com/2013/06/28/sql-2014-cardinality-estimator/
AlwasyOn 可用性グループの機能拡張
無効化するには TF 2312 + TF 9481 を使用
最大で 9 台構成 (プライマリ 1 台 + セカンダリ 8 台で構成可能)
クラスタークォーラムが損失している状態でのセカンダリの利用
Windows Azure との相互利用
Windows Azure VM にバックアップしたデータベースを展開してインスタンスを作成
Windows Azure VM とオンプレミスで AlwaysOn 可用性グループを構築
33
Azure の VPN の機能と組み合わせて利用
SQLWorld★大阪#17
2013/09/14