linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。

30
Linux 対応だけじゃない!! SQL Server 2017 こんな機能が追加されています。 Masayuki Ozawa (Microsoft MVP for Data Platform)

Upload: masayuki-ozawa

Post on 21-Jan-2018

1.696 views

Category:

Data & Analytics


0 download

TRANSCRIPT

Page 1: Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。

Linux 対応だけじゃない!!SQL Server 2017 こんな機能が追加されています。

Masayuki Ozawa(Microsoft MVP for Data Platform)

Page 2: Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。

2017/9/7db tech showcase 2017 Tokyo2

SQL Server 2017 といえば

Page 3: Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。

SQL Server がクロスプラットフォームで動作

db tech showcase 2017 Tokyo3

Windows だけでなく、Linux / Docker コンテナーでも実行可能 SQL Server を、開発言語、オンプレミス / クラウド、オペレーティングシステムに

依存することなく利用することが可能に

プラットフォーム間のデータベースには互換性があり、アタッチ / デタッチ、バックアップ / リストアで、各プラットフォームにデータベースを移動可能

LinuxRed Hat Enterprise Linux 7.3

SUSE Enterprise Linux Server v12 SP2

Ubuntu 16.04 LTS

DockerWindows Containers

Linux Containers

WindowsWindows Server 2012

Windows Server 2012 R2

Windows Server 2016

https://docs.microsoft.com/en-us/sql/sql-server/install/hardware-and-software-requirements-for-installing-sql-serverhttps://docs.microsoft.com/ja-jp/sql/linux/sql-server-linux-setup

2017/9/7

Page 4: Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。

Machine Learning Services in SQL Server

4

SQL Server 2016 で追加された、SQL Server R サービスの新しい名称

SQL Server 2016 で R 言語に対応し、SQL Server 2017 では R だけでなく、SQL Server 内でPython を利用することも可能に

R または、Python で記述されたスクリプトをクエリから実行することが可能

GPU に対応した Python のパッケージをスクリプト内で利用することで、GPU を使用したデータ分析を実施することも可能

Transact-SQL をインタフェースとして、データ分析を行うことができる。

SQL Server 内で処理を完結することができ、データを外部に出す必要がない。

sp_execute_external_script からR / Python スクリプトを呼び出し

SQL Server のデータベースのデータをR / Python を使用してSQL Server 内で直接分析することが可能

※Standard Edition は基本的な ML 機能のみサポート並列処理が可能な高度な ML 機能と、スタンドアロンの ML サーバーについては、Enterprise Edition のみ利用可能

Microsoft Machine Learning Serviceshttps://docs.microsoft.com/ja-jp/sql/advanced-analytics/r/r-services

2017/9/7db tech showcase 2017 Tokyo

Page 5: Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。

2017/9/7db tech showcase 2017 Tokyo5

これ以外にも様々な機能が追加されています。

Page 6: Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。

本イベントの SQL Server 関連のセッション

日付 時間 セッションタイトル

9/5 15:30-16:20 C16 Azure SQL Database - Are you ready for the cloud?

9/6 9:30-10:20 D21ついに Red Hat Enterprise Linuxで SQL Serverが使える!

~Dr. KによるSQL Server 2017 Linux版性能検証速報~

9/6 12:30-13:20 B23 Intelligent Data Platform の全容 – 何がIntelligentなの? -

9/6 15:30-16:20 E26 窓は開かれた! SQL Server on Linux で拡がる可能性

9/6 16:30-17:20 E27 SQL Server 2017で実現されるAI(ディープラーニング)のシステムモデルのご紹介

9/7 10:30-11:20 C32 Patterns for building hybrid scenarios with SQL Server and Azure

9/7 16:30-17:20 E37 AzureでOSS DB/データ処理基盤のPaaSサービスを使ってみよう

2017/9/7db tech showcase 2017 Tokyo6

Page 7: Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。

Community Technical Preview (CTP)

7

Community Technical Preview (CTP)

• クラスターレス可用性グループ

• 可用性グループのクロスプラットフォームサポート

https://docs.microsoft.com/en-us/sql/sql-server/what-s-new-in-sql-server-2017

2017/9/7db tech showcase 2017 Tokyo

Page 8: Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。

Release Candidate (RC : リリース候補版)

8

Release Candidate (リリース候補版) First release candidate of SQL Server 2017 now available

https://blogs.technet.microsoft.com/dataplatforminsider/2017/07/17/first-release-candidate-of-sql-server-2017-now-available/

