SQL Server/SQL Database最新機能紹介
SQLWorld★大阪#30
2015/04/25 SQLWorld お だ
自己紹介
織田 信亮(おだ しんすけ)
大阪で開発者しています
SQLWorld 代表 (http://sqlworld.org)
http://odashinsuke.hatenablog.com/
Twitter:@shinsukeoda
注意事項
現時点(2015/04/19) でのお話しです
最新の情報は公式Webでご確認下さい
注意事項
最近追加された機能を中心にしたスライドになってます
全体の話しは無しです(特に SQL Database)
今日話すこと
SQL Server 2014 の話し
SQL Database V12 の話し
今日話すこと
SQL Server 2014 の話し
SQL Database V12 の話し
まだリリースされてない SQL Server の話し!
SQL Server 2014 の話し
メモリ最適化テーブル
インメモリ OLTP
100倍速くしたい => Hekaton
SQL Server があれば OK!
メインメモリ最適化
T-SQL フルコンパイル
ロックフリーの高並列
列ストアインデックス
クラスタ化列ストアインデックス が追加された
更新可能
非クラスタ化列ストアインデックスは更新不可※
テーブルに1つのインデックスのみ
クラスタ化列ストアインデックスのみ
インデックス = データ
データサイズが少ない
Azure との連携
データファイルを Azure Storage (Blob) に配置
FileStream は NG
バックアップ/復元
Azure Storage へのバックアップとStorage から直接 復元
2012 CU2 から可能。2005 – 2012 CU1 は以下で可能
Microsoft SQL Server Backup to Microsoft Azure Tool
http://www.microsoft.com/ja-JP/download/details.aspx?id=40740
AlwaysOn の強化
AG(可用性グループ) のセカンダリレプリカ数が 4 -> 8
読取可能なセカンダリの強化
プライマリ/クラスタークォーラムが無くても読取出来る
FCI で CSV(クラスターの共有ボリューム)を共有ディスクで使える
DMV で取れる情報追加
バッファプール拡張
Standard から使えるようになりました!
バッファプールに SSD とかの速いディスクを使おう
メモリが足りない時に、速いディスクでカバー
たくさんメモリを積んでるサーバーは対象外
128GB より大きいサーバーはだめ~
サイズは、Max Server Memory の32倍まで
128GB * 32 = 4TB が Max
他社製品にも同じようなのあるよ
Oracle Database Smart Flash Cache
バッファプール拡張
ディスクからデータを読むのは一般に遅い
一度読んだデータはメモリ(バッファプール)にキャッシュ(保持)しておく
メモリが足りなくなったら、あまり使われなかったデータはキャッシュアウトされる(メモリから消される)
そこで、SSD 等の早いディスクを第二のキャッシュとして利用する!
ディスクに読み書きするのでディスクの性能には注意
色々と…
基数推定機能の再設計
遅延持続性
オンライン操作のロック優先順位管理
増分統計
リソースガバナーの物理IOサポート
SQL Server 2014 SP1
リリースしましたが…
SSISDB を使用していると SP1適用で インスタンスが無効で使用出来ない状態になる
http://blogs.msdn.com/b/jpsql/archive/2015/04/23/sql-server-2014-sp1.aspx
触れなかったのでスルー
SP1 は暫くしたら再度公開される予定です
SQL Database V12 の話し
SQL Database って何?
Microsoft Azure 上で提供されている クラウド上のRDB
利用者はデータベースの管理だけしたら良い
テーブル/ユーザー/ストアド/ファンクション とか
SQL Server ベースだが、ちょっと違うとこも…
DB Engine Only!(SSRS/SSIS/SSAS 等は無し)
進んでる点/遅れてる点 両方ある
ざっと全体を…
包含データベース
テーブルパーティショニング
2GBを超えるトランザクションのサポート
BLOB を含むインデックスのオンラインサポート
ALTER COLUMN の オンラインサポート
TRUNCATE TABLE の パーティションサポート
ALTER DATABASE のオプション追加
DBCC コマンドの追加
ざっと全体を…
Dynamic Data Masking
Row-Level Security
Window関数(OVER句)のサポート
.NET CLR の一部サポート
Change Tracking
XML インデックスのサポート
ヒープテーブルのサポート
アプリケーションロールのサポート
ざっと全体を…
列ストアインデックスのサポート
並列クエリーのサポート
透過的データの暗号化(TDE) のサポート予定
包含データベース (Contained Databased)
LOGIN を master に作る必要無し
DB の移動が容易
DB 移動したけど、LOGIN 作ってなかった!とかが無くなる
SQL Server では、2012 からある
パーティショニング
テーブル パーティションが出来るようになった!
TRUNCATE TABLE で PARTITON をサポート
一部のパーティションだけ TRUNCATE
SQL Server では未実装!
https://msdn.microsoft.com/en-us/library/ms177570.aspx
ALTER COLUMN のオンラインサポート
一部の処理がオンラインでサポートhttps://msdn.microsoft.com/en-us/library/ms190273.aspx
ポインタを差し替える感じ
http://sqlperformance.com/2015/02/sql-performance/more-online-operations
SQL Server では未実装!
Dynamic Data Masking
結果セットから、対象のテーブル + 列 or 特定のエイリアスに対し、データのマスキングをする
セキュリティ対応接続文字列でのみ有効
監査で使う接続文字列
<servername>.database.secure.windows.net
http://azure.microsoft.com/en-us/documentation/articles/sql-database-dynamic-data-masking-get-started/
SQL Server では未実装!
Row-Level Security
実行プランの最後にユーザー定義関数でフィルタリング
例:テーブルに権限用のカラムを持ち、ユーザー定義関数内で現在のユーザーと対象カラムでフィルタリングする感じ
インデックスは効く
ユーザー定義関数に渡すカラムも考慮すること
https://msdn.microsoft.com/library/7221fa4e-ca4a-4d5c-9f93-1b8a4af7b9e8.aspx
SQL Server では未実装!
Window 関数(OVER句)のサポート
分析関数が使えるようになった
LEAD/LAG/FIRST_VALUE/LAST_VALUE…
OVER (ROWS/RANGE) のサポート
N行目までの集計とかが出来るようになった
select 日付, 金額,sum(金額) over (order by 日付 row between 1 preceding and current row
) as 前日との計from 日次売上
Change Tracking (変更の追跡)
SQL Server では 2008 から
テーブル内の行が変更されたことを保持
変更前のデータは保持しない
UPDATE の場合は、どの列が更新されたかも保持
データは保持しないので、履歴管理というよりは差分更新向け(別DBとの sync とか)
データを持たないので必要なデータサイズは少なめ
ヒープテーブルのサポート
クラスター化インデックスの無いテーブルを利用可能
以前はヒープテーブルではデータの更新が出来なかった
SELECT … INTO によるテーブルの作成兼データの追加も利用可能に!
select * into CopyTable from Table_1
列ストアインデックスのサポート
2つの列ストアインデックスをサポート
NCCI(非クラスター化列ストアインデックス)
CCI(クラスター化列ストアインデックス)
利用出来るサービス階層(エディション) に制限
Premium でのみ利用可
並列クエリー
MAXDOP の指定が可能に
利用出来るサービス階層/パフォーマンスレベルに制限
Premium (P2) 以上でのみ
透過的データの暗号化 サポート予定
Coming soon
SQL Server では 2008 から
データファイル/ログファイルの暗号化
別サーバーでのアタッチ/復元には、証明書&秘密鍵のバックアップも必要
開発者は意識する必要無し
ページレベルで実行され、ディスクに書き込まれる前に暗号化/メモリに読み込まれるときに暗号化解除される
おまけ
Azure SQL Database Elastic Scale
クライアントライブラリ (.NET)
シャーディングによって、スケールアウト/イン を実現
シャードの管理/分割/マージ/クエリ発行/マルチシャードクエリ…
マルチシャードクエリの結果は、全シャードに同じクエリを投げた結果が UNION ALL された感じで取得出来る
まだリリースされていないSQL Server の話し!
SQL Server vNext
PASS Summit 2014 で機能が紹介された
https://www.youtube.com/watch?v=7Pum0vfYtSk&list=PLoGAcXKPcRvanix7u9eqg_qt1tp849rX3&index=2
メモリ最適化テーブル での NCCI
非クラスター化列ストアインデックスをメモリ最適化テーブルで利用可能に
STRETCH TABLE
QUERY STORE
STRETCH TABLE
https://www.youtube.com/watch?v=7Pum0vfYtSk&list=PLoGAcXKPcRvanix7u9eqg_qt1tp849rX3&index=2
http://ryuchan.hatenablog.com/entry/2015/01/19/014521
QUERY STORE
実行プランを保持する機能
実行プランが変わっても、以前の実行プランを保持
再起動OK
現在と以前の実行プランを DMV から取れる
http://www.brentozar.com/archive/2014/11/sql-server-query-store/
http://slavasql.blogspot.jp/2014/11/newest-sql-server-feature-query-store.html
http://slavasql.blogspot.jp/2014/11/newest-sql-server-feature-query-store.html
まとめ
Ignite で SQL Server vNext のセッションがある!
Microsoft SharePoint Server 2016 with SQL Server vNext: Better Together
http://ignite.microsoft.com/session/sessionmoreinfo/?topicid=fd37928b-3795-e411-b87f-00155d5066d7#fbid=JB4HmMrttaO
SQL Server 2016 の CTP が近々出るらしい!
5/26-27 開催の de:code で 2016 のセッションがある
2016 はよ!