*
*
READY STATION トップ > READY クローズアップ
*
READY クローズアップ
*
Microsoft MVP が語る SQL Server 2005
*
Microsoft MVP へのインタビューから SQL Server 2005 を探る READY クローズアップ。この連載では、SQL Server 2005 に対する期待や導入メリット、具体的な利用方法などについて、Microsoft MVP として表彰された方々へインタビューを行い、SQL Server 2005 に対する想いを語っていただきます。
*
*→*Microsoft MVP とは
*
MVP インタビュー 第 2 回
Microsoft SQL Server 2005 は、ココが違う

*
*
パフォーマンスと拡張性が向上した SQL Server 2005 *
*
*
**
Index
*
*SQL Server の魅力は何といってもイージー アンド リッチ
*
*同じ SQL 文を実行しても SQL Server 2005 の方が断然速い
*
*デベロッパーにお勧めの機能はデータベース エンジン チューニング アドバイザ
*
*動的管理ビューで詳細な監視 SQL Server 2005 はブラック ボックスではない
*
*パーティション テーブルは今すぐにでも使いたい機能 エンタープライズ案件にはなければ困ります
*
*SQL Server 2005 は、金融や証券のシステムなど大規模なエンタープライズ環境でも十分に通用します
*
**
小川 貢 氏    Microsoft MVP for SQL Server
*
株式会社 CRC ソリューションズ ビジネス ソリューション第 1 事業部 ソリューション技術部 テクノロジー ソリューション課。
前職にて ASP (Active Server Pages) によるサイト構築を担当した後、現在の会社においても Web 関連の開発に従事。
仕事上、SQL Server を利用する機会が多いことから、PASSJ の立ち上げに関与。現在 PASSJ の理事および Web テクノロジー分科会ボード リーダーとして活動。
PASSJ での活動が Microsoft に認められ、2001 年に MVP for SQL Server として認定され、現在に至る。
Microsoft のプロダクトの中で何をおいても SQL Server が大好き。

*
**
小川貢氏
*
*
*
*
*
SQL Server 2005 の向上したパフォーマンスは、今までなかなか踏み込めなかった金融や証券などの大規模なエンタープライズ環境でも十分に通用します。
*
「Microsoft MVP が語る」シリーズの第 2 回目となる今回は、Web アプリケーションの設計と開発、パフォーマンス チューニングを得意とする株式会社 CRC ソリューションズの小川 貢 (おがわ みつぎ) 氏をお招きし、SQL Server 2005 に対する熱い想いを語っていただきました。小川さんは、SQL Server ユーザーのためのコミュニティ「PASSJ」の立ち上げ時のメンバであり、現在は、PASSJ の理事および Web テクノロジー分科会ボード リーダーとして活躍されています。小川さんは、日本における Microsoft MVP 制度の立ち上げ時の初期メンバ (7 人) のうちの 1 人でもあり、古くからコミュニティ活動を積極的に行っています。

ページのトップへページのトップへ
*
**
SQL Server の魅力は
何といってもイージー アンド リッチ
*
――   現在の小川さんの業務と SQL Server の関係について教えていただけますか。

小川   私の業務は、Web アプリケーションの設計と開発が中心になります。.NET や Javaによる開発、そしてデータベースでは SQL Server だけでなく Oracle も利用し、小規模なシステムから大規模なエンタープライズ案件まで、いろいろなシステムを幅広く手がけています。それとは別に、いわゆる「火消し」役として、他の人の開発を手伝ったり、技術支援を行ったりすることも多いです。

――   さまざまなテクノロジに携わっておられる中で、小川さんは常日ごろ「SQL Server が大好き」とおっしゃられていますが、SQL Server の魅力はどこにあるとお考えですか。

