SQL Server 2005でガラッと変わった個所とは?:Dr. K's SQL Serverチューニング研修 Part II(1)(1/4 ページ)
日本におけるSQL Serverコンサルタントの第一人者、熊澤幸生氏にチューニングのノウハウを語っていただくシリーズの第2弾は、SQL Server 2005に特化した内容をお届けする。インタビュアーは引き続き、SQL Serverへの造詣が深いITジャーナリスト、工藤淳氏が担当する。(編集部)
SQL Serverのパフォーマンス・チューニングを手掛けるデータベース技術者の皆さん、お元気でしょうか。先の「Dr. K's SQL Serverチューニング研修」の最終回で、ぜひ続編としてSQL Server 2005の話をしたいと書いておきましたが、ようやく今回から連載を始める運びとなりました。
SQL Server 2005は、前バージョンのSQL Server 2000から大きく進化を遂げ、エンタープライズ用RDBMSとしての実力が強化されています。この素晴らしいアーキテクチャと多彩な機能群から最高のパフォーマンスを引き出すために、これからまた一緒に勉強していけたらと願っています。
すでに私はいくつかのSQL Server 2005の先行導入事例、とりわけ大規模ミッションクリティカルシステムを手掛ける中で、ぜひ皆さんにお伝えしたいノウハウやテクニックをいくつも発見しています。それらは、今回の連載の中で随時ご紹介していこうと思っていますので、ぜひ楽しみにお付き合いください。
大規模データベースを支える最重要テクノロジはNUMA
第1回の冒頭に当たって、SQL Server 2005の最新動向をお話ししましょう。2007年というのは、SQL Server 2000でシステムを動かしてきたユーザー企業の多くが、バージョンアップに踏み切る年になっています。その背景には、2002年ごろに導入したハードウェアが5年を経過して入れ替えの時期を迎えていることがあります。ハードウェアの刷新に合わせてSQL Serverも2005へバージョンアップするタイミングなのです。そしてこれを機に、データベースの規模を大幅に拡大する事例が増えています。
データベースの大規模化にどんなテクノロジをもって対応していくかは私たちデータベース技術者の大きな課題ですが、これを克服するための重要な解は、「NUMA(Non-Uniform Memory Access)」しかないと考えています。NUMAのアーキテクチャに関しては、前回の連載記事「進化するCPUをパワー全開で走らせるテクニック」で詳しく説明してあります。
NUMAの歴史は比較的新しく、SQL Server 2000ではまだNUMAを意識した設計がなされていませんでした。SQL Server 2000 IA 64bit版ではNUMAへの対応を行ったのですが、根本のデータベースエンジンがSQL Server 2000のままだったため、NUMA本来の機能を十分に活用するまでには至りませんでした。
SQL Server 2005のリリース以降、ようやく本格的なNUMA活用の道が開けてきたといえます。SQL Server 2005では、サーバOSであるWindows Server 2003 64bit版/R2 64bit版をサポートしており、ネイティブでNUMAの機能を活用できる環境がようやく整ったのです。
マイクロソフトは今後3年ごとに新しいバージョンをリリースするというアナウンスを行っており、次期バージョンとされるSQL Server 2008(コードネーム:Katmai=カトマイ)ではさらに進化を遂げるはずです。そしてNUMAへのキャッチアップが完了するのは、Windows Server 2008に対応して登場するSQL Server 2011(仮称)となるでしょう。
この時点ではプロセッサのマルチコア化がさらに進むでしょうが、いくらCPUの数を増やしたところで、FSB(フロントサイドバス)経由でメモリにアクセスする方法を採っている限り、そこがボトルネックになってパフォーマンスの足を引っ張ることは避けられません(図1)。
ローカルメモリとクロスバースイッチ経由のアウトサイドメモリとを完全に分けるNUMAのアーキテクチャでなければ、本来の意味でのスケールアウトは実現できないのです。私がNUMAを将来のデータベースのスケーラビリティにおける最重要解と考えている理由も、ここにあります。
私は2005年に、SQL Server 2005開発の指揮を執ったジム・グレイ氏に「今後WinFXなどの新しいテクノロジの登場で、データベースとほかのアプリケーションとの融合が進み、データベースエンジンがサイズの大きなフラットファイルを大量に扱わなくてはならなくなった場合、スケーラビリティを確保するにはどのようにすればよいのか?」と尋ねました。その際に彼が示した答えがNUMAでした。
NUMAならば、CPUはセル単位に独立したメモリバンクを持っていますから、あるセルは「I/O専門」、あるセルは「ネットワーク経由でサーバ間やクライアント間のやりとりに特化する」といった具合に、おのおのの役割を分担する独立したセルがクロスバースイッチで結ばれた構成が考えられますね(図2)。
1つの構成の中でセルを役割ごとに分けていってスケールアウトしていくように、データベースエンジンも進化していくだろうとグレイ氏はいいました。それがいま、具体的なアーキテクチャとして実装され始めているのを目の当たりにすると、彼のデータベース技術者としての洞察の深さと、技術的知見の正確さをあらためて感じずにはいられません。
Copyright © ITmedia, Inc. All Rights Reserved.