[pgsql-jp: 37763] Re: INDEXを残したまま大量データを高速に挿入したい

Bobby amidtown @ yahoo.co.jp
2006年 12月 7日 (木) 15:03:12 JST


湯沢です、返信が遅くなりました。

色々と参考しなるご意見有難うございます。

>Windows Server ですから、それなりのハードウエアの
> 筈ですので・・・
Xeon 5110 I.6GHz 4GByte DISK 500GByteを使用しています。

> 数千万レコードを有する単一テーブルは作成したくありません。
> (たとえ、商用DBを使用したとしても)
> テーブル・パーティショニングを検討されたらいかがでしょうか?

テーブル・パーティショニングについてですが、単一物理TABLEには
1千万件前後になる様にしてパーティショニングしてあります。

どうも問題は、同時に集計結果を更新(UPDATE)している別TABLEが存在しますが、そ
のTABLEが挿入速度を半減している要因のようです。
挿入件数のおよそ10%位の件数割合で別テーブルに更新が発生しています(現在は)
このときFSMに入りきらない倫理削除レコードが出来Dead Spaceになる領域が増え格
納速度に影響しているのではないかと考えました。

VACUUM FULLを行いDead spaceをOSに返却してやろうと考えVACUUM FULLをTABLE指定
行いました。
1回のVACUUM FULL VERBOSE ”TABLE名指定”で指定したTABLEの全てのDead spaceが
OSに返却されないようですが、そういう仕様なのでしょうか?
多数回行うとVERBOSEで出力されるメッセージの最終行に
INFO:  "TABLE名": scanned 3000 of 3093 pages, containing 265976 live rows
and 0 dead rows; 3000 rows in sample, 274221 estimated total rows

この "0 dead rows"になるまでVACUUM FULL VERBOSE ”TABLE名指定”を何回も行い
その後にデータの格納を再び行った結果、格納速度が回復しました。
VACUUM FULL VERBOSE ”TABLE名指定”で複数回行うのではなく1回で、指定した
TABLEのDead spaceを返却して欲しいのですが可能でしょうか?


--------------------------------------
Yahoo! JAPAN - Red Ribbon Campaign 2006
http://pr.mail.yahoo.co.jp/redribbon/



pgsql-jp メーリングリストの案内