お問い合わせ
03-5979-2701
PowerGres
不具合情報

PowerGres Plus 障害情報 (2006 年 8 月 28 日公開)

初出
2006 年 8 月 28 日
最終更新
2006 年 8 月 28 日
====================================================================
PowerGres Plus の新規障害〜管理番号PG50877〜についての情報をお知らせします。

なお、本障害は 2006年8月17日リリースの集約パッチ
 Windows版V2.0  PGPLUS20-04
 Linux版 V1.0  PGPLUS10-11
 Linux版 V1.1  PGPLUS11x-08
 Linux版 V2.0  PGPLUS20x-06
を適用した場合にも発生する可能性があります。
これらのパッチ中の README に、パッチ適用後に、部分インデックスを
定義している場合その部分インデックスの再構築を行なうようにという指示の
記載があります。それに従って部分インデックスの再構築を行なった場合にも
本障害が発生する可能性がありますが、その場合は、本障害情報の
【回避方法】の「・部分インデックスの再構築における現象の回避方法」に
従って回避を行なってください。
================================================================================
【管理番号】
 PG50877

【概要】
 部分インデックスの定義、再構築、部分インデックスが定義されたテーブルに
対する高速コピーによるデータの格納を実行した場合、一時的に大量のメモリを
消費し、メモリ不足になることがある。

【現象】
 以下の条件のとき、PowerGres Plusのバックエンドプロセス(postgres)が
一時的に大量のメモリを消費する。

1) 部分インデックスを定義する。または、
2) 部分インデックスを再構築する。または、
3) 高速コピーにより、部分インデックスが定義されたテーブルに対し、
   データを格納する。

 消費されるメモリ量は、部分インデックスの定義に指定したWHERE句の条件
により大きく異なるが、おおよそ以下の式で表される。
 ここで、(WHERE句の条件に依存する定数)は、通常数百から数千の値となる。

・部分インデックスの定義の場合:
  (WHERE句の条件に依存する定数) × (テーブルの全行数) バイト

・部分インデックスの再構築の場合:
  (WHERE句の条件に依存する定数) × (テーブルの全行数)
    × (REINDEXコマンドにより同時に再構築される部分インデックスの数) バイト

・高速コピーの場合:
  (WHERE句の条件に依存する定数) × (テーブルの全行数)
    × (テーブルに定義されている部分インデックスの数) バイト

【原因】
 部分インデックスの構築時のメモリの獲得処理に誤りがあり、テーブルの
全行数に比例する量のメモリを獲得していた。

【回避方法】
・部分インデックスの定義における現象の回避方法
 1) テーブルに格納されているデータをCOPYコマンドにより、ファイルに
  退避する。
 2) テーブルに格納されているデータを削除する。
 3) 部分インデックスを定義する。
 4) 退避したデータを適切な大きさに分割し、通常のCOPYコマンドを利用
  してテーブルにデータを順次格納する。
  なお、適切な大きさは、通常のCOPYコマンドの実行時にテンポラリ
  ログファイルが満杯とならないよう、テンポラリログ量およびデータの
  1行あたりのサイズを考慮して決定する。

・部分インデックスの再構築における現象の回避方法
 1) 部分インデックスを削除する。
 2) 「部分インデックスの定義における現象の回避方法」により、
  部分インデックスを再定義する。

・高速コピーにおける現象の回避方法
 1) 通常のCOPYコマンドを利用して、データを格納する。この際、格納する
  データの大きさによっては、「部分インデックスの定義における現象の
  回避方法」の4)に提示した方法で、データを適切な大きさに分割して順次
  格納する必要がある。

【発生環境】
 Windows版V1.0  PGPLUS10-07(※)を適用している場合
 Windows版V2.0  PGPLUS20-04を適用している場合
 Linux版 V1.0  PGPLUS10-11を適用している場合
 Linux版 V1.1  PGPLUS11x-08を適用している場合
 Linux版 V2.0  PGPLUS20x-05またはPGPLUS20x-06を適用している場合
 Linux版 V2.1

 ※ PGPLUS10-07 は近日リリース予定です。

【修正予定】
 次期パッチで修正予定。
 Windows版V1.0  PGPLUS10-08
 Windows版V2.0  PGPLUS20-05
 Linux版 V1.0  PGPLUS10-12
 Linux版 V1.1  PGPLUS11x-09
 Linux版 V2.0  PGPLUS20x-07
 Linux版 V2.1  PGPLUS21x-01
================================================================================