SQL Server のことなら SQL Quality SQL Server パフォーマンス チューニング、コンサルティング、アドバイス、相談、定期診断、トレーニング

ホーム > 技術情報 > SQL Server 実践「SQL Server 2016 への移行とアップグレードの実践」

Microsoft SQL Server 2016 実践シリーズ (HTML 版)
「SQL Server 2016 への移行とアップグレードの実践」

松本美穂と松本崇博が執筆した SQL Server 2016 実践シリーズの「SQL Server 2016 への移行とアップグレードの実践」の HTML 版です。 日本マイクロソフトさんの Web サイトで Word または PDF 形式でダウンロードできますが、今回、HTML 版として公開する許可をいただきましたので、ここに掲載いたします。なお、記載している内容は、2016年 12月時点での情報になります。[2018年12月29日]

目次へ | 前のページへ | 次のページへ

1.3 SQL Server 2016 による早期導入事例(性能向上など)

既に SQL Server 2016 を早期導入/検証を行っている企業は、次のようにたくさんあります。

00018

◆ bwin 社では 120万バッチ リクエスト数/秒を達成

bwin 社(欧州サッカーでの大手スポンサーとしてもお馴染みの、オンライン ゲームなどを提供している会社)では、SQL Server 2016 のインメモリ OLTP 機能を採用/移行することで、1秒あたり 120万件もの Batch Request処理をできるようになりました。同社は、1日あたりのベット数が 1,900万、1日あたり 25万以上ものアクティブ ユーザーが訪れる人気サイトです。

bwin 社では、従来 Memcached や Cassandra、Microsoft AppFabric などを利用して構築していた独自のキャッシュ システムがありましたが、これを SQL Server 2016 のインメモリ OLTP を用いた ASP.NET SessionState ベースのものに変更しました。これによって、従来のシステムでは 19ノード15万 Batch Request/秒が限界だったところを、SQL Server 2016 では、わずか 1台120万 Batch Request/秒を実現できるようになりました。

こうした bwin 社でのキャッシュ システムに関する詳細は、以下の米マイクロソフトの SQL Server Customer Advisory Team(SQL CAT)チームの Blog に記載されています。

How bwin is using SQL Server 2016 In-Memory OLTP to achieve unprecedented performance and scale
https://blogs.msdn.microsoft.com/sqlcat/2016/10/26/how-bwin-is-using-sql-server-2016-in-memory-oltp-to-achieve-unprecedented-performance-and-scale

00019

このブログ記事の内容を要約すると、次のようになります。

bwin 社では、従来の Memcached や Cassandra、Microsoft AppFabric などを利用して構築していた独自のキャッシュ システムでは、トランザクション量の増大によって、キャッシュ システムのワークロードが追いつかないという事態になり、ノード数を増やしても、安定性の問題に直面して、可用性を落とすことにもなって、さらには、セットアップとメンテナンスの苦労もあったため、いろいろな部門にとっての作業負荷が増えていました。

そこで、これらの問題を解決するべく、キャッシュ システムとして採用したのが ASP.NET SessionState です。SessionState は、元々利用していたキャッシュ システムでしたが、SQL Server 2012 で動作させていた SessionState は、ラッチ待ちのボトルネックによって 1秒あたり 12,000バッチ リクエスト数が限界でした。SQL Server 2014 が登場したときには、世界で一番最初にインメモリ OLTP を導入して、30万 バッチ リクエスト数/秒を達成することができました。このときのボトルネックは、LOB(ラージ オブジェクト)データの Split 処理だったそうです。

SQL Server 2014 のインメモリ OLTP では、varbinary(max) や varchar(max) などの LOB に対応していなかったため、LOB データは分割処理する必要がありました(こうした処理を実現するためにネイティブ コンパイル ストアド プロシージャ化をすることもできていませんでした)。

SQL Server 2016 からは、インメモリ OLTP で LOB がサポートされたことによって、ネイティブ コンパイル ストアド プロシージャ化も可能になり、1秒あたり 120万バッチ リクエスト数という 4倍もの性能向上を実現することができました。

00020

この 120万バッチ リクエスト数を達成するにあたっては、途中 80万バッチ リクエスト数/秒 という壁(Spinlock の問題)がありましたが、これは CU2(SQL Server 2016 の累積的な更新プログラム 2)によって性能改善されました。

