web-dev-qa-db-ja.com

SQLデータベースのサイズ要件を計画するためのツール

一部のSQLServer AnalysisServices用のSQLデータウェアハウスのセットアップを開始する準備ができました。スライスしてダイスするデータは、私が管理していないオフサイトデータベースに存在するため、定期的なジョブを設定して、新しいエントリを取得し、自分のバージョンのに挿入することを考えています。テーブル。

データベースのスペース要件を計画するのに役立つ優れたツールがあるかどうか疑問に思っています。私が興味を持っているテーブルは、わずか5か月で、すでに450万件近くのレコードを取得しており、来年のこの時点までに、月に300万から400万件のレコードを生成できると予測しています。

私が探しているのは、テーブル定義をフィードして、10億行に必要なディスク容量を教えてくれるものだと思います。

ありがとう。

編集


さて、Excelを使用して、varchar(1000)がすべての単一レコードで最大で使用されるという最悪のシナリオを使用して、レコードあたり理論的に1098バイトを考え出しました。

1か月あたり400万レコードで、1年あたり4800万レコードであり、最悪の場合、1年あたり50ギガのディスク容量が必要です。これをvarchar(255)にドロップすると、年間16ギガではなく、varchar(50)では年間約6.5ギグになります。

私よりも優れたDBAを持っている人がいて、私が拠点から離れているかどうかを教えてください。

編集#2


ここで要求されているのは、テーブルの定義です。

Type             Size
int              4
int              4
int              4
datetime         8
Decimal(19,5)    9
int              4
int              4
varchar(1000)    1000
int              4
int              4
smalldatetime    4
int              4
int              4
int              4
int              4
decimal(9,2)     5
smallint         2
datetime         8
decimal(18,2)    9
bit              1
int              4
int              4

すべてのフィールドが最大で使用されている場合、合計1098バイト。

2
NA Slacker

これを行うツールを私は知りません。ただし、少し面倒ですが、行の列タイプに基づいて自分で計算することができます。 _create table_スクリプトを出力してスクリプトにフィードすると、PowerShellを作成して支援できる可能性があります。

たぶん、すべてのintを検索してカウンターに追加し、各データ型で同じスクリプトを実行すると、簡単な乗算を実行して、約テーブルサイズ。すべてのvarchar(50)およびchar(10)データ型のサイズを取得するのはおそらくやや難しいでしょうが、ここでも、PowerShellの魔法が少し役立つ可能性があります。

更新


私もあなたと同じ結論に達しました。最悪の場合、レコードあたり1098バイトです。あなたはあなたのデータを知っていますが、あなたの編集に基づいて、あなたのデータが多くのレコードでvarchar(1000)より少なくなる可能性が高いようです。これにより、この場合、すべてのレコードでスペースを節約できるため、最良の場合、レコードあたり98バイトになります。もし私があなたなら、この情報を使ってあなたがすでに持っているデータをチェックし、このvarchar(1000)フィールドの平均の長さのベースラインを考え出し、その平均を使ってニースの中央値を計算します。

1
Nate