Upload
masayuki-ozawa
View
456
Download
9
Embed Size (px)
Citation preview
SQL Server 2016 CTP 2 新機能
2015/7/6
はじめに
2015/7/6SQL Server 2016 CTP 2 新機能2
2015/7/6 時点の最新バージョンであるSQL Server 2016 CTP 2.1 の情報を元に作成しています
RTM 時には変更されている可能性がありますので時期に応じた、最新の情報を参照してください
SQL Server 2016 関連情報
2015/7/6SQL Server 2016 CTP 2 新機能3
ダウンロード
SQL Server 2016 Community Technology Preview 2.1
https://www.microsoft.com/en-us/evalcenter/evaluate-sql-server-2016
Download SQL Server Management Studio
https://msdn.microsoft.com/en-us/library/mt238290.aspx
技術情報
SQL Server 2016 Release Notes
https://msdn.microsoft.com/en-us/library/dn876712.aspx
SQL Server 2016
https://www.microsoft.com/en-us/server-cloud/products/sql-server-2016/default.aspx
SQL Server 2016 関連情報
2015/7/6SQL Server 2016 CTP 2 新機能4
What’s New
What‘s New in Database Engine https://msdn.microsoft.com/en-us/library/bb510411.aspx
What's New in Analysis Services https://msdn.microsoft.com/en-us/library/bb522628.aspx
What's New in Integration Services https://msdn.microsoft.com/en-us/library/bb522534.aspx
What's New in Reporting Services https://msdn.microsoft.com/en-us/library/ms170438.aspx
What's New in Master Data Services https://msdn.microsoft.com/en-us/library/ff929136.aspx
What‘s New (Replication) https://msdn.microsoft.com/en-us/library/bb500342.aspx
ALTER DATABASE Compatibility Level (Transact-SQL) https://msdn.microsoft.com/ja-jp/library/bb510680(v=sql.130).aspx
R 言語の対応については CTP3 で実装予定 Using R in SQL Server 2016 CTP2
https://social.technet.microsoft.com/Forums/sharepoint/ja-JP/65107366-d02d-491f-8e6f-739530b8e563/using-r-in-sql-server-2016-ctp2?forum=sqldatabaseengine
本スライドのカバー範囲
What‘s New in Database Engine
2015/7/6SQL Server 2016 CTP 2 新機能5
主要な変更点
Database Engine Feature Enhancements
Transact-SQL Enhancements
Security Enhancements
High Availability Enhancements
Tools Enhancements
.NET Framework 4.6
単体での SSMS の提供
Express で完全版の SSMS ではなく、SSMS のスタンドアロンインストーラーを提供
Download SQL Server Management Studio
https://msdn.microsoft.com/en-us/library/mt238290.aspx
Database Engine Feature Enhancements
2015/7/6SQL Server 2016 CTP 2 新機能6
Database Engine Feature Enhancements
2015/7/6SQL Server 2016 CTP 2 新機能7
Columnstore Indexes
In-Memory OLTP
Live Query Statistics
Query Store
Temporal Tables
Backup to Microsoft Azure
Managed Backup
Trace Flag 4199 クエリオプティマイザ関連のトレースフラグ / 互換性レベル 130 ではデフォルトで有効
https://support.microsoft.com/ja-jp/kb/974006
Multiple TempDB Database Files インストール時に CPU コア数に合わせて、最大で 8 データファイルを設定した状態でインストール
(/SQLTEMPDBFILECOUNT オプションの追加)
FOR JSON
Always Encrypted
PolyBase
Stretch Database
Stretch Database
2015/7/6SQL Server 2016 CTP 2 新機能8
ローカルデータベースのテーブルに追加されたデータを SQL Database に自動的に移動 SQL Database は v12 を使用 / デフォルトでは S3 の DB が作成される
ローカルデータベースのテーブルの検索時には、透過的に SQL Database のテーブルをリモートクエリで検索される 利用者はどこにデータがあるかを意識しないでよい
機能を有効にしたテーブルに対してはいくつかの制限がある(以下は一例) プライマリーキー / 一意制約が設定できない UPDATE / DELETE ができない CREATE INDEX / ALTER INDEX ができない
事前に設定しておくことはできる
FILESTREM / File Table / CDC / メモリ最適化テーブルには適用できない 利用できるデータ型にも制限がある
timestamp / sql_variant / XML / 位置データ型等は非対応
Stretch Database https://msdn.microsoft.com/en-us/library/dn935011.aspx
Temporal Tables
2015/7/6SQL Server 2016 CTP 2 新機能9
ANSI SQL:2011 規格であり、SQL Server 固有の機能ではない トランザクション時間 / データの有効期間を SysStartTime / SysEndTime とし
持つことで、自動的なデータアーカイブと変更履歴の追跡が可能 システムバージョン管理されたテーブル / 履歴テーブルの二つで構成され、
透過的に二つのテーブルを操作することができる システムバージョン管理されたテーブルには最新のデータが格納されている データを変更すると、変更前のデータが自動的に履歴テーブルに追加される
デフォルトでは履歴テーブルにページ圧縮が行われている
Truncate Table は実行することができない
CTP 2 の制限 In-Memory OLTP と組み合わせることはできない
Temporal Tables https://msdn.microsoft.com/en-us/library/dn935015.aspx
Query Store
2015/7/6SQL Server 2016 CTP 2 新機能10
コンパイル時と実行時の情報をクエリー ストアに格納することで、実行されたタイミングのクエリの情報を確認することができる Plan Store : 実行プラン / Runtime Stats : 実行時間等の情報
同一クエリで実行プランが途中で変更された場合、各実行プランごとにクエリの実行状態を取得することが可能 プランキャッシュは最新の実行プランだが、クエリー ストアは実行されたタイミング
のプランを確認できる
特定の実行プランを強制することができる 類似の機能にプラン ガイドがあるが、クエリー ストアの方がシンプルな操作で適用
することが可能(クエリー ストアに使用したいプランの情報が取得されている必要があるが)
Monitoring Performance By Using the Query Storehttps://msdn.microsoft.com/en-us/library/dn817826.aspx
Always Encrypted
2015/7/6SQL Server 2016 CTP 2 新機能11
常に暗号化した状態でデータを操作するための機能 クエリの実行端末に Column Master Key (CMK) を配置 SQL Server に CMK から生成された Column Encryption Key (CEK) を配置 暗号化する列は、DETERMINISTIC (検索項目として使用可) / RANDOMIZED (検索項目として
使用不可) の 2 種類を設定可能
クエリ実行時には通常のテキストで条件句を指定 実際に実行されるクエリは暗号化されたテキストで条件句が設定される
(指定したテキストが透過的に暗号化されてクエリが生成される)
プロファイラー等でクエリをキャプチャしても、条件句は暗号化された状態
クエリの実行端末の条件 .NET Framework 4.6 (4.6 で拡張された ADO.NET のライブラリを使用)
接続文字列に「Column Encryption Setting=enabled」を指定 暗号化された項目を検索条件とする場合は、SqlParameter オブジェクトを使用する
Always Encrypted (Database Engine)https://msdn.microsoft.com/en-us/library/mt163865.aspx
Managed Backup
2015/7/6SQL Server 2016 CTP 2 新機能12
SQL Server 2014 で追加された管理対象バックアップの機能拡張
カスタムスケジュールのバックアップ設定が可能
managed_backup.sp_backup_config_schedule
2014 では、自動スケジュールされたバックアップのみ
システムデータベースのバックアップをサポート
単純復旧モデルのデータベースのサポート
SQL Server Managed Backup to Microsoft Azure
https://msdn.microsoft.com/en-us/library/dn449496.aspx
Backup to Microsoft Azure
2015/7/6SQL Server 2016 CTP 2 新機能13
SQL Server 2012 SP1 CU2 で追加された、Azure ストレージにバックアップ取得機能の拡張
ブロック BLOB に対してバックアップを取得することが可能となった 以前のバージョンはページ BLOB に対してバックアップを取得
複数のファイルにストライプして取得できない
バックアップファイルの最大サイズが 1TB
ブロック BLOB に対して取得することで以下が可能 複数のファイルにストライプして取得できる (各ファイルの最大サイズは 200GB)
複数のファイルにストライプして取得することでバックアップ / リストア性能の向上
バックアップファイルの最大サイズが 12.8 TB
資格情報の指定方法が異なる ページ BLOB
ストレージアカウント / ストレージアカウントキー
ブロック BLOB ストレージアカウント / SAS トークン
Temporal Tableshttps://msdn.microsoft.com/en-us/library/dn935015.aspx
Columnstore Indexes
2015/7/6SQL Server 2016 CTP 2 新機能14
シングルスレッドでのバッチモード処理 2014 まではマルチスレッドの場合のみバッチモードで処理が行われていた
互換性レベル 130 が必要 (互換性レベル 120/ 130によって使用できるパフォーマンス拡張の範囲に差がある)https://msdn.microsoft.com/ja-jp/library/bb510680(v=sql.130).aspx
READ_COMMITTED_SNAPSHOT / ALLOW_SNAPSHOT_ISOLATION のサポート 列ストアインデックスでロック競合を抑えた読み取り処理が可能
CREATE TABLE 時に列ストアインデックスを設定可能 (インラインインデックス作成) 2014 まではテーブル作成 → 列ストアインデックスを追加
非クラスター化列ストアインデックスに対して更新が可能
Columnstore Indexes for Operational Analytics https://msdn.microsoft.com/en-us/library/dn817827.aspx
Btree + クラスター化列ストアインデックスの組み合わせが可能
一意制約 / 外部キー制約も設定可能
列ストアインデックスとメモリ最適化テーブルを組み合わせて使用可能
変更等のデータはメモリ最適化テーブルに格納し、バックグラウンドタスクで列ストアインデックスに移行
フィルター化された非クラスター化列ストアインデックスを作成可能
Columnstore Indexes Versioned Feature Summaryhttps://msdn.microsoft.com/en-us/library/dn934994.aspx
In-Memory OLTP 1/2
2015/7/6SQL Server 2016 CTP 2 新機能15
1DB の持続性のあるテーブルの合計サイズのサポートが 256 GB → 2TB に変更
コンテナー単位に 1 つのオフラインチェックポイントスレッドの生成 オフラインチェックポイントスレッドがネックになるスケールリミットの緩和
2 ソケット / 64 コア以上でも性能が発揮できる (SQL Server 2014 は 2 または 4 ソケットおよび 60 未満のコアのシステムを想定している)https://msdn.microsoft.com/ja-jp/library/dn170449(v=sql.120).aspx
ストレージ管理を FILESTERAM からの分離 2014 では、チェックポイントファイル (データファイル / デルタファイル) が FILESTREAMに基づいて
処理されていた
$HKv2 ディレクトリに永続化ファイルが作成される
メモリ最適化テーブルに対しての TDE のサポート
ALTER による変更のサポート メモリ最適化テーブル (オフラインオペレーションのため、対象テーブルに対してメモリが倍必要となる)
/ ネイティブコンパイルストアドプロシージャの定義変更が可能
Multiple Active Result Set (MARS) のサポート
ネイティブコンパイルストアドプロシージャ内でユーザー定義関数の呼び出しをサポート
In-Memory OLTP 2/2
2015/7/6SQL Server 2016 CTP 2 新機能16
照合順序の制限の緩和 https://msdn.microsoft.com/en-us/library/dn133182.aspx
非 Unicode 文字列に 1252 (Latin) 以外の照合順序を指定可能
インデックスキーに BIN2 以外の照合順序を指定可能
T-SQL のサポート範囲の増加 (ネイティブコンパイルストアドプロシージャでの OUTER JOIN / UNION サポート等) SQL Server 2014 での制限は以下
インメモリ OLTP でサポートされていない Transact-SQL の構造https://msdn.microsoft.com/ja-jp/library/dn246937(v=sql.120).aspx
メモリ最適化テーブルで並列クエリのサポート (互換性レベル 130) Memory optimized table queries can have parallel plans.
https://msdn.microsoft.com/en-us/library/dn934994.aspx
In-Memory OLTPhttps://msdn.microsoft.com/en-us/library/bb510411.aspx#InMemory
In-Memory OLTP (In-Memory Optimization)https://msdn.microsoft.com/en-us/library/dn133186.aspx
In-Memory OLTP – The faster is now simpler!http://www.sqlshack.com/in-memory-oltp-the-faster-is-now-simpler/
Live Query Statistics
2015/7/6SQL Server 2016 CTP 2 新機能17
実行中のクエリに対して、実行プランがどこまで完了したかを表示する機能 推定実行プラン : 実行前 / 実際の実行プラン : 実行後 とは違い実行中
クエリエディタと利用状況モニターから確認可能 SQL Server 2014 (SP1 で確認) / SQL Database v12 に対して使用可能
利用状況モニターでは、以下の条件を満たすことで他のセッションに対して使用可能 SET STATISTICS XML ON / SET STATISTICS PROFILE ON が実行されている
query_post_execution_showplan 拡張イベントを使用できる
列ストアインデックス / メモリ最適化テーブル / ネイティブコンパイルストアドプロシージャでは非サポート
Live Query Statisticshttps://msdn.microsoft.com/en-us/library/dn831878.aspx
FOR JSON
2015/7/6SQL Server 2016 CTP 2 新機能18
JSON 型が提供されるというわけではない nvarchar 等に文字列データ型に JSON のデータを格納
SQL の実行結果を JSON として出力できる FOR JSON
実行結果が大きい場合には複数行として結果が返される
以下の機能 (JSON 関数) は CTP 3 で提供予定 OPEN JSON
ISJSON
JOSN_VALUE
Format Query Results as JSON with FOR JSON (SQL Server)https://msdn.microsoft.com/en-us/library/dn921882.aspx
PolyBase
2015/7/6SQL Server 2016 CTP 2 新機能19
Microsoft Analytics Platform System (APS) の SQL Server Parallel Data Warehouse (PDW) の Polybase の機能を SQL Server で利用可能 https://www.microsoft.com/ja-jp/server-cloud/products/analytics-platform-system/Explore.aspx
CTP3 で大量データの効率的な処理のためスケールアウト対応が行われる予定
Hadoop / Azure BLOB ストレージに対して SQL によるデータ参照が可能 BLOB ストレージはテーブル非対応でストレージに対して格納されたファイルに対しての
クエリ実行
インストール時の注意点 JRE 7.51 以上をインストール CTP 2.0 / 2.1 時点の制約
照合順序は SQL_Latin1_General_CP1_CI_AS / Latin1_General_100_CI_AS_KS_WS を指定非サポートの照合順序ではサービスが起動しない
PolyBasehttps://msdn.microsoft.com/en-us/library/mt143171.aspx
Transact-SQL Enhancements
2015/7/6SQL Server 2016 CTP 2 新機能20
Transact-SQL Enhancements
2015/7/6SQL Server 2016 CTP 2 新機能21
インデックス項目の拡張 インデックスキーを 16 → 32 設定可能に
非クラスター化インデックスを 900 → 1,700 バイト設定可能
CREATE INDEX (Transact-SQL)https://msdn.microsoft.com/en-us/library/ms188783.aspx
パーティション単位で Truncate Table を実行可能 WITH (PARTITIONS (0))
TRUNCATE TABLE (Transact-SQL)https://msdn.microsoft.com/en-us/library/ms177570(v=sql.130).aspx
ALTER COLUMN のオンライン操作が可能 WITH (ONLINE=ON)
ALTER TABLE (Transact-SQL)https://msdn.microsoft.com/en-us/library/ms190273(v=sql.130).aspx
Security Enhancements
2015/7/6SQL Server 2016 CTP 2 新機能22
SQL Database v12 でプレビュー搭載されている機能のオンプレミス版
Row-Level Security 透過的にフィルターを設定することで、特定条件にマッチするデータのみを取得可能にする
セキュリティ述語関数を通してフィルターする
WHERE 句を指定できない INSERT についてはフィルターできないため、単純な設定では自分が見ることができないデータを追加できてしまう INSERT のブロックは制約で実施
Row-Level Securityhttps://msdn.microsoft.com/en-us/library/dn765131.aspx
Dynamic Data Masking 特定の列のデータを取得時に透過的にマスクすることでセキュリティ向上させる
格納されているデータはマスクされていない状態
互換性レベル 130 が必要
UNMASK の権限を持っているユーザーについてはマスクされていない状態でデータを取得可能
SQL Database v12 ではポータルから設定していたが、SQL Server 2016 では T-SQL で設定
Dynamic Data Maskinghttps://msdn.microsoft.com/en-us/library/mt130841.aspx
High Availability Enhancements
2015/7/6SQL Server 2016 CTP 2 新機能23
High Availability Enhancements
2015/7/6SQL Server 2016 CTP 2 新機能24
AlwaysOn 可用性グループの機能拡張 Standard Edition で AlwaysOn 可用性グループの利用
ロードバランシングされた読み取り専用レプリカ
自動フェールオーバーノードを 2 → 3 に設定可能
分散トランザクションのサポートhttps://msdn.microsoft.com/en-us/library/ms366279.aspx#dtcsupport データベース ミラーリングまたは AlwaysOn 可用性グループではサポートされない複数
データベースにまたがるトランザクション (SQL Server)https://msdn.microsoft.com/ja-jp/library/ms366279.aspx
データベース レベルの正常性検出 データベースがオフラインになった状態を検知しフェールオーバーが可能に
AlwaysOn Failover Cluster で Gropu Managed Service Accounts (gMSA) をサポートhttps://support.microsoft.com/kb/2998082/
Standard Edition で AlwaysOn 可用性グループ
2015/7/6SQL Server 2016 CTP 2 新機能25
2014 までは Enterprise Edition で利用可能
2016 からは Standard で基本的な可用性グループを 利用可能だが制限がある
2 ノードで構成 (Enterprise Edition は 8 ノードで構成可能)
可用性グループに含められるデータベースは 1 つのみ
セカンダリで読み取り / バックアップ取得は使用不可
データベーススナップショットを使用することで読み取り可能
リスナーを作成できない
単一のアクセスポイントを使用した透過的な接続ができない
データベースミラーリングと近い利用方法となる
ミラーリングと異なり非同期モードでも利用可能
ロードバランシングされた読み取り専用レプリカ
2015/7/6SQL Server 2016 CTP 2 新機能26
2014 まではルールに応じた読み取りセカンダリへの接続
READ_ONLY_ROUTING_LIST = ('Server1','Server2', 'Server3', 'Server4')
Server 1 に接続できない場合は Server2、2 に接続できない場合は 3
2016 ではロードバランシングされたセカンダリへの接続が可能
READ_ONLY_ROUTING_LIST = (('Server1','Server2'), 'Server3', 'Server4')
Server1 または、Server2 に接続、接続できない場合は Server3
Configure load-balancing across read-only replicas
https://msdn.microsoft.com/en-us/library/hh710054.aspx#loadbalancing