小川   SQL Server の魅力は、何といってもイージーな点でしょう。インストールを 1 つとっても SQL Server なら簡単です。もし UNIX 環境で Oracle となると、OS のインストールが大変、Oracle のインストールも大変、インストール前後の各種パラメータ設定も大変、開発をするにも別途 Oracle Net Client (Net8 Client) のインストールが必要になる、といった具合に多くの知識が必要となります。しかし、SQL Server であれば、開発に必要なコンポーネントは OS に標準で入っているので、誰にでも簡単にインストールできます。
イージーというのは、決してチープという意味ではなく、リッチなイージーという意味です。たとえば、SQL Server の自動チューニング機能は本当にリッチです。普通は、自動チューニングというと「本当に大丈夫なの?」と疑いたくなりますが、SQL Server の自動チューニングは本当に賢い。必要に応じてメモリの使用量が動的に変化したり、物理メモリ以上のメモリを消費しないように動作したりと非常によくできていて、安心して使えます。

――   確かに安心して利用できますね。最近の Oracle にも動的チューニングの機能はありますが、SQL Server における自動チューニングとは違って、ある程度手動でパラメータの調整をする必要があり、そのためには高いスキルが必要です。これではデータベースに詳しくないユーザーが安心して利用するには、専門のコンサルタントを手配したり、サポートに問い合わせなければなりません。

小川   そうですね。それに SQL Server の場合には、何か問題があったとしても、監視をするためのツールが充実されています。贅沢なくらいに Enterprise Manager を始めとする GUI ツールが提供されていて、クエリ アナライザの「実行プランのグラフィカル表示」機能を 1 つとっても実に良くできています。その中でも私が特に気に入っているツールは「プロファイラ」ですが、これを使えば、実行中の SQL 文をトレース (記録保存) できるので、パフォーマンスに問題があった場合でも簡単にボトルネックが発見できるようになります。
Oracle だとこうはいかなくて、サード パーティ製の高価なツールを利用したり、複雑な管理用の SQL 文をたたかないとボトルネックを発見できないわけです。今でこそ Oracle も GUI ツールを備えるようになってきましたが、SQL Server が 7、8 年前から実装している機能がほとんどです。それに最近の Oracle の GUI ツールは Web ベースなので、操作性では SQL Server のツールの方がはるかに馴染みやすいと言えるでしょう。
このように SQL Server は、イージーで敷居が低いにも関わらず、多機能で動作の信頼性もあり、専門のデータベース管理者でなくても気軽に利用できるというのが大きな魅力です。

ページのトップへページのトップへ
*
**
同じ SQL 文を実行しても
SQL Server 2005 の方が断然速い
*
Photo
*
*
――   SQL Server 2005 の製品発表が近づいてきましたが、SQL Server 2005 のどこに期待されていますか。

小川   何をおいてもパフォーマンスの向上でしょう。インデックスでは、インデックスの Include オプション (付加列インデックス) やオンラインでのインデックス再構築など、多くの機能が追加されています。
パフォーマンスを検証するため、私の環境では、同じマシンに SQL Server 2000 と SQL Server 2005 の両方をインストールしており、実際の検証時にはどちらかの SQL Server だけを起動させています。また、検証で使用するデータは、お客様の実際のデータとだいたい同じものを用意し、テストで使用する SQL 文もできる限り実際と同じものにしています。試しに数千万件のデータを使って、SQL Server 2000 と SQL Server 2005 で同じ SQL 文を実行してみると、SQL Server 2005 の方が断然速いのです。これはエンジンが強化されたことも 1 つの要因でしょうが、インデックスの Include オプションの恩恵でもあるでしょう。しかもこれはベータ版の段階でのテストなので、出荷される製品版ではさらにパフォーマンスが向上していると期待ができます。

――   そのほか「これは速い」と体感された機能はありますか。

