高見 直輝
takam****@orega*****
2016年 7月 6日 (水) 15:59:51 JST
高見です。 io_flushコマンドの使い方について自己レスです。 > > > 【環境】 > > > PostgreSQL:9.4.5 > > > PGROONGA:1.0.2 > > > > > > 現在、サーバの電源断によるPGROONGAのインデックスファイル破損を回避するた > > > めに、GROONGAのio_flushコマンドを実行しています。 > > > ※[groonga-dev,03528] からの流れ > > > > > > このコマンドを使用したときに、postgresのプロセスが大量のメモリを確保する > > > のですが、これは正常な挙動なのでしょうか? > > > > はい、正常な挙動です。 > > 今のio_flushの実装はすべてのテーブル・カラムをフラッシュしま > > す。このとき、まだ開いていないテーブル・カラムならそのテーブ > > ル・カラムのファイルを開いてフラッシュします。このファイルを > > 開いたときにリソースを確保するのでメモリー使用量が増えます。 > > 『開いた』というのは、PostgreSQLでSelect文を発行した場合も含まれるのでしょうか? > io_flushのドキュメントを読むと、このコマンドは“Groongaデータベースへの変更量に応 > じて処理が重くなる”とあるのですが、Select文もGroongaデータベースを変更するのでしょ > うか? > また、この処理は“OSが自動的に書き出す”場合にも同様の挙動となるのでしょうか? > 現在、このコマンドを実行するとメモリの大量使用によりOSがハングアップする状況が発生 > しているのですが、コマンドを実行しなくても同様の状況が発生し得るのでしょうか? > > > ただ、まだ開いていないテーブル・カラムはフラッシュする必要は > > ないので、本当は開く必要はありません。近い将来、このケースの > > ときは開かないようにする予定です。 > > 現時点でクラッシュ時の破損を回避しつつ、メモリ消費量を減らす事は可能でしょうか? > io_flushコマンドで--target_nameを指定してインデックスを1つずつ処理することでメモリ > 使用量を抑えられるのは確認したのですが、これでクラッシュ時の問題を解決できるのかが > 不明です。 すいません。recursiveについて理解が足りていませんでした。 io_flush --target_name TABLE_NAME を実行した後に、 io_flush --recursive no を実行すれば良いのですね。 > > > なお、メモリの確保量はテーブル(インデックス?)の数又はサイズに比例して > > > 大きくなっているようです。 > > > 例) > > > データサイズ250MBのテーブルが1つ:135MB > > > 700MB×1つ、300MB×2つ、:960MB > > > > はい、傾向はそうなります。 > > (Groongaの)テーブル・カラムの数とそれらのサイズが増えると > > その分関連するリソースが増えるのでメモリー使用量は増えます。 > > テーブル・カラムの数が増える方が、サイズが増えるよりも、影響 > > は大きいです。 > > つまり、テーブル毎に実行するにしても、作成もしくはtruncate直後のみにした方が良いと > いうことですね。 > > > > テーブルに対して一切の操作を行っていない、つまり、上記Selectコマンドを連 > > > 続実行した場合でも、毎回同程度の容量が確保されています。 > > > > これは、実行する毎にメモリー使用量が増えていくということです > > か?たとえば、↑の「データサイズ250MBのテーブルが1つ」のとき > > は > > > > * 1回実行したら初期状態から135MB増え、 > > * 2回実行したら初期状態から270MB増え、 > > * 3回実行したら初期状態から405MB増え、 > > * ... > > > > ということですか?であればメモリーリークな気がするので調べて > > 直した方がよさそうに思っています。 > > いいえ。1回目を実行して5秒後に2回目を実行してもメモリー使用量が変わらなかったとい > うことです。 > ドキュメントの > メモリー上に多くの変更があるなら、それらをディスクに書き出す処理は重い処理になります。 > の記述から、このコマンドを実行してからDBに一切変更が加えられていない場合、次回実行 > 時には殆どリソースを消費しない(処理が軽い)と考えていました。 > 上記の例で言うと、1回目が135MBなら、DBに変更を加えていない状態で実行された2回目は、 > ほぼ0MBとなるはず、といった感じです。 > > > -- > > 須藤 功平 <kou****@clear*****> > > 株式会社クリアコード <http://www.clear-code.com/> > > 10周年祝いイベント: https://clear-code.doorkeeper.jp/events/48646 > > > > Groongaベースの全文検索システムを総合サポート: > > http://groonga.org/ja/support/ > > パッチ採用 - プログラミングが楽しい人向けの採用プロセス: > > http://www.clear-code.com/recruitment/ > > > > _______________________________________________ > > groonga-dev mailing list > > groon****@lists***** > > http://lists.osdn.me/mailman/listinfo/groonga-dev > > ----------------------------- > 高見 直輝 <takam****@orega*****> > 株式会社オレガ > TEL:03-3267-0150 > FAX:03-3267-0180 > > _______________________________________________ > groonga-dev mailing list > groon****@lists***** > http://lists.osdn.me/mailman/listinfo/groonga-dev ----------------------------- 高見 直輝 <takam****@orega*****> 株式会社オレガ TEL:03-3267-0150 FAX:03-3267-0180