[pgsql-jp: 39652] Re: データの断片化
ichikawa kenji
ichikawa @ fancs.com
2008年 11月 18日 (火) 19:57:11 JST
市川 健児 です。
お返事、ありがとうございます。
現在は、データベースそのものを pg_dump でダンプして、
そのダンプファイルを新たしいデータベースに読み込んで、
RENAME しているため、特定のテーブルのみを再構築する方法だと
短時間で済みそうですね。
こちらも、アプリケーションを停止できるときに
試してみます。
On Tue, 18 Nov 2008 19:27:54 +0900
坂本 光弘 <msakamoto @ ybm.jp> wrote:
> こんにちは
>
> うちでは以下のようなことをやってます。
> これだと、実行時にユーザ側での更新に影響が出るかもしれませんが、検索ぐ
> らいであれば業務を中断させずにできますので、負荷の少ない時間帯を見つけ
> て流すといいかもしれません。
>
> これだと、vacuum fullとreindexかけたのと同じくらいの効果が出ると思いま
> すよ。
>
> ただし、テーブルの大きさによっては予定以上に時間がかかったりするかもし
> れませんのでやるときには気を付けてくださいね。
>
> begin;
> --tbl_Aをtbl_Bにコピーする。
> create table tbl_B as select * from tbl_A;
>
> --tbl_Aを削除する。
> drop table tbl_A;
>
> --tbl_Bをtbl_Aにリネームする。
> alter table tbl_B rename to tbl_A;
>
> --インデックスを作り直す。
> create unique index tbl_A_pkey ON tbl_A(cd);
>
> commit;
>
> 注意)
> ・制約を入れている時にはうまく動かないかもしれません。
> ・tbl_Bがないことは確認してください。
> ・インデックスは自分で貼りなおす必要があります。事前にtbl_Aのインデッ
> クスを調査してください。
> ・上記のSQLの意味が分からない人は決して手を出さないでください。W
>
>
> ichikawa kenji <ichikawa @ fancs.com> wrote:
>
> >
> > 市川 健児 です。
> >
> > PostgreSQL 8.1.3 を運用しておりますが、
> > 特定のテーブルに対する更新が多く、データの断片化により、
> > PostgreSQL を運用しているサーバが高負荷状態になってしまい、
> > アプリケーションのパフォーマンスに影響が出ております。
> >
> > 24時間稼動を前提としているデータベースのため、
> > 通常の vacuum のみを一日一回、実行し、
> > full vacuum は実行しておりません。
> >
> > 現在は、ほぼ月に一度程度発生する、 高負荷状態に陥ったときは、
> > アプリケーションを停止させ、
> > データベースそのものを pg_dump を使ってダンプさせて、
> > データベースを再構築することで対応しております。
> >
> > 対応として、tablespace の利用や PostgreSQl 8.3 への
> > アップグレードを考えておりますが、私と同じようにデータの断片化により、
> > パフォーマンス劣化を経験された方からのアドバイスをいただきたく、
> > メーリングリストに投稿させていただきました。
> >
> > よろしくお願いいたします。
> >
> >
> >
> >
> > ------------------------------
> > ichikawa kenji
> > mailto:ichikawa @ fancs.com
> > http://www.fancs.com/
>
> --------------------
> さかもと
> mail:msakamoto @ ybm.jp
> --------------------
------------------------------
ichikawa kenji
mailto:ichikawa @ fancs.com
http://www.fancs.com/
pgsql-jp メーリングリストの案内