この 120万バッチ リクエスト数という性能を得られたことで、キャッシュ システムに採用できるという確信を得られたとのことです。

◆ StackOverflow 社では列ストアの採用、AG のローリング アップグレード

StackOverflow は、私たちもよく利用している開発者のための Q&A コミュニティを運用している会社です。C# や VB、ASP.NET などプログラミングに関することなどで、検索エンジンで検索すると必ずといって良いほど上位に結果が表示される有名サイトです。年間ページビュー数は 85億にも上り、毎年 25% のトラフィック増に直面しているそうです。

StackOverflow 社の詳細については、以下の米マイクロソフトの事例(Customer Stories)サイトに記載されています。
https://customers.microsoft.com/en-us/story/developer-qa-site-stays-fast-innovative-and-agile-with-sql-server-2016

00021

この事例記事を要約すると、次のようになります。

この記事の中で、StackOverflow 社の Nick Craver 氏は「クラスター化列ストア インデックスを利用することで、1日あたり 180GB のデータを約 16GB に圧縮、10分の 1以下に圧縮ができた」と語っています。

また、同社では SSD を利用していますが、もし 180GB/日 のデータ サイズであったとすると、6ヶ月分のデータを格納するために、30TB もの(非常に効果な)SSD を購入しなければならなくなります(例えば、2TB の PCI-e SSD を購入するだけでも数百万円のコストがかかるので、コストおよび容量の両面から HDD を利用するのが現実的になってしまいます)。

一方、クラスター化列ストア インデックスを利用して 16GB/日 に圧縮できるのであれば、6ヶ月分のデータを格納したとしても、 2.9TB で済みます。Nick Craver 氏は「SQL Server 2016 の列ストア インデックスを利用して、6ヶ月分のログ データを SSD に格納できるのは大きなアドバンテージです。また、単なる圧縮ではなく、実際のスピードも非常に優れています。ログ データを保存する仕組みとして理想的な技術です」と付け加えています。

蓄積したログ データは、トラフィック パターンを分析するために利用して、サイトを強化するための Insight(洞察)を得ています。例えば、「現在、会社内にリアルタイムに近いデータ パイプがあるので、StackOverflow のすべてのヒット数はマップ地図)上に表示されます。これによって、ロサンゼルスにいる Ruby 開発者の数や、ボットネットをブロックする方法、またはより良い広告を出す方法を理解できます。また、より良い質問をどのように提示して、より反応する可能性が高いかどうかなど、履歴データをすぐに参照できるということは、シミュレーションを迅速に再実行できることを意味しています」。

StackOverflow 社では、AlwaysOn可用性グループを利用して、ニューヨークにプライマリとセカンダリ(読み取り専用)、コロラドに DR(災害対策)用のセカンダリを配置しています。SQL Server 2016 へのアップグレードにあたっては、AlwaysOn可用性グループのローリング アップグレード機能のおかげで、11台の SQL Server を、わずか 48時間でアップグレードを完了させることができたそうです。

 

◆ Jack Henry & Associates 社では 130万予測/秒を達成(R によるローン予測)

1万を超える金融機関向けに 300以上のサービスと製品を提供している Jack Henry & Associates 社では、ローン申請におけるスコアリング・エンジンとして SQL Server 2016 およびビルドインされた RScaleR)を利用して、インテリジェントな EDW(エンタープライズ データ ウェアハウス)を構築しています。

昨年開催された PASS Summit 2016 の基調講演では、以下のスライドが紹介されていました。

00022

Jack Henry & Associates 社では、1秒あたり 130万ものローン申請(ローンが返済されるかどうかのローン予測)を処理できたという事例です。

これの具体的な構成については、次のように紹介されていました。

00023

SQL Server 2016 の列ストア インデックスインメモリ OLTP、SQL Server にビルトインされた RScaleR)を利用して、ローン予測を処理しています。

ローンが返済されるかどうか(債務不履行の可能性)を判断するには、金利やローン条件、会員のクレジット スコアなどの変化要因が影響し、不良債権になる確率を予測するインテリジェントな方法が必要になります。例えば、金利の上昇をシナリオに What-If 分析を行ったりするなどが必要です。

