morit****@razil*****
morit****@razil*****
2007年 9月 20日 (木) 17:44:56 JST
こんにちは。森です。 ずいぶん時間が空いてしまったのですが、 windows環境で論理空間の消費を抑えられるかも知れない方法を実装してみました。 といってもごく単純な考えなのですが、 SEN.i.c*ファイルの読み書きに関しては、MapViewOfFileを使用せず、 すべてReadFile, WriteFileで処理すます。 (SEN, SEN.i, SEN.lファイルについては従来どおりMapViewOfFileを使用します) インデックスが大きくなると、主にSEN.i.c*ファイルが成長しますので、 その読み書きにメモリを消費しなくなれば、論理空間の枯渇も抑えられるのではないかと。 Senna rev552ではこの挙動になっています。 (WIN32以外の環境での挙動は変わっていません) もしよろしければお試し下さい。 >>> iwasa****@nttda***** さんは書きました: > 岩崎です。 > > > ちょっとWindwosで大きなデータベースを作ったので、 > 遅ればせながら2GB超のインデックスを試してみました。 > 予想に反して?インデックスが正常にできました。 > > 環境は:: > > OS:WindowsXP Professinal(32bit) > PostgreSQL:8.2.4 > Senna:1.0.8 > Ludia:1.2.0 > > で、作成したインデックスのサイズは:: > > 844292.SEN 71434240 > 844292.SEN.i 181338112 > 844292.SEN.i.c 1073676288 > 844292.SEN.i.c.001 1073741824 > 844292.SEN.i.c.002 767819776 > 844292.SEN.l 42074112 > > という感じです。 > 同じ単語が500万回くらい出現するようにしてみてます。 > > 問題は > > http://support.microsoft.com/kb/830783/ja > > のあたりだったりするのでしょうか? > > > -- > 岩崎 正剛 / IWASAKI Masatake > mailto:iwasa****@nttda***** > > > -----Original Message----- > From: ludia****@lists***** > [mailto:ludia****@lists*****] On Behalf Of Shingo > Kawamura > Sent: Tuesday, August 07, 2007 5:22 PM > To: ludia****@lists***** > Subject: [Ludia-users 73] Re:CreateIndexでエラー > > 河村です。 > > > Windows上でmmapに相当するAPIの調査を進めてきました。 > > その結果、 > > 論理空間を枯渇させないような実装の方向性が > > ある程度分かってきました。 > > やはり、あの実装では問題がありそうですか…。 > テストが足りないまま出してしまい申し訳ありませんでした。 > > > いまだ実験・実装等に着手できていないのですが、 > > 将来的にはi.c.xxxファイルが肥大しても大丈夫となるように > > 開発を続けております。 > > 期待しています! > > 私の方でも、もう少し見てみたいと思っています。 > > ----- Original Message ----- > From: "Tasuku SUENAGA" <a****@razil*****> > To: <ludia****@lists*****> > Sent: Monday, August 06, 2007 9:20 PM > Subject: [Ludia-users 72] Re: CreateIndexでエラー > > > > 末永です。 > > > > Windows上でmmapに相当するAPIの調査を進めてきました。 > > その結果、 > > 論理空間を枯渇させないような実装の方向性が > > ある程度分かってきました。 > > > > いまだ実験・実装等に着手できていないのですが、 > > 将来的にはi.c.xxxファイルが肥大しても大丈夫となるように > > 開発を続けております。 > > > > Shingo Kawamura さんは書きました: > >> ご無沙汰しています。河村です。 > >> > >> 「1プロセス内で2GB」なのか、「1インデックスで2GB」なのか > >> を特定しようと思い、以下の調査を行いました。 > >> > >> CSV_ODD > >> と > >> CSV_EVEN > >> 二つのテーブルを用意して、各インデックスが1.5GB弱で、 > >> 合計が3GB以上になるようにデータ量を調節して、 > >> 1プロセス内で各テーブルへのInsertを交互に行ってみたのですが > >> 正常に動作完了しました。 > >> #/3GBスイッチははずしています > >> > >> 各テーブルのインデックスサイズは以下の通りです。 > >> ・CSV_ODD > >> サイズ:260,880 KB > >> --- > >> .SEN 12,416 KB > >> .SEN.i 84,160 KB > >> .SEN.i.c 524,096 KB > >> .SEN.i.c.001 523,264 KB > >> .SEN.i.c.002 492,544 KB > >> .SEN.i.c.003 145,408 KB > >> .SEN.l 8,320 KB > >> --- > >> ・CSV_EVEN > >> サイズ:260,880 KB > >> --- > >> .SEN 12,416 KB > >> .SEN.i 84,160 KB > >> .SEN.i.c 524,096 KB > >> .SEN.i.c.001 522,496 KB > >> .SEN.i.c.002 513,792 KB > >> .SEN.i.c.003 144,896 KB > >> .SEN.l 8,320 KB > >> --- > >> > >> このテストでもエラーが起きるかな、と思ったのですが、 > >> 正常終了してしまいました。^^; > >> > >> 最悪、このような方法で動作できそうなら、 > >> 件数でテーブルを振り分けて、全テーブルをUNIONして使う、 > >> という方法もありかなと思っています。 > >> > >> > >> ----- Original Message ----- > >> From: <morit****@razil*****> > >> To: <ludia****@lists*****> > >> Sent: Thursday, July 12, 2007 2:11 PM > >> Subject: [Ludia-users 70] Re:CreateIndexでエラー > >> > >> > >>> 森です。お世話になっています。。 > >>> > >>>> パッチを当てて再度実行してみました。 > >>>> --- > >>>> 07/11:06:49:10.021|A| MapViewOfFile failed #8 <400293888> > >>>> 07/11:06:49:10.071|A| io_win_map(8183, 287121676) failed!! > >>> ありがとうございます。 > >>> > >>> ひょっとするとSennaロジックのレベルでちゃんとメモリを解放していないので > はないかと > >>> 考えたのですが、お蔭様でその疑いは晴れました。 > >>> > >>> どうやらUnmapViewOfFile, CloseHandleという手順を踏んでも > >>> 意図したように論理空間が解放できていないように見受けられます。 > >>> > >>> 一点、気にかかっているのは、WIN32_FMO_EACHの場合は、 > >>> CreateFileMappingでoffset + length分のmappingを作成している点です。 > >>> mmapと違ってファイルの途中から一部分だけmappingすることができないので、 > >>> このような手段を取っているのですが、そうすると論理空間を、 > >>> length分ではなく、offset + length分消費してしまうのかも知れません。 > >>> > >>> また、WIN32_FMO_EACHでない場合は、UnmapViewOfFileの際にCloseHandleを発行 > していないので、 > >>> これも問題かも知れません > >>> > >>> 以上、すぐには着手できないのですが、私達の方でも検証してみたいと思いま > す。 > >>> > >>> > >>> -- > >>> mori > > --- > > Tasuku SUENAGA <a****@razil*****> > > > > _______________________________________________ > > Ludia-users mailing list > > Ludia****@lists***** > > http://lists.sourceforge.jp/mailman/listinfo/ludia-users > > _______________________________________________ > Ludia-users mailing list > Ludia****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/ludia-users > > _______________________________________________ > Ludia-users mailing list > Ludia****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/ludia-users > -- mori