dポイントプレゼントキャンペーン実施中!

お世話になります。

PostgreSQLにて、大量データ(40万件ぐらい)のテーブルに、下記処理を行ったところ、処理速度が異様に低下してしまいました。
・10行くらいのカラムを追加
・デフォルト値制約を設定
・追加したカラムにデフォルト値をアップデート

一応、VACUUM ANALYZEは、かけてはいたのですが、処理速度は向上せずに、VACUUM FULLにて対応したところ、速度は元に戻りました。
ですが、カラム追加をする毎にVACUUM FULLをかけるには、ちょっと時間がかかり過ぎで、他に良い方法が無いか悩んでおります。

何か、良い方法はありませんでしょうか?

宜しくお願い致します。

A 回答 (1件)

PostgreSQLのバージョンは何ですか?



>・10行くらいのカラムを追加

10行とは?
10カラムを追加ですか?

データ件数は何件あるのですか?

>・追加したカラムにデフォルト値をアップデート

格納済の全行に対し、ディフォルト値でupdateしているのですか?
そんなことすれば、物理的な格納位置が乱れて検索などが遅くなって当然だと思います。格納済の行の場合、追加した列はnullで受け取ることに問題があるのでしょうか?

この回答への補足

ご回答ありがとうございます。
PostgreSQLのバージョンは8.2.1です。

>10行とは?
>10カラムを追加ですか?

はい。
10カラムを追加と言う意味です。
言葉足らずにすみません。

>格納済の全行に対し、ディフォルト値でupdateしているのですか?
>格納済の行の場合、追加した列はnullで受け取ることに問題があるのでしょうか?

はい。
やはり、nullが入ってきた場合の処理を入れなくてはならないので、デフォルト値は入れておきたいです。

>物理的な格納位置が乱れて検索などが遅くなって当然だと思います。

物理的な位置というのは、VACUUM ANALYZE などでは変わらないということでしょうか。

そういった場合は、VACUUM FULLを行うしか、対応策は無いということでしょうか?

他に対応策があれば、ご教授願えませんでしょうか。
宜しくお願い致します。

補足日時:2008/09/05 20:38
    • good
    • 0

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

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