Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

Sql server2014復習とsqlserver2016の紹介

3.270 visualizaciones

Publicado el

[2015/5/28(木): 三木会] SQL Server/SQL Database の新機能のお話し
http://www.insight-tec.com/events-seminars/20150528_3moku.html

Publicado en: Tecnología
  • Sé el primero en comentar

Sql server2014復習とsqlserver2016の紹介

  1. 1. SQL Server / SQL Database 新機能のお話し 2015/05/28 三木会 SQLWorld お だ
  2. 2. 自己紹介 織田 信亮@shinsukeoda 大阪で開発者やってます http://odashinsuke.hatenablog.com SQLWorld http://sqlworld.org/ Micorsoft MVP for SQL Server 2012/10~2015/09
  3. 3. 注意事項 現時点(2015/05/23) でのお話しです 最新の情報は公式Webでご確認下さい
  4. 4. 注意事項 最近追加された機能を中心にしたスライドになってます 全体の話しは無しです(特に SQL Database)
  5. 5. 今日話すこと SQL Server 2014 の復習 SQL Database V12 の新機能のお話し SQL Server 2016 のご紹介
  6. 6. SQL Server 2014 の復習
  7. 7. とりあげる内容 インメモリ メモリ最適化テーブル 列ストアインデックス 可用性 Always On
  8. 8. メモリ最適化テーブル インメモリ OLTP 100倍速くしたい => Hekaton SQL Server があれば OK! メインメモリ最適化 T-SQL フルコンパイル ロックフリーの高並列
  9. 9. メモリ最適化テーブル(Memory Optimized Table) 全データをメモリに格納することが前提 256 GB が上限 データの永続化は選択可能 永続化しないという選択肢もある ロックフリー tempdb を使わないスナップショット分離レベル ロック/ラッチは基本無し! 同時更新はCPU命令を使った楽観的同時実行制御(先勝ち)
  10. 10. メモリ最適化テーブル(Memory Optimized Table) マルチバージョン 行はタイムスタンプで管理された複数バージョンを持つ 削除や更新されても古いデータは直ぐには削除されない インデックス ポイント参照用の非クラスター化ハッシュインデックス 範囲/ソート スキャン用の非クラスター化インデックス 最大8個まで
  11. 11. ハッシュインデックスと行データ
  12. 12. ファイル構成 永続化する場合に書き込みが発生する 永続化しない場合でもファイル/ファイルグループは必要 トランザクションログ 通常のテーブルと同じファイル ボトルネックになる場合は、「遅延した持続性」を使う事も メモリ最適化用ファイルグループ データファイル/デルタファイル ある範囲のタイムスタンプのデータが1対となって書き込まれている。 データファイル:追加/更新した新しいデータ デルタファイル:削除/更新された古いデータ データ行は、データファイルがもってるので参照情報のみ
  13. 13. ネイティブコンパイル ストアドプロシージャ 作成時にコンパイルされる 通常のストアドは初回実行時にコンパイル メモリ最適化テーブルにしかアクセス出来ない ATOMIC ブロックによるトランザクション制御 明示的な COMMIT/ROLLBACK は不要 ATOMIC ブロックはネスト出来ない 構文/演算子/関数等に制限がある outer join 出来ないとか ネイティブ コンパイル ストアド プロシージャでサポートされる構造 http://msdn.microsoft.com/ja-jp/library/dn452279(v=sql.120).aspx
  14. 14. 制限事項 DDL の変更は出来ない ちょっと列追加しよう/インデックス追加しようが出来ない 新しいテーブルを作成し、データを移し替える必要がある 行の最大サイズが決まっている(8060バイト) varchar(max), varbinary(max) 等の LOB は使えない トランザクション分離レベルの制限… etc Transact-SQL によるインメモリ OLTP のサポート http://msdn.microsoft.com/ja-jp/library/dn133180(v=sql.120).aspx SQL Server によるインメモリ OLTP のサポート http://msdn.microsoft.com/ja-jp/library/dn133189(v=sql.120).aspx
  15. 15. 列ストアインデックス クラスタ化列ストアインデックス が追加された 更新可能 非クラスタ化列ストアインデックスは更新不可※ テーブルに1つのインデックスのみ クラスタ化列ストアインデックスのみ インデックス = データ データサイズが少ない
  16. 16. 行ストア 通常のテーブルのデータ格納方式 行を基準にデータを格納 データの読み込みはページ単位(8K)
  17. 17. 列ストア SQL Server 2012 から追加された列を基準にデータを格納する データの読み込みはセグメント単位。セグメントは1列のデータ を大体100万件格納した単位。 列単位でデータを格納するが、同じ行のデータはRowGroup と いう単位でまとめられている。
  18. 18. クラスタ化列ストアインデックス 列ストアはデータの更新が出来ない! 行ストア (デルタストア:追加されたデータを格納) 削 除 済 マ ー ク 列ストア
  19. 19. クラスタ化列ストアインデックス データの追加は? 行ストア(デルタストア)を持てばOK データを削除は? 行ストア内のデータ:そのまま削除 列ストア内のデータ:削除済みとしてマーキング データの変更は? 行ストア内のデータ:そのまま変更 列ストア内のデータ:追加と削除
  20. 20. クラスタ化列ストアインデックス デルタストアは、100万行程度が格納されると書き込み を止めて、新しいデルタストアを作成 書き込みが止まったデルタストアは、タプルムーバーと 呼ばれるバックグラウンドジョブで列ストアに変換 一括読み込み(BULK INSERT) である程度の行数が追加 される場合は、デルタストアを経由せず直接列ストアに 格納される。(102,400行以上) クラスター化列ストア インデックスの使用 http://msdn.microsoft.com/ja-jp/library/dn589807(v=sql.120).aspx
  21. 21. クラスタ化列ストアインデックス インデックスの再構築 (REBUILD) オンラインでは出来ない デルタストアと列ストアのデータをマージし、全て列ストア に変換 列ストアのデフラグ(削除済マーク行は削除) インデックスの再構成 (REORGANIZE) 書き込みを止めたデルタストアを列ストアに変換
  22. 22. 2012 より強化された列ストアインデックス データ型の追加 decimal, datetimeoffset でフル桁OK! binary/varbinary (maxはNG) バッチモードの強化 OUTER JOIN とかが バッチモードで動く様になった 行モードとバッチモードがあって、バッチモードの方が CPU の負荷 が低い バッチモードは、パラレル必須!
  23. 23. Always On 2種類の Always On フェールオーバークラスタリング (FCI) フェールオーバー相当 可用性グループ (AG) ミラーリング相当 プライマリとセカンダリ レプリカ セカンダリを読取専用/バックアップ取得用 として利用 自動/手動 フェールオーバーによる プライマリの変更
  24. 24. FCI 同期コミット 拠点1 非同期コミット 拠点2 AlwaysOn AG
  25. 25. 可用性グループリスナー リスナーを経由することで、透過的に更新可能(プライマ リ)、読取専用(セカンダリ) に接続することが出来る リスナー経由でセカンダリに接続する場合は、指定した 優先順でルーティングされる。 負荷に応じてルーティング先が変わるわけでは無い
  26. 26. AlwaysOn の強化 AG(可用性グループ) のセカンダリレプリカ数が 4 -> 8 読取可能なセカンダリの強化 プライマリ/クラスタークォーラムが無くても読取出来る FCI で CSV(クラスターの共有ボリューム)を共有ディス クで使える DMV で取れる情報追加
  27. 27. SQL Server 2014 SP1 リリースしましたが… SSISDB を使用していると SP1適用で インスタンスが無効で 使用出来ない状態になる http://blogs.msdn.com/b/jpsql/archive/2015/04/23/sql-server- 2014-sp1.aspx 2015/5/15 に再リリース http://www.microsoft.com/ja-JP/download/details.aspx?id=46694
  28. 28. SQL Database V12 新機能のお話し
  29. 29. SQL Database って何? Microsoft Azure 上で提供されている クラウド上のRDB 利用者はデータベースの管理だけしたら良い テーブル/ユーザー/ストアド/ファンクション とか SQL Server ベースだが、ちょっと違うとこも… DB Engine Only!(SSRS/SSIS/SSAS 等は無し) 進んでる点/遅れてる点 両方ある
  30. 30. ざっと全体を… (Preview の物もあり) 包含データベース テーブルパーティショニング 2GBを超えるトランザクションのサポート BLOB を含むインデックスのオンラインサポート ALTER COLUMN の オンラインサポート TRUNCATE TABLE の パーティションサポート ALTER DATABASE のオプション追加 DBCC コマンドの追加
  31. 31. ざっと全体を… (Preview の物もあり) Dynamic Data Masking Row-Level Security Window関数(OVER句)のサポート .NET CLR の一部サポート Change Tracking XML インデックスのサポート ヒープテーブルのサポート アプリケーションロールのサポート
  32. 32. ざっと全体を… (Preview の物もあり) 列ストアインデックスのサポート 並列クエリーのサポート 透過的データの暗号化(TDE) EncryptByKey/DecryptByKey (セルレベル暗号化) Elastic Pool フルテキスト検索 メモリ最適化テーブル ※Private Preview 一般ユーザーは未だ試せません
  33. 33. ALTER COLUMN のオンラインサポート 一部の処理がオンラインでサポート https://msdn.microsoft.com/en-us/library/ms190273.aspx ポインタを差し替える感じ http://sqlperformance.com/2015/02/sql- performance/more-online-operations
  34. 34. Dynamic Data Masking 結果セットから、対象のテーブル + 列 or 特定のエイリ アスに対し、データのマスキングをする セキュリティ対応接続文字列でのみ有効 <servername>.database.secure.windows.net http://azure.microsoft.com/en-us/documentation/articles/sql- database-dynamic-data-masking-get-started/
  35. 35. Row-Level Security 実行プランの最後にユーザー定義関数でフィルタリング 例:テーブルに権限用のカラムを持ち、ユーザー定義関数内 で現在のユーザーと対象カラムでフィルタリングする感じ インデックスは効く ユーザー定義関数に渡すカラムも考慮すること https://msdn.microsoft.com/library/7221fa4e-ca4a-4d5c-9f93- 1b8a4af7b9e8.aspx
  36. 36. 列ストアインデックスのサポート 2つの列ストアインデックスをサポート NCCI(非クラスター化列ストアインデックス) CCI(クラスター化列ストアインデックス) 利用出来るサービス階層(エディション) に制限 Premium でのみ利用可
  37. 37. 透過的データの暗号化 サポート SQL Server では 2008 から データファイル/ログファイルの暗号化 別サーバーでのアタッチ/復元には、証明書&秘密鍵のバック アップも必要 開発者は意識する必要無し ページレベルで実行され、ディスクに書き込まれる前に暗号 化/メモリに読み込まれるときに暗号化解除される
  38. 38. Elastic Pool 利用する DTU/DBのサイズを指定したプール内で、複数 のデータベースを自動的にスケールアップ/ダウンする プール内のデータベースに対して、まとめて管理が出来 る Elastic Database Jobs 機能がある 現状 T-SQLのみ/スケジュール実行無し 価格体系が 通常の SQL Database と異なる、データ ベースの数が少ないと価格的には不利になることも。。
  39. 39. おまけ (Elastic Database Tools) Azure SQL Database Elastic Scale API の名前変更 クライアントライブラリ (.NET) シャーディングによって、スケールアウト/イン を実現 シャードの管理/分割/マージ/クエリ発行/マルチシャー ドクエリ… マルチシャードクエリの結果は、全シャードに同じクエリを 投げた結果が UNION ALL された感じで取得出来る
  40. 40. SQL Server 2016 のご紹介
  41. 41. The SQL Server Evolution より抜粋 http://channel9.msdn.com/Events/Ignite/2015/FND1551
  42. 42. 概要は datasheet で確認 http://www.microsoft.com/en-us/server-cloud/products/sql-server-2016/ から Download 出来ます
  43. 43. In-Memory OLTP サイズを 2TB までサポート 列ストアインデックスのサポート TDE のサポート ALTER のサポート スキーマの変更 add/alter/drop – column/constraint 等 並列クエリのサポート SQLの構文サポート強化 outer join/distinct…
  44. 44. Column Store Index 更新可能な NCCI CCI と同じような構造で更新可能な形になっている CCI + セカンダリインデックス(通常のインデックス) PK/FK もサポート Filtered NCCI 更新頻度高いデータは対象外、低いデータは対象に Batch モードの強化 対応構文増加、シングルスレッド可
  45. 45. QUERY STORE 実行プランを保持する機能 実行プランが変わっても、以前の実行プランを保持 再起動OK 現在と以前の実行プランを DMV から取れる 急に遅くなったんだけど…みたいな時の 対応がしやすい!
  46. 46. Native JSON JSON形式の 文字列 として返す FOR JSON 構文 FOR XML と似てる感じ https://msdn.microsoft.com/ja-jp/library/ms178107.aspx サブクエリ内だけでも使える SELECT 句内で、複数件返すサブクエリに対して FOR JSON 可能!
  47. 47. Always On Standard でも利用可能に!(制限あり) セカンダリの読取/バックアップ不可とか… 可用性グループリスナー がラウンドロビンで読取専用に 繋がる 可用性グループでの 分散トランザクションサポート ログ転送速度の向上
  48. 48. Temporal Database 履歴データを透過的に扱える 他DB でも同様のものあり (Oracle とか) こんな感じ テーブルに期間管理用の開始と終了の日付列を追加 履歴データ用のテーブル(メインテーブルと同構造)作成 ALTER TABLE で設定 [SYSTEM_VERSIONING] 最新のデータはメインテーブル/更新されたデータは履歴テーブル に退避 履歴テーブルは直接更新出来ない SELECT * FROM メインテーブル FOR SYSTEM_TIME AS OF 時 刻 で当時のデータを取得
  49. 49. Stretch Database 良く使うデータは手元に、あまり使わないデータはクラ ウドへ Azure SQL Database クラウドのデータは透過的にアクセス可能 クラウドにあるデータにアクセスした場合は、リモートアク セスになる
  50. 50. Always Encrypted データベース上のデータは暗号化されており、クライア ントライブラリ (ADO.NET)を通して複合化される 暗号化の方法は2種類 Randomized:同じ値を暗号化してもそれぞれ異なる結果に Deterministic:同じ値を暗号化したら同じ結果に 条件指定(WHERE) で使う列なら、Deteministic を使う必要あり クエリレベルでは生データを取れない Profiler 等でみても、暗号化された状態
  51. 51. 公式ドキュメント SQL Server 2014 オンラインブック https://msdn.microsoft.com/ja-jp/library/ms130214.aspx SQL Database V12 (英語/頻繁に更新) https://azure.microsoft.com/en-us/documentation/articles/sql-database-v12- whats-new/ Azure SQL データベース (en-us の方が最新) https://msdn.microsoft.com/ja-jp/library/ee336279.aspx SQL Server 2016 Books Online (英語/日本語は未だ) https://msdn.microsoft.com/en-us/library/ms130214(v=sql.130).aspx
  52. 52. Ignite 2015 セッション (参考にしたセッション) The SQL Server Evolution http://channel9.msdn.com/Events/Ignite/2015/FND1551 The SQL Server Evolution:Deep Dive http://channel9.msdn.com/Events/Ignite/2015/BRK2558 In-Memory Technologies Overview for Microsoft SQL Server and Microsoft Azure http://channel9.msdn.com/Events/Ignite/2015/BRK2563 Stretching On-Premises Databases to the Cloud http://channel9.msdn.com/Events/Ignite/2015/BRK2574
  53. 53. Ignite 2015 セッション(参考にしたセッション) In-Memory OLTP:The Road Ahead http://channel9.msdn.com/Events/Ignite/2015/BRK3576 Overview and Roadmap for Micorsoft SQL Server Security http://channel9.msdn.com/Events/Ignite/2015/BRK2570 ColumnStore Index:Microsoft SQL Server 2014 and Beyond http://channel9.msdn.com/Events/Ignite/2015/BRK4556
  54. 54. Blog Row-Level Security:Performance and common patterns http://blogs.msdn.com/b/sqlsecurity/archive/2015/04/24/row-level-security- performance-and-common-patterns.aspx More online operations available now – or soon (ONLINE ALTER COLUMN) http://sqlperformance.com/2015/02/sql-performance/more-online-operations

×