検索
連載

DB設計 基本の鉄則3カ条とは?/SQL Server 2014が間もなく登場!Database Watch(2014年3月版)(1/3 ページ)

Microsoft SQL Server 2014が間もなく登場! インメモリエンジン搭載、BI機能の強化、Microsoft Azure連携の強化と、盛りだくさんです。今月は、DB設計のありがたいお言葉も紹介します。

Share
Tweet
LINE
Hatena

Microsoft SQL Server 2014のメモリ最適化OLTPエンジンとは?

 最近あるデータベースの検証をした人がこんな感想を述べていたのを聞きました。「やはりRDBMSのアーキテクチャはディスクドライブに最適化されているんですね」と。

 言い換えると、RDBMSはデータがディスクドライブに保存されているのを前提として、あれこれ仕組みが考えられているということです。例えばデータを読み込むときのサイズもディスクからメモリに読み込むことを想定した大きさになっています。

 しかし、近年では大量のメモリを積むことも可能となってきました。フラッシュやSSDなどもあります。そうなると前提が崩れてきます。基本的なアーキテクチャの根本的な変更とまではいかないまでも、インメモリやオンメモリを想定して最適化したアーキテクチャは今後徐々に浸透していくように思います。

 Microsoft SQL Server 2014(以下「2014」)の新機能にもそうした動きが見て取れます。日本マイクロソフト アプリケーションプラットフォーム製品部エグゼクティブプロダクト マネージャー 北川剛氏(写真)が2014の新機能について解説してくれました。次期版となる「2014」はもうそろそろのようです。

 2014の目玉となるのはオンライントランザクション処理(OLTP)向けのインメモリデータベース機能です。ここでSQL Serverのインメモリ機能についてちょっと整理しておきましょう。

 まずSQL Server 2008 R2で登場した「PowerPivot」です。これは、Excelの裏で稼働するインメモリBIエンジンです。クライアント側で動作します。

 SQL Server 2012で登場したのは「メモリ最適化カラムストア」でした。サーバー側で動作するBI向けの機能です。バージョンを追うごとに機能が増え、ついに2014では、サーバー側でOLTP処理を実行する機能「メモリ最適化OLTPエンジン」が搭載されます。開発コード名では「Hekaton」と呼ばれていたものです。

 ではメモリ最適化OLTPエンジンは何が違うのでしょうか。ポイントは4つ挙げられます。メモリ最適化、T-SQLのマシンコードへのコンパイル、楽観的並列制御、エンジンの統合です。

メモリ最適化

 データがディスクドライブではなくメインメモリにあるという前提で、処理そのものをメモリの特性に合わせて最適化しています。具体的には、ページ単位でデータを読み取らない、バッファプールなし、B-Treeでデータをたどらずハッシュを使うことでワンホップでデータへアクセスするなどです。

T-SQLのマシンコードへのコンパイル

 インタプリターであるT-SQL(Transact-SQL)をフルコンパイルしてバイナリコード(DLL:Dynamic Link Library)にすることで、処理の高速化を図ります。

楽観的並列制御

 メモリ最適化テーブルではデータを更新するとき、内部的には行のデータを「書き換える」のではなく「新しい行を追加」します。これが楽観的並列制御です。行には内部的にタイムスタンプを持ち、最新のデータか古いデータか判別できるようにしています。

エンジンの統合

 2014ではテーブルがディスク上にあろうが(従来型のSQL Serverエンジン)、メモリ上にあろうが(メモリ最適化OLTPエンジン)、SQL Serverとして統合されています。言い換えると透過的に使えるようになっています。

 では具体的にどういう操作が必要なのでしょうか? 任意のテーブルをメモリ最適化エンジンで使う「メモリ最適化テーブル」にするには、「SQL Server Management Studio」から指定します。しかし、どのテーブルを指定すればいいのかは、スキルが高くないと判断が難しいかもしれません。サーバーにあるデータベースを全てきれいにメモリに載せられるならよいのですが、現実的にはそこまで潤沢にメモリがあるとは限りません。

 そこで頼りになるのが、Management Studioにあるストアドプロシージャーのネイティブコンパイルアドバイザーです。長い名前ですが、分析ツールと言ってよいでしょう。こちらで総CPU時間の長いストアドプロシージャーが一覧でき、ロック待ちやアクセス頻度などから、メモリ最適化テーブルにすると効果があるものがリストアップされます。ここからメモリ最適化テーブルに指定するテーブルを選ぶなら、そう難しくなさそうです。

クラウド OSとしてのSQL Server

 ここで、もう1つ注目の新機能を挙げておきましょう。クラウドも併用した運用に役立つものです。

 これまでも、SQL Serverはオンプレミスで使うものと、Windows Azureのクラウドで使うものは同じだから移行やデータ同期が可能……と言われてはきました。しかし、やはり両者は「別物」というイメージだったのではないでしょうか(筆者の個人的なイメージかもしれませんが)。

 SQL Serverには「AlwaysOn」という高可用性のための機能があります。オンプレミスでこの機能を運用中でも、可用性グループに簡単にWindows Azureを指定できるようになるそうです。今までも可能ではありましたが、2014だとウィザードができてハードルが下がるとか。これは、使えるならうれしい機能ではないでしょうか。

 なおオフィシャルのブログとなる「SQL Server Blog」の3月18日付記事(リンク)によると、SQL Server 2014のRTM(製品出荷版)が4月1日にリリースと発表されています。じきに正式発表があることでしょう。

Copyright © ITmedia, Inc. All Rights Reserved.

       | 次のページへ
ページトップに戻る