SQL Server 2016 にビルトインされた R では、ローンのスコアリング モデルを、ストアド プロシージャで呼び出して、パラレル スレッドで処理することができます。このようなリアルタイム予測分析(Real-Time Predictive Analytics)は、ビジネスの柔軟性を飛躍的に高め、高い収益性をもたらす重要な要素になります。

こうしたスコアリング エンジン(予測分析)に関しては、以下の米マイクロソフトの SQL Server チームの Blog の記事が参考になります。

1,000,000 predictions per second
https://blogs.technet.microsoft.com/dataplatforminsider/2016/10/11/1000000-predictions-per-second/

00024

このブログ記事では、クレジット カード取引の場合の例も、次のように紹介されています。

00025

この記事を要約すると、次のようになります。

金融サービス企業では、クレジット カードでの取引が正当なものであるか、不正使用Credit Card Fraud)なのかどうかを判断する必要があります。この判断には予測モデル(predictive model)がよく利用されます。

1秒あたりのトランザクション数(TPS)が増えれば、1秒あたりの予測数(PPS)も増えます。例えば、昨年の VISA ネットワークでの 56,000TPS、年間取引量は 10億100以上、予測と意志決定には、OLTP と高速な予測エンジンを備えた強力なプラットフォームが必要になります。例えば、顧客数の増大を想定して、1秒あたり 100万予測(100万 PPS)を達成できるプラットフォームにできないか、これを実現するための SQL Server 2016 における設計方法が、前掲の図のインメモリ OLTP と列ストア インデックス、R の組み合わせです。

 

◆ Heartland Bank では SAS を SQL Server 2016+R に置換

Heartland Bank は、ニュージーランドの銀行業ですが、従来の SAS ベースのシステムを SQL Server 2016 Microsoft R をベースにした Microsoftプラットフォームに置き換えています。大手銀行や PayPal のようなサービスと競争するために、投資予測延滞分析仲介/ブローカーのパフォーマンス分析などを R プラットフォームに移行して、クレジットカード スコア(スコアリング エンジン)に関しても移行を検討中です。

Heartland Bank の詳細については、以下の米マイクロソフトの事例(Customer Stories)サイトに記載されています。
https://customers.microsoft.com/en-us/story/heartlandbank

00026

 

◆ FIS 社では、NCCI を付与するだけで分析クエリの性能が 4、10、20倍に向上

金融機関向けにサービスを提供している FIS(Fidelity National Information Services)社では、SQL Server 2016 の非クラスター化列ストア インデックス(NCCI)を付与するだけで、アプリケーションやクエリを一切変更することなく、分析クエリの性能が 4倍10倍20倍に向上することを確認しました。OLTP テーブルに NCCI を追加するだけだったので、ETL ルーチンを追加したり、DB を再設計したり、トランザクション処理の変更をしたりする必要はありませんでした。

FIS 社の詳細については、以下の米マイクロソフトの事例(Customer Stories)サイトに記載されています。
https://customers.microsoft.com/en-us/story/financial-services-firm-accelerates-real-time-analytics-with-sql-server

00027

 

◆ Moneris Solutions ではアプリを変更することなく 10~20%の性能向上を実現

北米最大の決済処理事業者の 1つである Moneris Solutions Corporation では、アプリケーションを一切変更することなく、SQL Server 2016 に変更しただけで、10~20%の性能向上を実現しました(ハードウェアは従来と同じものを利用)。

Always Encrypted を利用すれば、システム上の全ての情報を保護にできるので、法令遵守だけでなく、最先端のセキュリティを提供できます。インメモリ OLTP と Always Encrypted によってスピードとセキュリティの強化、AlwaysOn可用性グループの読み取り専用セカンダリによって負荷分散も実現可能です。

Moneris Solutions 社の詳細については、以下の米マイクロソフトの事例(Customer Stories)サイトに記載されています。
https://customers.microsoft.com/en-us/story/moneris

00028

◆ PROS では 100倍の性能向上(R を採用)

Revenue Management を提供している PROS Holdings 社では、SQL Server 2016 にビルトインされた R を採用して、従来のシステムよりも 100倍速い性能を実現しています。これについては、昨年開催された PASS Summit 2016 の基調講演で、次のように紹介されていました。

