[pgsql-jp: 35622] Re: ANALYZE で oid が変化してしまう

Kazawa Tsunehisa digitune @ gmail.com
2005年 6月 29日 (水) 18:10:24 JST


加澤です。取り急ぎ。

05/06/29 に Tatsuo Ishii<t-ishii @ sra.co.jp> さんは書きました:
> 石井です.
> 
> gdbのバックトレースは,オプティマイズがかかっているとときどき嘘を付く
> ので....
> 
> これは推測ですが,統計情報が結構大きくなってしまったので,統計情報を圧
> 縮して新たなタプルに納める必要が出てきたのではないでしょうか.で,ここ
> でnewoid()が呼ばれたと.
> 
> もしかして,default_statistics_target とか,そのあたりの
> postgresql.confの設定が2台のマシンで違っているということはないですか?

postgresql.conf 等の設定は厳密に合わせてあるのですが、入っているデータは
大いに異なります。pg_largeobject テーブルに格納されているデータによっては、
newoid が呼ばれたり呼ばれなかったりする?

もしそうだとするといくつか気になる点があって、

・そもそもどうして毎回 newoid する必要があるのか?データの更新が全くない
状態で ANALYZE を繰り返した場合も、毎回必ず oid が増えていきます。このあ
たりの挙動はもう少しソースを呼んで確認したいと思っています。

・格納されているデータによっては oid が増えることがある、となると、データが増
えて来た場合、Primary 側と Secondary 側で ANALYZE 時にランダムにサンプ
リングされた行の違いから、片側では oid が増え、もう片方では増えない、という
事態が起こりそう。そうすると一発で縮退です。

最終的に後者の可能性が想定されるとなると、やっぱり pgpool を経由で Large
Object を使うのは難しい、という結論になってしまいますね…。

もう少し調べてみます。

-- 
Tsunehisa KAZAWA
http://www.digitune.org



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