- - PR -
テーブルサイズによる性能の差について
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-02-08 07:08
みなさん、こんにちは。
同じレコード数のテーブルA,Bがあった場合。 Aのテーブルにはファイル等のデーターが格納され、比較的容量が大きい、 Bのテーブルには大きなデーターが格納されておらず、比較的容量が小さい。 このような状態でSELECTでデータを取得する場合、 A,Bで速度的な性能に大きな違いは出てくるのでしょうか? (A,Bで取得するデータは同じようなものとします。) 質問の背景としましては、 添付ファイルを保存するテーブルを分けて作成すべきか、 ひとつのテーブルにまとめるべきか、迷っております。 |
|
投稿日時: 2006-02-08 08:07
使用するDBによってかわってくるかもしれませんが。
一レコードのサイズが大きいものと小さいものとを同じ件数 引っ張ってきた時に速度差はでるのか、ということとですよね? 大きな差、については環境とデータ件数によるかとおもいますが、 テーブル毎のデータ量が大きい方が、より負荷をかけるとはおもいます。 あとは、A と B が個別に使用される状況があるのか? によってテーブルを分けるか分けないか、を考える必要があると思います。 とりあえず、こんな所でしょうか。 |
|
投稿日時: 2006-02-08 09:09
例えば日付のカラムがあり、その日付にインデックスが付いていて、
その日付を条件としてSELECTするならば、変化はないでしょうね。 気になるのは、もしも、その添付ファイルが無い場合が多いなら、 テーブルが過剰に大きくなる事です。INSERTも遅くなるでしょう。 質問の本題はSELECTなので、関係ないかもしれませんが。 |
|
投稿日時: 2006-02-08 19:46
みなさん回答ありがとうございます。
>気になるのは、もしも、その添付ファイルが無い場合が多いなら、 >テーブルが過剰に大きくなる事です。 DBはPostgreSQLなのですが、 添付ファイルはBYTEA型のフィールドに定義しました。 この場合は、添付ファイルが無い場合は、 テーブルサイズはそれ程大きくならないと思っていたのですが、 どうなのでしょうか。 ご回答よろしくお願いいたします。 |
|
投稿日時: 2006-02-08 20:15
http://www.postgresql.jp/document/pg812doc/html/storage-toast.html
このあたりの話が思考の手助けになるかと思います。 |
|
投稿日時: 2006-02-09 09:17
PostgresSQLは分かりません…… しかし可変長を使うなら、パフォーマンスは、
DBとマシンパワーの影響を大きく受けると思うので、出来るだけ実機で試すべきですよ。 >TOAST PostgresSQLは学術的でカッコいいですねえ。 自分はとりあえず再利用しやすい形で作って、パフォーマンスの悪い所を 何かベンダー依存の機能で何とかするやり方になれているので、ここまで考えて 設計するのには憧れます。 |
1