
http://itpro.nikkeibp.co.jp/members/ITPro/oss/20 …
このページにかかれている「Constraint Exclusion」という方式を使用してテーブルのパーティショニングを行ったつもりなのですが、あるデータをSELECT文で検索してみても全てのテーブルに対して検索してしまっているようなのです。
このページに書いてある通りにテーブルを作成したのですが、どこに問題があるのか分かりません・・・。
何か駄目な所があるならば教えてください。お願いします。
No.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が検索されると思われます)
ですから、マスタテーブルにはレコードを格納しないで、すべて子テーブルに
記録しないとパーティショニングの効果は薄れるかと思います。
このへんはドキュメントにもかかれていますのでご確認ください。
No.4
- 回答日時:
こんにちは。
>ですが肝心の処理時間は変わらないままです・・・
設定を変更した後起動しなおしましたか?
EXPLAIN ANALYZE実行したのでしたら、変更前と、
変更後ではコストはどう変化したかを確認してみると
ヒントになるかもしれません。
コストを比較してみるとconstraint_exclusionがonになっている時のほうが少なかったです
しかしTotal Runtimeは変わりませんでした・・・
気になるのがon,off両方の場合で最初にマスターテーブルを検索している(Seq Scan on マスターテーブル名)ようなのです。一応その際のコストは減っているのですが、これでは意味が無いような気が・・・
わかりにくい文ですみません
No.3
- 回答日時:
こんにちは。
>一度全てのディレクトリ内を検索してみたのですがpostgresql.confというファイルは見つかりませんでした・・・。
えっ、ないですか。initdbで複写されるとドキュメントにあるのですが。
potgresql.confがなくてPostgreSQLが起動できるかどうかも
やったことがないのでわからなく、また現状がどうなっているか想像もつかないのですが、
>これは新たに作成しなければならないんでしょうか?
当然、必要不可欠な設定ファイルです。
私なら再インストールまで考慮にいれます。
プラットフォームが何かわかると具体的なコメントがつくかもしれません。
見つかりました
そしてパラメータもonにできました(showコマンドで確認もしました)
explainオプションで試してみたところ条件に該当するテーブルの部分のみ読み込んでいることが確認できました
ですが肝心の処理時間は変わらないままです・・・
何故なんでしょうか?
No.2
- 回答日時:
こんにちは。
>postgresql.confというファイルはどこにあるのでしょうか・・・
普通はdataディレクトリにあります。
または、pgAdminIIIでスーパーユーザでログインして、
ツール→サーバ構成からでも見られます。
一度全てのディレクトリ内を検索してみたのですがpostgresql.confというファイルは見つかりませんでした・・・。
/usr/share/pgsqlにpostgresql.conf.sampleというファイルならあったのですが。
これは新たに作成しなければならないんでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
reindex と update のデッドロック
-
MySQL、Accessを利用したDBの設計
-
MicrosftAccessの分割について
-
「テーブルに座って……」という...
-
ColdFusionのfor文を...
-
すっきりとしたSQL文にしたいの...
-
Access2000でAccess97のテーブ...
-
オーダーの覚え方について
-
MS-ACCESS VBA で外部のMDBに...
-
男性と2人で飲食店に行きテーブ...
-
お金持ちのテーブル
-
SQL*LoaderでCSVから指定した列...
-
プライマリキーとは
-
同じテーブルを結合して前回の...
-
スーパーコンピュータや量子コ...
-
下記、問題に対しての解答が以...
-
まるいテーブル 円い 丸い 漢字...
-
VBでSQLServer2000のあるテーブ...
-
SNMPでスイッチのMACアドレステ...
-
AC2000のクエリで重複データか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SELECT 文の NULL列は?
-
テーブルに存在しない列をselec...
-
SQLにて指定日付より前、かつ最...
-
SQLでUPSERTを一度に複数行やる...
-
PostgreSQLの断片化の状況を確...
-
単純なselectが遅くなるのです...
-
MS Access から PostgreSQL へ...
-
javaでデータベース上のテーブ...
-
2つのテーブルで引き算 postgres
-
Postgresqlのレポート機能について
-
reindex と update のデッドロック
-
Postgresのデータ領域の拡張に...
-
デットロック回避策(autocommit...
-
テーブルにcsvファイルをインポ...
-
PostgreSQL レコードからアイテ...
-
PostgreSQL 8.0.2 の ERROR: r...
-
同一カラムに複数条件指定
-
備品管理のデータベースについて
-
PostgresSQLでテーブル定義の抽...
-
DISTINCTとGROUP BYの違い
おすすめ情報