[pgsql-jp: 30586] Re: 画像データベースの作成。

小野 心 shin-ono @ mdsnet.co.jp
2003年 7月 24日 (木) 16:08:14 JST


 小野@mdsです。

Yutaka tanidaさんが03.7.24 3:27 PMに書きました:
>これが示唆しているのは、単に「巨大なデータを扱うためには巨大なメモリが必
>要になる」というだけであって、bytea型自体が必要とするメモリはデータ量に
>対して不当に多いわけではありません。
>
>loについては、このメモリ量を徐々に読み込むことによって削減できる方法が存
>在しますが、それを利用しなければ結局byteaと同じことです。
>

 JDBCでの場合で、他の言語向けドライバーは、異なるかも知れませんが、つい
でにお伝えしておきます。

 PostgreSQLのJDBCドライバーでは、PreparedStatementでバイナリーデータの挿
入時に、バイナリーデータをSQL文としてDBに送るために、エスケープ処理を行っ
ています。

 その関係で、どうしても、バイナリーデータのエスケープ処理結果を保存する
メモリー(元データ+α)を最低限に消費してしまう処理となっています。した
がって、setBytesを使う場合には、呼び出し元が作成したbyte[]のメモリーに加
えてエスケープ処理結果保存用のメモリーを消費する形になります。

 以前に何も考えないで、byteaに20M位のデータを保存していたところ、良くス
レッドが落ちるので調べたところで判明しました。あと、DB側のメモリーの関係
も有ると思いますが、有る程度に大きなデータ含むbyteaが多量にあると、select
の処理も遅くなった経験があります。

 それからは、ラージオブジェクトを使うか、一定サイズごとにデータを区切って
保存する(ラージオブジェクトも中では同じ処理をしているようなので)かで対応
しています。



=====================================================

             Shin Ono(小野 心)      
              System Director

   MINOLTA DIGITAL SOLUTION CO.,LTD
   3-2-1 Kamiosaki, Shinagawa-ku, Tokyo 141-0021 
  TEL:03-5449-2003/FAX.03-5449-2010
-----------------------------------------------------
                      Mailto:shin-ono @ mdsnet.co.jp
                      http://www.mdsnet.co.jp/
=====================================================



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