Naoya Murakami
visio****@gmail*****
2013年 8月 15日 (木) 20:27:38 JST
お世話になっております。村上です。 mroongaラッパーモード(MYISAM)とmroongaストレージモードで まったく同じテーブル内容で性能等を比較してみたところ、サイズはほぼ同じでストレージモードのほうが早いという結果がでました。 (ストレージモードのほうがサイズがでかいという先入観がありました。。) そこで、ストレージモードを利用しようとしたところ、以下の疑問がわきました。 Q1.MySQLでは、1つのクエリで1つのインデックス(複合インデックス含む)しか使用できないという仕様があるが、groongaでは複数のインデックスを同時に使えるかどうか? 使える場合、mroongaで作成されたgroongaテーブルにmroonga_commandで複数のインデックスが使われるようにselectすると、普通にSQLでselectするより早く検索することができるかどうか? Q2.現状、mroongaでは、groongaのベクターカラムは使えないという認識でよいか? データ構造の違いから、実現が難しそうな気がしますが、ベクターカラムはすごい便利そうだなぁと思っています。 ちなみに、余談ですが、いままでは、以下の点を考慮してラッパーモードを選んでいました。バグフィックスがなされ、また、vm.max_map_countのパラメータチューニング等、だいぶこなれてきて強制終了するケースが減ったので、ストレージモードでもいけるだろうと判断しました。 (1)ラッパーモードだと強制終了がかかったときでも実データを復旧しやすい。被害が全文インデックスまでに抑えられる。 (2)MYDがファイル1つなので、全文インデックスはSSDのような 高速ストレージに配置し、実データのMYDのみを別ストレージに移して、 シンボリックリンクを張りやすい。ストレージモードの場合、ファイル数が多く、また、インデックスと実データが区別つきづらい。 (3)MYDがファイル1つなので、実データだけをバックアップすることが容易。 (4)MYDを読み取り専用に圧縮することにより、実データサイズを3、4割に抑えることができる。 (5)カラムストアなので、ストレージモードは、MyISAMよりも実データがでかい(これは、勘違いでした)。 以上、よろしくお願いします。