トップ回答者
データベースの分割について

質問
-
現在、SQLServer2008を使用しています。
1つのデータベースの中に約300テーブルが存在します。
※レコード件数:最大=600万件、最小=100件
速度改善をするにあたり、まず、不要なデータの削除を行い、
その後、チューニング、SQLの見直し等行っていく予定でいるのですが
以下のような方法も速度改善に効果があるのでしょうか?
案.グループ(マスタ関連、トラン関連、サマリ関連など)毎のデータベースに分ける
SampleDB --> SampleDB(メイン) ・・・以下のデータベースのシノニムを作る
--> MasterDB
--> TranDB
--> SummaryDB
接続するデータベースは現状通り、SampleDBへ
テーブル名もこれまで同じにするがデータベースを分けるためSampleDBへシノニムを作成する
ご教授の程よろしくお願い致します。
回答
-
レコード件数からエンタープライズ向けのサーバーではないという前提でお話します。
速度改善を目的としてデータベースを分割するのであれば、HDDを物理的に分けないと意味はないと思います。
この場合でしたら、MasterDB、TranDB、SummaryDBに各一つで3つの物理HDDが必要となります。
通常はOSと別ドライブにSQLServerのデータを配置すると思いますので、サーバーには4つのHDDが必要かと思います。
さらにLog用にHDDが必要になるかとおもいますので、HDD5台です。肝心の効果ですが、上記のようにHDDを増設して正しく設定したとしても、ほとんど早くはならないでしょう。
実際のテーブル設計を見ていないのでなんともいえないですが、最大600万件程度のレコード数のシステムでチューニングが必要なほど遅いということは、設計があまりよろしくないか、ハードウェアが遅いということではないかと思われます。チューニング、SQLの見直しは非常にコスト(人件費)がかかるので、ハードウェアを増強するほうがコストがかからずに済むのではないでしょうか。
メモリ増設&HDDからSSDに乗せ換えで相当早くなると思います。
まずはこのあたりからやってみてはどうでしょうか。個人的な意見で恐縮ですが、ご参考になれば幸いです。
すべての返信
-
レコード件数からエンタープライズ向けのサーバーではないという前提でお話します。
速度改善を目的としてデータベースを分割するのであれば、HDDを物理的に分けないと意味はないと思います。
この場合でしたら、MasterDB、TranDB、SummaryDBに各一つで3つの物理HDDが必要となります。
通常はOSと別ドライブにSQLServerのデータを配置すると思いますので、サーバーには4つのHDDが必要かと思います。
さらにLog用にHDDが必要になるかとおもいますので、HDD5台です。肝心の効果ですが、上記のようにHDDを増設して正しく設定したとしても、ほとんど早くはならないでしょう。
実際のテーブル設計を見ていないのでなんともいえないですが、最大600万件程度のレコード数のシステムでチューニングが必要なほど遅いということは、設計があまりよろしくないか、ハードウェアが遅いということではないかと思われます。チューニング、SQLの見直しは非常にコスト(人件費)がかかるので、ハードウェアを増強するほうがコストがかからずに済むのではないでしょうか。
メモリ増設&HDDからSSDに乗せ換えで相当早くなると思います。
まずはこのあたりからやってみてはどうでしょうか。個人的な意見で恐縮ですが、ご参考になれば幸いです。