iwasa****@nttda*****
iwasa****@nttda*****
2006年 12月 18日 (月) 17:56:06 JST
岩崎と申します。はじめまして。 > 継承を利用したテーブル分割をしてみたのですが > テーブル数が16を超えるところぐらいでエラーが発生しました > > pgsenna2: n of indices in use reached max(16) > > 動作としては正しいのですが、インデックス数16がデフォルトは > ちと少ないのではないでしょうか? 全文検索インデックスの場合、メモリの消費量が問題になります。 インデックスを1つ開くごとにまとまった値(デフォルトの設定で130MB前後) のメモリが固定して確保されるため、 16個も開くとPostgreSQLのバックエンドプロセス1つが 2GB近いメモリを使うことになってしまうと思われます。 (現状では1度オープンしたインデックスは そのバックエンドプロセスが終了するまで開きっぱなしになります。) そのため、実際的には検索用のテーブルを別に用意する、 といった運用にした方がよいと思われます。 http://d.hatena.ne.jp/tasukuchan/20061129/1164778826#seemore が参考になります。 > 現状のところ32に変更してリコンパイルを行っておりますが > この辺の項目もドキュメントに追加していただけると助かります これについては、とりあえず、 postgresql.confで設定できるようにする方向で修正したいと思います。 「インデックスの総数は多いが一度に全部使うわけではない」 という利用シーンが多いのであれば、 上限を決めておいて、インデックスをさらに開く場合には 最近使っていないものをクローズするようにする、という方向もありかもしれませ ん。 -- 岩崎 正剛 / IWASAKI Masatake