5

各テーブルに予測値が入力されると、データベースのデータ サイズを見積もる必要があります。少なくとも、データとインデックスに使用されるサイズを含める必要があります。

SQL Server 2000 には、このようなツールがあり、テーブルごとのレコード数を指定すると推定サイズが生成されました (SQL 2000 リソース キットに同梱されていたと思います)。2000年または2005年用のこのツールは見つかりません:(

sp_spacedused については知っていますが、データベースに値を事前に入力する必要があり、計算するシナリオが潜在的に多いため、それはうまくいきません。

4

3 に答える 3

2

ツールを使用してダミーデータを生成することを検討しましたか?

本番データベースのサイズを適切に見積もる(つまり、代表的なデータを作成してからそれを因数分解する)のに十分なデータを含むテーブルを作成できます。

Red Gates SQLDataGeneratorなどのツールが役立つ場合があります。

http://www.red-gate.com/products/SQL_Data_Generator/index.htm

乾杯、ジョン

于 2009-02-13T08:45:01.970 に答える
2

あなたの場合、私はデータベースを作成し、代表的なデータのサンプルを入力して、テーブルのサイズがどのように見えるかを確認します。

この SQL スクリプトは、すべてのテーブルに対してそれを実行します。すべてのテーブルで sp_spaceused を呼び出す必要はありません。

SELECT 
    t.NAME AS TableName,
    i.name as indexName,
    sum(a.total_pages) as TotalPages, 
    sum(a.used_pages) as UsedPages, 
    sum(a.data_pages) as DataPages,
    (sum(a.total_pages) * 8) / 1024 as TotalSpaceMB, 
    (sum(a.used_pages) * 8) / 1024 as UsedSpaceMB, 
    (sum(a.data_pages) * 8) / 1024 as DataSpaceMB
FROM 
    sys.tables t
INNER JOIN      
    sys.indexes i ON t.OBJECT_ID = i.object_id
INNER JOIN 
    sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
INNER JOIN 
    sys.allocation_units a ON p.partition_id = a.container_id
WHERE 
    t.NAME NOT LIKE 'dt%' AND
    i.OBJECT_ID > 255 AND   
    i.index_id <= 1
GROUP BY 
    t.NAME, i.object_id, i.index_id, i.name 
ORDER BY 
    object_name(i.object_id) 
于 2009-02-13T17:59:52.633 に答える
2

前回これを行ったときは、Excel、鉛筆、封筒の裏、知識に基づいた推測作業でした。答えはそれほど不正確ではありませんでした。最近はディスクが非常に安価で入手可能であるため、最大のDBを除くすべてが小さな(っぽい)サーバーで実行されるため、深刻なデータ量について話していると思います。

予想される行数と保存するデータの種類の詳細を教えてください。ところで、DB 内の Blobs/images/video には対応していません。スケーリングすると見苦しいものになります。

于 2009-02-13T08:51:03.733 に答える