多数ユーザー接続時におけるMSDEのパフォーマンスについて


グラフ1 同時に処理を要求した場合の各クライアントの平均応答時間
SQL Server Standardが128同時接続時にやや速い傾向を示した


「5ユーザー接続以下での使用に最適化」は何を示すのか?
 Microsoft SQL Server 7.0(以下SQL Server)と互換性を持つデータベースサーバーだが、MSDEは5ユーザー接続以下での使用に最適化されていると、Microsoftはアナウンスしている。このアナウンスは5ユーザー以上の接続で使用するときに、パフォーマンスが劣化するような印象を与える。
 「5ユーザー接続以下での使用に最適化」の技術的な根拠として、MSDEはワーカースレッドが5つまでに制限されているということが、いくつかのメディアで取り上げられた。しかし、MSDEは多数ユーザーの接続時に5つ以上のワーカースレッドを作成するし、実行時にこれらのスレッドを使用する。また、MSDEのワーカースレッド数の初期設定は、SQL Serverと同じ255であることが確認されている。また、その他の理由も含めて、ワーカースレッド数の制限という根拠は間違ったものだと断定できる(その他の理由については後述するVisual Basic Magazine誌 4月号参照)。

SQL Serverとのパフォーマンスの差
 実測をベースにしたパフォーマンス指標をあらわすグラフ1でも判断できるように、MSDEの多数接続時のパフォーマンスはSQL Serverとほぼ同等であり、Microsoftが言う「5ユーザー接続以下での使用に最適化」の技術的な根拠も実際的な根拠も不明である。
 SQL Serverの売上げを維持するためのマーケティング的な発言だということも考えられる。いずれにしても、低価格、低性能を特徴とする製品が、実は低価格、高性能であるという事実は、決してメーカーとしての良心にもとる行為ではない。
 今回、ここで発表する内容は、Visual Basic Magazine誌 4月号(2000年3月3日発売)に掲載の連載「SQL Server解体新書」のために作成したパフォーマンス指標データを元にしている。記事では、さらに詳しくテスト内容の説明や結果についての解説をしている他、より多面的にSQL Serverとのパフォーマンス比較をおこなっているので、参考にしていただきたい。

パフォーマンス指標とテスト方法について
 SQL Server、MSDEともにライセンス契約によって、ベンチマークの無許可の公開が禁止されているため、ここでは実測をベースにしたパフォーマンス指標という形でしか、情報を提供できないのは残念である。しかし、SQL Serverとの比較という意味での目的は、達成できていると判断する。
 テストは実際に多数のクライアントマシンを接続しておこなうのではなく、一台のクライアントマシンからマルチスレッドでサーバーに複数接続をおこない、その応答時間を計測した。この計測方法は一般的なクライアントサーバーシステムのテスト方法としては厳密ではないが、Hyper GroupWebのようにActive Server Pagesを使い、IISがデータベースサーバーに代理アクセスするようなアーキテクチャを正しくシミュレートしている。テストは十分に厳密におこない、アプリケーションのオーバーヘッド等の影響を、できる限り取り除くように努めた。

MSDEとSQL Serverの比較結果
 グラフ1はMSDE、SQL Server Desktop、SQL Server Standardに同時アクセスをおこない、接続数別に、各クライアントごとの応答時間の平均をグラフ化したものである。例えば128接続の場合は、すべてのクライアントの待ち時間の合計を128で割った値となる。
 128接続の場合に若干SQL Server Standardが高速であることを除けば、計測誤差も考慮すると、ほとんどの接続数でプロダクト間の結果に差がないことがわかる。実際には、このテスト以外にも、データの追加や更新を含むテストを数多くおこなったが、ここで発表したテスト結果とは異なり、128接続時でもSQL ServerとMSDEの間に差がみられなかった。
 ここでは最大128接続までの同時アクセスを検証しているが、現実には128人のユーザーが実運用したとしても、このテストのように全員が同時にアクセスするという状況は、ほとんどありえない。特にHyper GroupWebのように、ステートレスでプログラムが実行されるシステムでは、128ユーザーが比較的高い使用頻度で運用したとしても、常時接続数は5-6程度、最大で25-30程度だと想像される。
 Visual Basic Magazine誌の記事では、そのような実運用時のデータアクセス状況をシミュレートするテストもおこなっているので参考になるだろう。



トップページに戻る