https://docs.microsoft.com/en-us/sql/sql-server/what-s-new-in-sql-server-2017

2017/9/7db tech showcase 2017 Tokyo

Page 9: Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。

CTP 1.0 CTP 1.1 CTP 1.2 CTP 1.3 CTP 2.0

データベースエンジン• 互換性レベル 140 の追加• 増分統計の更新の閾値の計算方法

の改善 (互換性レベル 140)• sys.dm_exec_query_statistics_x

ml による、実行中のクエリの実行プランの取得

• In-Memory OLTP でサポートされるクエリの拡充

• クラスター化列ストアインデックスの LOB 列への対応

• STRING_AGG 関数の追加• DATABASE SCOPED

CREDENTIAL に対してのセキュリティ保護

• R サービスのパッケージ管理方法の強化

SSIS• スケールアウト構成のサポート

データベースエンジン• メモリ最適化テーブルとネイティ

ブコンパイル関数の機能強化• 文字列関数 (CONCAT_WS /

TRANSLATE / TRIM) の追加• 新しい日本語照合順序 (140 /

VSS) のサポート• BULK INSERT/OPENROWSET の

Azure BLOB ストレージサポート

SSAS• 表形式モデルの互換性レベル 1400

の追加• 表形式モデルの互換性レベル

1400 使用時に、Power BI Desktop / Excel 2016 と同等のデータ取得のユーザーエクスペリエンスの提供

• 不規則な階層の表現に対応• DAX の機能強化• テーブルレベルのセキュリティに

対応

データベースエンジン• Database Tuning Advisor (DTA)

の機能向上• 列ストアインデックスの

インデックスのアドバイス• クエリストアを使用した

インデックスのアドバイス

データベースエンジン• 非クラスター化列ストアインデッ

クスのオンライン作成 / 再構築のサポート

• テンポラルテーブルの保持期間ポリシーのサポート

• 間接チェックポイントの性能改善• sys.dm_db_stats_histogram に

よる、統計情報のヒストグラムの取得

SSAS• 表形式モデルのデータリフレッ

シュ処理を最適化するためのエンコードヒントの追加

データベースエンジン• IDENTITY_CACHE オプション• CLR の厳格なセキュリティ• クエリストアによる待機情報の

統計の取得• sys.dm_db_file_space_usage に

変更されたエクステント追跡用の列の追加

• SELECT INTO でのデータ追加時にファイルグループを指定可能

• sys.dm_tran_version_store_space_usage / sys.dm_db_log_info の追加

• sys.dm_os_sysinfo の CPU 情報の追加

SSAS• 表形式モデルのメタデータを

オブジェクトレベルで保護• 表形式モデルを使用した場合、

Power BI フィールドリストから階層と列を再利用可能

• 日付フィールドを使用した日付リレーションの簡単に作成可能

• インストールの初期設定が「表形式モデル」に変更

• 互換性レベル 1400 の表形式モデルのダイレクトクエリデータソースの M クエリのサポート

• SSDT の DAX エディタのサポート

CTP / RC の基本機能の強化 (1/2)

9 db tech showcase 2017 Tokyo 2017/9/7

Page 10: Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。

CTP / RC の基本機能の強化 (2/2)

10

CTP 2.1 RC1 RC2

データベースエンジン• sys.dm_db_log_stats の追加• SQL Server on Docker で

使用できる環境変数の追加

• mssql-scripter ツールの追加• DBFS ツールの追加

データベースエンジン• CLR の厳格なセキュリティに

ホワイトリスト機能の追加

SSAS• 互換性モデル 1200 / 1400 の

表形式モデルの DMV の改善

• Bug Fix とパフォーマンス改善

What's New in Integration Services in SQL Server 2017https://docs.microsoft.com/ja-jp/sql/integration-services/what-s-new-in-integration-services-in-sql-server-2017

What's new in SQL Server Analysis Services 2017https://docs.microsoft.com/ja-jp/sql/analysis-services/what-s-new-in-sql-server-analysis-services-2017

What's New in Machine Learning Services in SQL Serverhttps://docs.microsoft.com/ja-jp/sql/advanced-analytics/what-s-new-in-sql-server-machine-learning-services

What's New in SQL Server 2017 (Database Engine)https://docs.microsoft.com/ja-jp/sql/database-engine/configure-windows/what-s-new-in-sql-server-2017-database-engine

What's new in SQL Server Reporting Services (SSRS)https://docs.microsoft.com/en-us/sql/reporting-services/what-s-new-in-sql-server-reporting-services-ssrs

