LoginSignup
5
5

More than 5 years have passed since last update.

Groongaのdumpとgrndumpのメモリ消費の違い

Last updated at Posted at 2013-12-04

Groongaではdumpコマンドを利用すると、データベースのダンプを取ることができます。

8.3.14. dump — Groonga v3.1.0ドキュメント

しかし、ダンプするデータを一度メモリにロードする実装になっているようで、メモリが足りないとダンプできず困っていました。

そんなときにgrndumpを使うと良いという噂を目にしたので実験してみました。

hirose31
dumpコマンドはメモリ食うのでgrndumpでストリームなダンプとった方がいいらしい(要確認)
http://b.hatena.ne.jp/hirose31/20131114#bookmark-169201846

grndumpとは

grndumpは以下の記事の後半にある通り、rroongaをインストールすると使えるようになるコマンドです。

groongaのデータベースをダンプ・リストアする方法 - Qiita [キータ]

Rubyがインストールされた環境であれば、以下のようにしてrroongaをインストールすることでgrndumpコマンドを利用できるようになります。

$ sudo apt-get install libgroonga-dev 
$ sudo gem install rroonga

実験環境

実験環境として、VirtualBox + Vagrantで以下の環境を作りました。

  • OS: Ubuntu 12.04 x86_64
  • Groonga / rroonga: v3.1.0
  • Memory: 512MB
  • Swap: 512MB

ちょっとメモリが少なすぎますが、データベースサイズに対してメモリが少ない環境ということで。

実験内容

以下の2つのコマンドでダンプを取った時のメモリ消費量を比較します。

dump
$ groonga db/db dump > dump-groonga-dump.grn
grndump
$ grndump db/db > dump-grndump.grn

なお、dumpしたいDBのサイズは5.6GBです。

$ du -sm db
5611    db

メモリ消費量の計測は以下のページを参考にしました。

特定プロセスのプロセスメモリ使用量の推移をとりつづける - runny egg’s diary

実験結果

結果は次のようになり、確かにgrndumpはメモリが少ない状況でも正常にダンプできました。

  • dump:途中でKillされる
  • grndump:正常に終了する

メモリ消費量をプロットすると、下図のようになりました。

Groonga_dumpのメモリ消費.png

結論

現時点では、メモリが足りなくてdumpできないときにはrroongaのgrndumpを使うと良いです。他にもgrndumpは上で紹介した記事にあるように、いろいろなオプションがあり便利なコマンドです。

ちなみに、メモリが十分にあるときはGroongaのdumpのほうが速くダンプできました。Groongaのdumpでもストリームのダンプができるようになると嬉しいです。

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5