小川   Transact-SQL の拡張機能の「共通テーブル式」ですね。共通テーブル式 (CTE : Common Table Expressions) は、再帰クエリを実現でき、階層構造を持ったデータを簡単に取り出せるようになります。今までは、階層構造を取り出すのに tempdb データベース内に一時テーブルを作ったり、自己結合をしたりしなければならなかったのが、共通テーブル式であれば非常にシンプルな SQL 文で書けます。かつ、パフォーマンスも良いのです。これは、掲示板でよく利用されるスレッド表示機能など、再帰的にループで回すような処理に本当に便利です。
また、新しく追加された RANK 関数と ROW_NUMBER 関数は、売り上げなどのランキングを表示するときに役立つのですが、こういったプログラミング的な要素が拡張されたことも、パフォーマンス向上の一助になっている。よく SQL Server 2005 は速くなったと聞くけれど、「なるほど、こういうことか」というのが体感できたのです。

ページのトップへページのトップへ
*
**
デベロッパーにお勧めの機能は
データベース エンジン チューニング アドバイザ
*
――   パフォーマンス チューニングの観点から SQL Server 2005 で気に入っておられる機能はありますか。

小川   データベース エンジン チューニング アドバイザは、デベロッパにお勧めの機能ですね。デベロッパにとっては、クエリ アナライザで表示された実行プランを基に最適なインデックスを見つけ出すという作業は、たいへんに労力がいります。そもそも一般的なエンジニアにとって実行プランは難解であり、実行プランの解析には高いスキルが必要です。しかし、データベース エンジン チューニング アドバイザであれば、チューニングしたい SQL 文を読み込ませるだけで、最適なインデックスを提示してくれるのです。必要であればパーティションやインデックス付きビューも提示してくれます。
データベース エンジン チューニング アドバイザは、インデックス チューニングという職人芸の世界を一般的なエンジニアでもできるようにした本当に便利な機能ですね。それでも駄目な場合は、職人を呼びましょう。

ページのトップへページのトップへ
*
**
動的管理ビューで詳細な監視
SQL Server 2005 はブラック ボックスではない
*
――   小川さんは、その職人という立場になると思いますが、データベースの専門家としてSQL Server 2005でうれしい機能はありますか。

小川   より詳細なチューニングには「動的管理ビュー」が欠かせないでしょう。動的管理ビュー (DMV : Dynamic Management View) は、従来の DBCC コマンドやシステム ストアド プロシージャに置き換わるものなのですが、SQL Server 2000 と比べて調べられる項目が圧倒的に増えています。たとえば、tempdb の利用状況を詳しく調べたり、メモリやインデックスの利用状況を詳しく調べたりできるようになっています。未使用のインデックスも調べられるので、不要なインデックスを探すのも簡単になりました。よく「SQL Server 2000 はブラック ボックスだ」と言われていたのですが、SQL Server 2005 ではそうではないのです。

――   ブラック ボックスと言えば、SQL Server 2000 にはヘルプ (Books Online) に記載されていない隠しコマンドもありますね。

小川   そうですね。SQL Server 2000 では一部の Top Gun と呼ばれる人たちしか知らないアンドキュメンテッドなコマンドやトレース フラグが結構あり、これらを使ってチューニングすることもできました。しかし、こういった隠しコマンドは正式にはサポートされていないので、たとえばコマンドを打ってデータベースが壊れたとしても保証がないわけです。これでは、いくらチューニングに役立つとはいっても一般ユーザーには怖くて利用できません。
一方、動的管理ビューであればヘルプに記載されているので、安心して利用できます。また、動的管理ビューは、出力結果がテーブル形式なので、結果を 2 次利用するのも簡単です。たとえば、ある監視項目に対してしきい値を超えた場合にメールでアラートを送信するといったこともできますし、インデックスの断片化の状態を調べて、「断片化が 30% 以上ならインデックスの再構築を実行する」といったように、結果を基に別のアクションを起こすことも簡単にできます。従来の DBCC コマンドやシステム ストアド プロシージャでは、監視結果を 2 次利用するには一時テーブルをわざわざ作らなければならなかったり、そもそも 2 次利用できないコマンドもあったりしました。この辺の違いは、データベース管理者 (DBA) にとっては大きな差となるでしょう。

――   そのほかパフォーマンス関連で注目している機能はありますか?