00029

PROS 社の事例については、次の URL で動画を参照することもできます。

PROS Featured in Microsoft SQL Server 2016 Launch
http://info.pros.com/SQL-2016_Watch-Now-View.html

 

◆ Derivco ではアップグレードしただけで同時プレーヤー数が 25%も向上

オンライン ゲームを提供している UK の Derivco 社では、AlwaysOn可用性グループを利用して、より効率的なバックアップと DR災害復旧)を実現し、まったく調整することなく、SQL Server 2016 にアップグレードしただけで、サポートできる同時プレーヤー数が 25% も向上しました。

Derivco 社の詳細については、以下の米マイクロソフトの事例(Customer Stories)サイトに記載されています。
https://customers.microsoft.com/en-us/story/when-an-online-gaming-company-doesnt-want-to-risk-its-future-it-bets-on-sql-server-2016

00030

 

◆ Meijer では Analysis Services と Power BI でリアルタイムに近いデータ分析

米国の大手スーパーマーケット チェーン(約 300店舗を展開)の Meijer 社では、約 80万の商品点数に対して、SQL Server 2016 のインメモリ テクノロジーを利用して、Analysis Services(SSAS)のキューブに 200億件分のデータを格納、このデータに対して Power BI からアクセスして、リアルタイムに近いデータ分析を実現しています。

Meijer社の詳細については、以下の米マイクロソフトの事例(Customer Stories)サイトに記載されています。
https://customers.microsoft.com/en-us/story/top-supermarket-chain-gains-insight-and-boosts-profitability-with-microsoft-power-bi

 

◆ その他の事例

その他の事例に関しては、以下の表に URL をまとめました。

00031

◆ SQL Server 2016 の参考情報

SQL Server 2016 に関しては、以下のブログ記事もお勧めです。

Migrating SAP workloads to SQL Server just got 2.5x faster
https://blogs.msdn.microsoft.com/sql_server_team/migrating-sap-workloads-to-sql-server-just-got-2-5x-faster/

SQL Server 2016 – It Just Runs Faster Announcement
https://blogs.msdn.microsoft.com/psssql/2016/02/23/sql-2016-it-just-runs-faster-announcement/

SQL Server 2016 is generally available today
https://blogs.technet.microsoft.com/dataplatforminsider/2016/06/01/sql-server-2016-is-generally-available-today/

◆ SQL Server 2016 は TPC-H ベンチマークの 10TB でワールド レコード

TPC-H は、データ ウェアハウス/意志決定支援システム向けのベンチマーク テストとして有名なものですが、SQL Server 2016 は、10TB(テラ バイト)規模のベンチマーク テストで世界記録(ワールド レコード)を更新しました。執筆時点(2016年12月)では、Non-Clustered の 10TB 部門では、上位 1、2、3位を SQL Server 2016、4位~8位を SQL Server 2014 が獲得して、SQL Server だけで上位1位~8位を独占しています(以下の URL で最新のベンチマーク結果を参照できます)。

TPC-H - Top Ten Performance Results - Non-Clustered
http://www.tpc.org/tpch/results/tpch_perf_results.asp?resulttype=noncluster

この世界記録に関しては、SQL Server チームの Blog にも投稿されているので、以下の記事が参考になると思います。

SQL Server Team Blog: SQL Server 2016 posts world record TPC-H 10 TB benchmark
http://blogs.technet.microsoft.com/dataplatforminsider/2016/07/18/sql-server-2016-posts-world-record-tpc-h-10-tb-benchmark/

00032

目次へ | 前のページへ | 次のページへ

事例1

SQLQualityは執筆とセミナーを通じて技術の啓蒙やエンジニアの育成支援も行っています
最新刊
SQL Server 2016 の教科書
SQL Server 2016 の教科書(ソシム)

弊社オリジナル制作の
SQL Server 2016 自習書も
マイクロソフトのサイトで公開中!
ダウンロードはこちら
セミナー風景
セミナー風景

ロングセラー
ASP.NET でいってみよう  SQL Server 2000 でいってみよう
ASP.NET でいってみよう
第7刷 16,500 部発行
SQL Server 2000 でいってみよう
第12刷 28,500 部発行
SQL Server 2014 CTP2 インメモリ OLTP 機能の概要
SQL Server 2014 CTP2 インメモリ OLTP 機能の概要(Amazon Kindle 書籍)

