[pgsql-jp: 28416] Re: updateの性能を向上

Iwao Watanabe iwao3 @ DSL.gr.jp
2002年 12月 21日 (土) 20:24:39 JST


こんばんは。

----- Original Message ----- 
From: "Tamotsu Ebina" <ebina @ pluto.dti.ne.jp>
To: <pgsql-jp @ ml.postgresql.jp>
Sent: Saturday, December 21, 2002 5:58 PM
Subject: [pgsql-jp: 28412] Re: updateの性能を向上


> 最後は詭弁ですね。
> たかだか40万件の処理に15分もかかるようならRDBMSを使う必要はありません。

もちろん判っていて書きました。実は…

> 
> 私のテストプログラム(Java)で 1,000,000 件のインデックス付の
> テーブルからランダムに約1000件抽出してUPDATEするのに要した時間を
> 参考までに示します。
(snip)

先の投稿には動作マシンのスペックが示されていなかったのです。
DB経験者であれば 速度を気にするなら いかにディスクアクセスしないように
(なるべくメモリのキャッシュだけで動くように) 常に気にしていているはずなのに
そんな基本的なことを伝えないのは 
たぶん素人さんであろうと解釈して先の説明を書きました。

あるいは Postgres(以下PG)がよく知られている商用DBと違って、
恐ろしいほど貧弱なマシンで動作してしまうので
もしかしたらメモリが本当に少ない上に ディスクアクセスが非常に遅い
何世代か前のマシンで動かして、先の質問に出たのかもしれません。

先日まで私の手元にあった CPU 200MHz Memory 97Mbytes
ディスク 2G(購入当時、最大容量でした)なPCで Soralis7 とPGは動きましたが
(メモリが100M程度のPCでは正直Soralis7は厳しかったです)
それだと スキーマの定義がまずいと 40万件もデータがあれば
15分は考えられる速度だと思いました。
そもそもPGを使っているのに、IPアドレスをtextで処理されているようですし…
IPV6を使いたかったのでしょうか? いえ、たぶん単に知らなかったのでしょう。

私の経験上ですが、スキーマ定義が悪くて、SQLをよく知らないのなら
同じマシンで動かす限り PGは速度的に 他の商用RDBMSと
そう差は無いと思います。
(単にその範囲でしかDBMSを触っていないだけなので 鵜呑みにしないように!
クラスタサーバーは私にとって未知の領域です。
どれでも使えるようになって、予定件数だけ実データを入れて実験するのが一番!)

ところで、

> TEXTタイプは互換性から私はほとんど使いません。
> 商用データベースでは桁数が固定ならCHARを可変ならVARCHARを
> 使用するのが一般的だと思います。

一行を一度に処理するバッファサイズに制限がなくなってから
text は oracle の vharchar2 や clob より便利だなぁと思っています。
もちろん ほとんどvarcharを使っていますよ。
いつもでかいテキストと入れられると 困ってしまいますから。







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