Editions and supported features of SQL Server 2017https://docs.microsoft.com/en-us/sql/sql-server/editions-and-components-of-sql-server-2017

2017/9/7db tech showcase 2017 Tokyo

Page 11: Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。

エディションと機能

2017/9/7db tech showcase 2017 Tokyo11

エディションと機能については次の情報を参照

SQL Server 2017 の各エディションとサポートされている機能https://docs.microsoft.com/ja-jp/sql/sql-server/editions-and-components-of-sql-server-2017

2017/8 時点の情報では次のエディションが提供される予定

Enterprise

Standard

Web

Developer

Express Edition

Page 12: Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。

文字列関数

2017/9/7db tech showcase 2017 Tokyo12

Page 13: Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。

追加された文字列関数

13

STRING_AGG 特定の区切り文字で、式として与えた文字を連結

https://msdn.microsoft.com/ja-jp/library/mt790580.aspx

SELECT STRING_AGG(C1, ',') FROM (VALUES(1,2),(2,1),(3,1)) AS T1(C1, C2)→ 結果 : 1,2,3

CONCAT_WS 特定の区切り文字で、引数に指定した文字列を連結

https://msdn.microsoft.com/ja-jp/library/mt775030.aspxSELECT CONCAT_WS( ' - ', 'A', 'B', 'C')→ 結果 : A - B - C

TRANSLATE 指定した文字列で置換を実施

https://msdn.microsoft.com/ja-jp/library/mt775084.aspxSELECT TRANSLATE('2*[3+4]/{7-2}', '[]{}', '()()')→ 結果 : 2*(3+4)/(7-2)

TRIM 先頭 / 末尾から空白文字を削除

https://msdn.microsoft.com/ja-jp/library/mt775029.aspxSELECT TRIM( ' test ')→ 結果 : test

2017/9/7db tech showcase 2017 Tokyo

Page 14: Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。

クラウド連携(Azure ストレージとの連携強化)

2017/9/7db tech showcase 2017 Tokyo14

Page 15: Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。

Azure BLOB ストレージとの連携

15

BULK INSERT / OPENROWSET 使用するデータとして、Azure BLOB ストレージにあるファイルを使用することができる BLOB ストレージ上にあるファイルを、ファイルの直接インポートや、SQL によるファイル

へのアクセスを行うことができる OPENROWSET + JSON 関数を組み合わせることで、BLOB ストレージに保存されている JSON 形式の

ファイルの内容をテーブルとして利用することも可能

Polybase と異なり、単一ファイルを対象として処理を実行

Azure ストレージの接続情報

Examples of Bulk Access to Data in Azure Blob Storagehttps://docs.microsoft.com/en-us/sql/relational-databases/import-export/examples-of-bulk-access-to-data-in-azure-blob-storage

2017/9/7db tech showcase 2017 Tokyo

Page 16: Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。

グラフデータベース(グラフテーブル)

2017/9/7db tech showcase 2017 Tokyo16

Page 17: Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。

グラフデータベース

17

データとデータをリンクさせることで、データ間の関連性を表現することが可能

多対多のリレーショナルシップを表現することができる

不正の検出 (正しい経路 (パターン) によるアクセス) / ソーシャルグラフ (人の結びつき) 等のデータ表すことができ、データの相互関係を分析することができる

ノード (頂点) とエッジ (関係) テーブルを作成し、ノード間のレコードのつながりをエッジで表現

SQL エンジンに統合されており、SQL によりテーブルの操作としてデータを取り扱うことができる

Graph processing with SQL Server 2017https://docs.microsoft.com/en-us/sql/relational-databases/graphs/sql-graph-overview

2017/9/7db tech showcase 2017 Tokyo

Page 18: Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。

クエリの最適化

2017/9/7db tech showcase 2017 Tokyo18

Page 19: Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。

クエリ実行の動的な最適化

19

Adaptive Query Processing 実行タイミングの処理対象に適応した形で、クエリの実行プランを自動的に最適化

(互換性レベル 140 の設定が必要)

2017/9/7db tech showcase 2017 Tokyo

Microsoft SQL データベースでのアダプティブ クエリの処理https://docs.microsoft.com/ja-jp/sql/relational-databases/performance/adaptive-query-processing

Page 20: Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。

DMV から自動チューニングの推奨状況を取得

自動チューニング

20

SQL Server 2016 クエリストアの情報から、実行プランの変化により実行効率が低下したクエリを確認し、過去に実行された