弊社執筆の
SQL Server 2014 自習書
マイクロソフトのサイトで公開中
目次はこちら

弊社執筆の
SQL Server 2012 自習書
マイクロソフトのサイトで公開中
ダウンロードはこちら
松本美穂のコラム
(公開活動などのお知らせ)

第60回:SQL Server 2017 自習書 No.3「SQL Server 2017 Machine Learning Services」のご案内
第59回:SQL Server 2017 自習書 No.2「SQL Server 2017 on Linux」のご案内
第58回:SQL Server 2017 自習書 No.1「SQL Server 2017 新機能の概要」のご案内
第57回:SQL Server 2017 RC 版とこれまでのドキュメントのまとめ
第56回:「SQL Server 2016 への移行とアップグレードの実践」完成&公開!
第55回:書籍「SQL Server 2016の教科書 開発編」(ソシム)が発刊されました
第54回:「SQL Server 2016 プレビュー版 Reporting Services の新機能」自習書のお知らせ
第 53 回:SQL Server 2016 Reporting Services の新しくなったレポート マネージャーとモバイル レポート機能
第 52 回:SQL Server 2016 の自習書を作成しました!
第 51 回:PASS Summit と MVP Summit で進化を確信!
第 50 回:新しくなった Power BI(2.0)の自習書を作成しました!
第49 回:Excel 2016 の Power Query を使う
第 48 回:新しくなった Microsoft Power BI ! 無料版がある!!
第 47 回:「Microsoft Azure SQL Database 入門」 完成&公開!
第 46 回:Microsoft Power BI for Windows app からの Power BI サイト アクセス
第 45 回:Power Query で取得したデータを PowerPivot へ読み込む方法と PowerPivot for Excel 自習書のご紹介
第44回:「SQL Server 2014 への移行とアップグレードの実践」ドキュメントを作成しました
第43回:SQL Server 2014 インメモリ OLTP 機能の上級者向けドキュメントを作成しました
第42回:Power Query プレビュー版 と Power BI for Office 365 へのクエリ保存(共有クエリ)
第41回:「SQL Server 2014 CTP2 インメモリ OLTP 機能の概要」自習書のお知らせです
第40回: SQL Server 2012 自習書(HTML版)を掲載しました
第39回: Power BI for Office 365 プレビュー版は試されましたか?
第38回: SQL Server 2014 CTP2 の公開
第37回: SQL Server 2014 CTP1 の自習書をご覧ください
第36回: SQL Server 2014 CTP1 のクラスター化列ストア インデックスを試す
第35回: SQL Server 2014 CTP1 のインメモリ OLTP の基本操作を試す
第34回: GeoFlow for Excel 2013 のプレビュー版を試す
第33回: iPad と iPhone からの SQL Server 2012 Reporting Servicesのレポート閲覧
第32回: PASS Summit 2012 参加レポート
第31回: SQL Server 2012 Reporting Services 自習書のお知らせ
第30回: SQL Server 2012(RTM 版)の新機能 自習書をご覧ください
第29回: 書籍「SQL Server 2012の教科書 開発編」のお知らせ
第26回: SQL Server 2012 の Power View 機能のご紹介
第25回: SQL Server 2012 の Data Quality Services
第24回: SQL Server 2012 自習書のご案内と初セミナー報告
第23回: Denali CTP1 が公開されました
第22回 チューニングに王道あらず
第21回 Microsoft TechEd 2010 終了しました
第20回 Microsoft TechEd Japan 2010 今年も登壇します
第19回 SQL Server 2008 R2 RTM の 日本語版が公開されました
第18回 「SQL Azure 入門」自習書のご案内
第17回 SQL Server 2008 自習書の追加ドキュメントのお知らせ
第16回 SQL Server 2008 R2 自習書とプレビュー セミナーのお知らせ
第15回 SQL Server 2008 R2 Reporting Services と新刊のお知らせ
第14回 TechEd 2009 のご報告と SQL Server 2008 R2 について
第13回 SQL Server 2008 R2 の CTP 版が公開されました
第12回 MVP Summit 2009 in Seattle へ参加

技術コミュニティでも活動中