小川   スナップショット分離レベル (Snapshot Isolation) ですね。これは Oracle でいうところの「読み取り一貫性」と同じように、排他ロック中のデータを参照できる機能です。会計システムなどでは、バッチ処理をすると、結構な数のロックがかかり、場合によってはテーブル単位のロックがかかることもあります。その間にリアルタイムでデータを参照したいというニーズは結構あるわけです。そういった場合でもスナップショット分離レベルを利用すれば、ロック中のデータでも、待たされることなくすぐに参照できるようになります。これは絶対お勧めですね。
ただし、スナップショット分離レベルを利用する場合は、tempdb データベース内にスナップショット データを作成することになるので、tempdb の監視や物理配置もきちんと考えておかなければなりません。tempdb データベースは、できる限りハード ディスクの数をたくさん用意した RAID 0+1 上に配置し、I/O のスピードを上げておくことが重要です。

ページのトップへページのトップへ
*
**
パーティション テーブルは今すぐにでも使いたい機能
エンタープライズ案件にはなければ困ります
*
*Photo
*
――   拡張性 (スケーラビリティ) という観点からは、どういった機能に注目されていますか。

小川   パーティション テーブルですね。これは Oracle でいうところの「レンジ パーティション」機能で、データの範囲 (レンジ) によってデータの格納場所 (パーティション) を分ける機能です。これは、SQL Server 2000 の分割ビュー機能でも似たようなことができたのですが、運用管理面では大きな違いがあります。
パーティション テーブルは、データの消しこみ作業やデータのアーカイブを作成する場合にたいへん役立ちます。もし、パーティション機能を利用せずに、1 つのテーブルで運用していた場合のデータのアーカイブ (保存) を作成する作業を考えてみてください。この場合は、データをアーカイブへコピーした後、基のテーブルからデータを削除する作業が発生します。削除するデータが大量になると、トランザクションが長くなりますし、トランザクション ログは膨れ上がります。また、ロックも大量にかかることになり、テーブル単位のロックにエスカレーションすることもあり得ます。このような事態を回避する方法は、削除するデータを少しずつ選択し、Wait をかけながら少しずつ消していくというものです。これにより、トランザクションを短く、ロックをかける範囲を小さくできます。しかし、これでは削除に時間がかかってしまいますし、運用がたいへんです。このような状況でパーティション テーブルを利用すれば、データのアーカイブは一瞬で終わります。パーティションを切り離すだけでいいのです。これは、今すぐにでも使いたい機能ですね。

――   運用管理面のメリットが大きいというわけですね。

小川   はい。先日の案件でも SQL Server 2005 が製品として発売されていれば、迷わずこの機能を利用していました。利用できればどんなに運用管理が楽だったかと思います。パーティション テーブルは、エンタープライズ案件にはなければ困りますね。SAP R/3 環境などでも欠かせない機能といえるでしょう。
また、パーティション機能では、インデックスもパーティション化できるのですが、これはパーティションごとにインデックスの再構築が行えるということを意味しています。もし、インデックスがテーブル単位だとすると、インデックスの再構築に時間がかかりますし、オフラインで再構築している場合は、その間ユーザー アクセスは一切できなくなるわけです。たとえば、1,000 万件のデータのインデックスを再構築するのに 1 時間かかっていたとすると、パーティションを 10 個に分割していて、インデックスもパーティション化されていれば、単純計算で 1 つのパーティションを再構築するには 6 分で済むことになります。
このように、テーブル パーティションは、データの切り離しや追加が簡単に行えるだけでなく、パーティションごとにインデックスの再構築が行えるのも運用管理面およびパフォーマンス面での大きなメリットです。

――   64-bit 機能についてはいかがですか。