効率の良い実行プランを使用するプランの強制をデータベース管理者が手動で実施

SQL Server 2017 自動チューニングを有効にすることで、実行プランの変化による実行効率の低下を自動的に検知し、過去に実行

された実行プランから効率の良い実行プランを使用するように「自動的な実行プランの強制」を設定可能

ALTER DATABASE current SET AUTOMATIC_TUNING ( FORCE_LAST_GOOD_PLAN = ON );

過去に実行された効率の良い実行プランを強制Automatic tuninghttps://docs.microsoft.com/ja-jp/sql/relational-databases/automatic-tuning/automatic-tuningsys.dm_db_tuning_recommendations (Transact-SQL)https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-db-tuning-recommendations-transact-sql

2017/9/7db tech showcase 2017 Tokyo

Page 21: Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。

インデックスメンテナンスの新しい手法

2017/9/7db tech showcase 2017 Tokyo21

Page 22: Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。

従来までのインデックスのメンテナンス

22

従来のインデックスのメンテナンス (断片化の解消) は、以下の動作となる

SQL Server 2016 までは、「インデックスの再構築」を途中でキャンセルした場合、それまで実施された最適化処理は無効となり、次に最適化処理を実施した場合は、最初から処理を実施

再構成 (REORGANIZE) 再構築 (REBUILD)

処理対象 インデックスのリーフノード インデックス全体

処理中のアクセス インデックスにアクセス可能(オンライン操作によるメンテナンス)

インデックスにアクセス不可(オフライン操作によるメンテナンス)Enterprise Edition の場合はオンラインでメンテナンス可能

処理の途中でキャンセル

キャンセルまでに実施された最適化の処理は有効 キャンセルまでに実施された最適化の処理は無効 (ロールバック)最後まで完了しないと最適化されない

処理時間 断片化が進んでいると処理時間に影響がある 断片化が進んでいて処理時間に影響は少ない

2017/9/7db tech showcase 2017 Tokyo

Page 23: Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。

再開可能なインデックスのオンライン再構築

23

SQL Server 2017 は、インデックスのオンライン再構築の実施時に中断することが可能

インデックスの再構築が特定の時間帯に完了しない場合は、一度中断し、次回のメンテナンス時間に再構築を、前回の続きから再開するという、運用を実施することが可能

ALTER INDEX <インデックス名> ON <テーブル名> REBUILD WITH(ONLINE = ON, RESUMABLE = ON)

再構築しているインデックスに対して、RESUME / PAUSE / ABORT の操作が可能

インデックスのメンテナンス状況については、「sys.index_resumable_operations」で取得

Resumable Index Rebuild Considerationshttps://docs.microsoft.com/ja-jp/sql/relational-databases/indexes/guidelines-for-online-index-operations#resumable-index-rebuild-considerations

2017/9/7db tech showcase 2017 Tokyo

Page 24: Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。

AlwaysOn 可用性グループの新機能

2017/9/7db tech showcase 2017 Tokyo24

Page 25: Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。

参考) AlwaysOn 可用性グループ

25

SQL Server 2012 から追加された、SQL Server 間のデータ同期、自動フェールオーバーにより、DB の可用性を高めるための機能 ローカルのデータベース間でデータ同期をし、共有ディスクは不要 可用性グループリスナーと呼ばれるアクセスポイントによる透過的にプライマリレプリカに接続

セカンダリを読み取りレプリカとして使用でき、リスナーを介した読み取りレプリカへの接続も可能

プライマリレプリカ

ログキャッシュ

ログファイル

コミット

ログフラッシュ

ログキャプチャ

セカンダリレプリカ

データファイル

バッファキャッシュ

チェックポイント

ログ適用

ログキャッシュ

ログファイル データファイル

Redo キャッシュ

Redo スレッド

コミット応答

ログプール

Redo

ログ再実行

リスナーに接続することで透過的にプライマリに接続

可用性グループ

2017/9/7db tech showcase 2017 Tokyo

Page 26: Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。

AlwaysOn 可用性グループ

2017/9/7db tech showcase 2017 Tokyo26

Version 機能

2012 • Enterprise Edition でのみ利用可能• 1 台のプライマリレプリカと 4 台のセカンダリレプリカ• 3 台で同期レプリカを設定可能• 同期レプリカの中で自動フェールオーバーを 2 台で設定可能• 接続順を指定し、レプリカに読み取りのアクセス• 複数データベースにまたがるトランザクションはサポートされない

