2017-10-19 3 views
-1

特定のテーブルで使用されるディスク上の領域を取得することは可能ですか?何百万人のユーザーがテーブルに格納されていて、すべてのユーザーおよび/またはその1人を格納するために必要な容量を知りたいとします。SQL Serverテーブルで使用されている領域の見分け方は?

更新

私はすぐ後に必要なデータを取得するために、メモリ内にある特定のテーブルからいくつかのフィールドをキャッシュするのRedisを使用することを計画しています。だから私はどれくらいのスペースを取るかを計算する必要があり、それでメモリに収まるかどうかは分かりません。間違いなく、テーブルの内部で使用するデータ型によって異なりますが、テーブルが数十のフィールドで構成されている場合、これを1つ1つカウントするには時間がかかりすぎます。

SQL Serverには適していませんが、MySQLにはまさにそのような回答があります。How can you determine how much disk space a particular MySQL table is taking up?あなたはそれを確認して何を意味するのか確認できます。

+2

これは、使用するデータ型によって異なります。 –

+0

これは簡単にはできません。各列に必要な最小サイズを計算し、それらを合計して基本データの記憶域要件を調べることができますが、列に関連付けられた索引の領域に加えて、各列と行にもオーバーヘッドが発生します。そのテーブルのサイズの一部と見なすことができるデータベース自体に関連するオーバーヘッド、およびその他の要因が含まれます。とにかくそれとはどのような違いがありますか?あなたの懸念事項は、データベース全体のサイズであり、単一のテーブルや行ではありません。 –

+1

SSMSをお持ちの場合は、オブジェクトエクスプローラでテーブルを右クリックし、[プロパティ]に移動して[ストレージ]ページを表示します。フィールドData spaceはそのテーブル内のデータのサイズですが、おそらくテーブルのオーバーヘッドコストの一部は含まれていません。 – zambonee

答えて

1

SSMSをお持ちの場合は、オブジェクトエクスプローラでテーブルを右クリックし、[プロパティ]に移動して、[ストレージ]ページを表示します。フィールドData spaceはそのテーブル内のデータのサイズですが、おそらくテーブルのオーバーヘッドコストの一部は含まれていません。

0

テーブルと列、およびすべてのフィールドのデータ型を使用して、完全なデータベーススキーマを確認する必要があります。これらの情報がなければ、それは単なる幸運な推測です。ここでは、各データ型のサイズの有用なチートシートです:https://www.connectionstrings.com/sql-server-2012-data-types-reference/

は、次に、あなただけの数学を行うと、これは本当に、拡張されたレコード

0

のあなたの番号であるXのために必要なスペースを計算する必要がありますそれは直接質問に答えないからです。

ほとんどの場合、列のサイズを使用してそれらを加算し、行数を掛けるだけです。これは見積もりを低迷させますが、それは妥当です。そして、(あなたがどのように型を扱うかによるが)データをエクスポートするサイズの妥当な見積もりかもしれない。

つまり、テーブルの格納は難しい問題です。あなたが考慮する必要があるいくつかの要因は次のとおりです。

  • 個々のフィールドのサイズ。これは、いくつかの型がさまざまなサイズを持つため、データが完全に依存しているため、やや難しくなります。
  • テーブルが占有しているページの数(または各データページがどれくらいいっぱいであるかなど)。これは、各テーブルの使用状況によって異なる可能性があることに注意してください。
  • 「オーバーフロー」データタイプによって占有されているページ数(varchar(max)など)。
  • データページが圧縮または暗号化されているかどうか。
  • テーブルのインデックスです。
  • 各インデックスページのフルサイズ。

また、間違いなく、他の関連する内部的な詳細を除外しました(hereはページレイアウトを開始する場所です)。

つまり、簡単な答えはありません。 2つの異なるシステム上の同等のテーブルは、非常に異なる量の空間を占有する可能性があります。これは、同じシステム上の異なる時刻にある「同じ」テーブルに当てはまります。

データベースを扱う際の一般的な答えは、行数*行サイズよりも多くのスペースが必要だということです。ある時点で3の係数を使用して呼び戻しているようです。一般に、ストレージはかなり安いので、これはデータベースを使用する制限要因ではありません。

関連する問題