ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと

http://itpro.nikkeibp.co.jp/members/ITPro/oss/20 …

このページにかかれている「Constraint Exclusion」という方式を使用してテーブルのパーティショニングを行ったつもりなのですが、あるデータをSELECT文で検索してみても全てのテーブルに対して検索してしまっているようなのです。
このページに書いてある通りにテーブルを作成したのですが、どこに問題があるのか分かりません・・・。

何か駄目な所があるならば教えてください。お願いします。

A 回答 (5件)

こんにちは。



>気になるのがon,off両方の場合で最初にマスターテーブルを検索している(
>Seq Scan on マスターテーブル名)ようなのです。

例えば、
CREATE TABLE t_base (F1 int,
F2 int,
CONSTRAINT t_base_pkey PRIMARY KEY (F1)
);
でマスタテーブルを定義して

CREATE TABLE t_drive1 INHERITS (t_base);
CREATE TABLE t_drive2 INHERITS (t_base);


とパーティションを作成したとします。


極端な話、t_baseに10万レコードあり、各パーティションに1レコードしかなく、
あるパーティションにある(例えばt_drive2にある)レコードを検索しようとしても
時間的にはほとんどかわりません。

というのは、最適化してもマスタテーブルであるt_baseは必ず検索されるからです。
この場合は(t_baseとt_drive2が検索されると思われます)

ですから、マスタテーブルにはレコードを格納しないで、すべて子テーブルに
記録しないとパーティショニングの効果は薄れるかと思います。

このへんはドキュメントにもかかれていますのでご確認ください。
    • good
    • 0
この回答へのお礼

わかりました やってみます!
長々とお付き合い頂きありがとうございました!

お礼日時:2008/01/15 10:47

こんにちは。



>ですが肝心の処理時間は変わらないままです・・・
設定を変更した後起動しなおしましたか?

EXPLAIN ANALYZE実行したのでしたら、変更前と、
変更後ではコストはどう変化したかを確認してみると
ヒントになるかもしれません。
    • good
    • 0
この回答へのお礼

コストを比較してみるとconstraint_exclusionがonになっている時のほうが少なかったです
しかしTotal Runtimeは変わりませんでした・・・

気になるのがon,off両方の場合で最初にマスターテーブルを検索している(Seq Scan on マスターテーブル名)ようなのです。一応その際のコストは減っているのですが、これでは意味が無いような気が・・・

わかりにくい文ですみません

お礼日時:2008/01/11 09:14

こんにちは。



>一度全てのディレクトリ内を検索してみたのですがpostgresql.confというファイルは見つかりませんでした・・・。

えっ、ないですか。initdbで複写されるとドキュメントにあるのですが。
potgresql.confがなくてPostgreSQLが起動できるかどうかも
やったことがないのでわからなく、また現状がどうなっているか想像もつかないのですが、

>これは新たに作成しなければならないんでしょうか?
当然、必要不可欠な設定ファイルです。
私なら再インストールまで考慮にいれます。
プラットフォームが何かわかると具体的なコメントがつくかもしれません。
    • good
    • 0
この回答へのお礼

見つかりました
そしてパラメータもonにできました(showコマンドで確認もしました)

explainオプションで試してみたところ条件に該当するテーブルの部分のみ読み込んでいることが確認できました
ですが肝心の処理時間は変わらないままです・・・
何故なんでしょうか?

お礼日時:2008/01/10 19:03

こんにちは。



>postgresql.confというファイルはどこにあるのでしょうか・・・
普通はdataディレクトリにあります。

または、pgAdminIIIでスーパーユーザでログインして、
ツール→サーバ構成からでも見られます。
    • good
    • 0
この回答へのお礼

一度全てのディレクトリ内を検索してみたのですがpostgresql.confというファイルは見つかりませんでした・・・。
/usr/share/pgsqlにpostgresql.conf.sampleというファイルならあったのですが。

これは新たに作成しなければならないんでしょうか?

お礼日時:2008/01/10 09:20

こんにちは。


確認ですが、postgresql.confのconstraint_exclusionパラメータは
有効になってますよね?
    • good
    • 0
この回答へのお礼

すみません
postgresql.confというファイルはどこにあるのでしょうか・・・
今使用しているデータベースは別人が作った物なのでよくわからないのです

無知ですみません・・・

お礼日時:2008/01/09 09:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す