2014 • 8 台のセカンダリレプリカ• プライマリレプリカから切断 / クォーラムが存在しない状態でもセカンダリレプリカにアクセスが可能

2016

Page 27: Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。

AlwaysOn 可用性グループ

2017/9/7db tech showcase 2017 Tokyo27

Version 機能

2017 • 同一インスタンスの分散トランザクションのサポート• 可用性グループの再作成が不要な分散トランザクションサポートの設定変更• クロスプラットフォーム (Windows / Linux) の可用性グループのサポート• WSFC 以外のクラスタータイプのサポート (EXTERNAL / NONE)• 同期コミット利用時に必要となる最小のセカンダリレプリカ数が設定可能

CREATE AVAILABILITY GROUP (Transact-SQL)https://docs.microsoft.com/en-us/sql/t-sql/statements/create-availability-group-transact-sql分散トランザクション対応の可用性グループを構成するhttps://docs.microsoft.com/ja-jp/sql/database-engine/availability-groups/windows/configure-availability-group-for-distributed-transactionsトランザクション - 可用性グループとデータベース ミラーリングhttps://docs.Microsoft.com/ja-jp/sql/database-engine/availability-groups/windows/transactions-always-on-availability-and-database-mirroringSQL Server on Linux の読み取りのスケール アウト可用性グループを構成します。https://docs.microsoft.com/ja-jp/sql/linux/sql-server-linux-availability-group-configure-rs可用性グループの構成の高可用性とデータの保護https://docs.microsoft.com/ja-jp/sql/linux/sql-server-linux-availability-group-ha

Page 28: Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。

3 種類のクラスタータイプ

2017/9/7db tech showcase 2017 Tokyo28

SQL Server 2017 では、次の 3 種類を利用可能 CLUSTER_TYPE = { WSFC | EXTERNAL | NONE }

CREATE AVAILABILITY GROUP (Transact-SQL)https://docs.microsoft.com/en-us/sql/t-sql/statements/create-availability-group-transact-sql

WSFC EXTERNAL NONE

• 従来から使用されていたタイプ• Windows Server Failover

Cluster (WSFC) をクラスターマネージャーとして利用

• Windows でのみ使用可能

• Windows Server FailoverCluster (WSFC) 以外を、クラスターマネージャー (Linux のPacemaker) として利用

• Linux で可用性グループを使用する場合、EXTERNAL を設定

• クラスタマネージャーで管理を行わない場合に指定

• クラスターレスの可用性グループを使用する場合 NONE を設定

• 同一の可用性グループに異なるOS (Windows / Linux) を含める場合にも利用

Page 29: Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。

SQL Server 2017 の可用性グループ

29

クラスター (WSFC / Pacemaker) を構築せずに、可用性グループを利用可能

Windows Server 2016 で、ワークグループクラスター (クラスターのための AD が不要) を使用することができたが、クラスター (WSFC) を構築する必要があった

SQL Server 2017 では「クラスターを構築せず」可用性グループを利用可能

クラスターレスの可用性グループは、監視用のリソースを作成しない構成 のため、自動フェールオーバーによる障害発生時の自動的な切り替えを行うことができない

読み取りのサーバーのスケールアウトや、データの複製をシンプルな構成/設定で構築が可能

必要となる最小のレプリカのコミット数の設定 (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT) により、稼働しているサーバー数の調整が可能

同期コミット使用時に、最新の情報となっている必要のあるセカンダリレプリカの台数を調整することで、起動しているサーバーの台数を設定

REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT = 1 の場合プライマリレプリカの他に 1 台の同期コミットの

Configure read-scale availability group for SQL Server on Linuxhttps://docs.microsoft.com/en-us/sql/linux/sql-server-linux-availability-group-configure-rs

2017/9/7db tech showcase 2017 Tokyo

Page 30: Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。

クロスプラットフォームの可用性グループの利用例

30

可用性グループを使用し、異なる OS 間でデータを同期 分散型可用性グループ / クラスターレス可用性グループを使用したデータ同期 以下のようなユースケースで利用することができる

移行やテストのために Windows から Linux にデータを移行

ダウンタイムを最小限に抑えた、クロスプラットフォームの移行

Setting up SQL Server High-Availability between Windows and Linux with SQL Server 2017https://channel9.msdn.com/Shows/Data-Exposed/Setting-up-SQL-Server-High-Availability-between-Windows-and-Linux-with-SQL-Server-2017

2017/9/7db tech showcase 2017 Tokyo