小川   64-bit は大規模なデータベース環境では欠かせないでしょう。32-bit のシステムでは、4 GB というメモリ空間の壁を超えるために AWE (Address Windowing Extensions) という機能を利用しているのですが、AWE ではオーバーヘッドがあります。それに、SQL Server の自動チューニング機能が完全に活かされている形ではありません。というのも AWE では、バッファ キャッシュに関しては、メモリ領域を有効利用できるのですが、Sort や Hash 処理で利用される一時領域用の Workspace メモリや、実行プランのキャッシュを格納しておくためのプロシージャ キャッシュ、ロック用のメモリ領域などは、AWE の機能を享受できず、4 GB の壁を超えられないのです。
しかし 64-bit 環境であれば、ネイティブにメモリ空間を利用できるようになります。これは SQL Server の自動チューニング機能が完全に動作し、Workspace メモリやロック用のメモリ領域も大きく取れるようになるということです。巨大なデータベースを扱っている人にとって、待望の機能といえるでしょう。

ページのトップへページのトップへ
*
**
SQL Server 2005 は、金融や証券のシステムなど
大規模なエンタープライズ環境でも十分に通用します
*
――   SQL Server 2005 はどういったユーザーにお勧めでしょうか。

小川   間違いなくエンタープライズ系の企業ですね。金融や証券のシステムなど、今まで SQL Server 2000 ではなかなか踏み込むことのできなかった世界でも SQL Server 2005 は十分に通用します。そういったシステムを手がけるエンジニアの方々にぜひとも評価していただきたいと思います。直ちに評価する価値のある製品だと思っています。

――   最後にこの記事を読んでくださっている皆様にひと言お願いします。

小川   新しい製品だと、どうしても少し様子をみてから使おうという方が多いかと思います。しかし、今回の SQL Server 2005 はものすごくいい。マイクロソフトがパフォーマンスを最大限に上げるように努力をした結果だと思いますので、ぜひ評価環境を作って試してみてほしいです。パーティション テーブルやスナップショット分離レベル、豊富な GUI ツールによって、今までに運用上で困っていたことが大分緩和されるでしょう。
また、SQL Server 2005 には、PASSJ からの要望が反映された機能もあります。Express Edition の「AttachDbFileName」というデータベース ファイル (.mdf) をそのままデータベースとして利用できる機能なのですが、これはマイクロソフトの SQL Server 開発チームと PASSJ がミーティングをしたときに河端さんが発したひと言から始まり、それが実装されました。現状の SQL Server に物足りなさを感じていたり、不満を抱えている方は、ぜひとも PASSJ に参加していただき、その声を聞かせてください。恥ずかしがらずに何でもいいので声を挙げていただき、私たちに相談してほしいのです。そうすれば、私たちで解決できることもあるでしょうし、マイクロソフトの製品開発担当者へフィードバックを挙げるというパスもあります。
この一例のように、あなたのひと言が製品を変えられる可能性があります。コミュニティにはそれだけの力があるのです。また、皆様が声を発信することで、PASSJ はより高い技術集団になれると思っていますし、技術習得だけではなく、いろいろな問題や情報を共有していくことで、全員が Win-Win の関係になれると信じています。

ページのトップへページのトップへ
*

* SQL Server 2005 のパフォーマンスと拡張性 (スケーラビリティ) について詳しく知りたい方はこちら*

*
Microsoft MVP とは
*
Microsoft MVP (Most Valuable Professionals) プログラムは、マイクロソフトのさまざまなテクニカル コミュニティにおいて、技術力が高く、精力的でかつ顕著な活動をした方を表彰する世界的なプログラムです。このプログラムでは、オンライン、オフラインを問わず、マイクロソフト製品に関する貴重な知識や情報を共有することで、コミュニティの活性化に貢献する世界中のコミュニティ メンバを讃えるものです。
MVP の方々のバックグラウンドや専門分野はさまざまですが、掲示板やテクニカル ニュース グループへの積極的な回答やコミュニティの運営、ブログや Web サイトによる情報共有、著作、開発サポート、イベントや講習会での講演などを通じて活躍しています。
*
ページのトップへページのトップへ
*
READY STATION のトップへREADY STATION のトップへ
*
Back Number
*
**
**