[groonga-dev,01326] Re: utf8_unicode_ci使用時の検索結果について

Back to archive index

Kouhei Sutou kou****@clear*****
2013年 4月 25日 (木) 10:20:38 JST


須藤です。

In <34294****@web10*****>
  "[groonga-dev,01325] Re: utf8_unicode_ci使用時の検索結果について" on Wed, 24 Apr 2013 20:32:37 +0900 (JST),
  <mail_babir****@yahoo*****> wrote:

> ただ、phpMyAdminの場合、検索での取得レコードを制限していない場合でも、内部で自動的にlimit句が付加されており、この点が考慮できていませんでした。
> 
> SELECT * FROM  `test` WHERE MATCH (`main`) AGAINST ('と*' IN BOOLEAN MODE);
> の実行時間を比較したつもりだったが、実際には
> SELECT * FROM  `test` WHERE MATCH (`main`) AGAINST ('と*' IN BOOLEAN MODE) LIMIT 0 , 30;
> の実行時間を比較していた。
> 
> そこで、改めて自作のphpスクリプトでクエリ発行前後のmicrotime差分を計測してみたところ、やはりlimit句の有無でmroongaとmyisamでの検索速度に大きく差が出ていることがわかりました。
> 
> 全体27,030件、全文インデックス(mroongaはTokenDelimit)を貼ったmyisam,mroongaの2つのテーブルを用意して、それぞれに18020件がヒットする前方一致のSELECT文を発行。
> 
> ・limitなし(18020件中18020件取得)
> myisam   : 0.1610sec
> mroonga : 0.0925sec
> 
> ・limitあり(18020件中1件取得)
> myisam   : 0.0019sec
> mroonga : 0.0148sec
> 
> ・count(*)
> myisam   : 0.1076sec
> mroonga : 0.0333sec
> 
> limit句がある場合、myisamでは約85倍の高速化が実現していますが、
> mroongaでは6倍の高速化に留まっている点が、phpMyAdmin上での検索時間の差として出て来たものと思われます。

おぉ、なるほど!

> limit句がある場合、myisamの方がmroongaよりも7倍以上速いという結果になりました・・・。
> ここの速度が同程度まで出ればベストなんですが。

そうですね!
MyISAMでどうやっているかを見ればmroongaでもできそうか検討で
きると思うので、まずは、MyISAMでどうやっているかを確認します!

> 他の方のベンチマークも見てみたいですね。

MyISAMではなく、InnoDBですが、こんなベンチマーク結果がありま
す。

  MySQL-5.6.4からの新機能「InnoDB FTS」を用いた全文検索エンジ
  ンのベンチマークLTをしました。#mysqlcasual
  http://y-ken.hatenablog.com/entry/mysql-casual-talks-vol4-innodb-fts

これは、ベンチマーク用のデータやプログラムも公開されているの
で手元でも試してみたら、たしかにInnoDBの方が速かったです。
ただ、

  https://github.com/y-ken/mysql_casual_talks_vol4/blob/gh-pages/benchmark_select.rb#L26

のSELECTにLIMIT 0をつけると同じくらいの速さになるので、検索
パフォーマンスは同じくらいといえると思います。mroongaはレコー
ドの読み込みのところが甘いんだろうなぁと思っています。LIMIT
を指定されたときにMyISAMほど速くならない点も含めて。


実際にベンチマークをして、結果と傾向を教えてもらえて助かりま
した。ありがとうございます!


-- 
須藤 功平 <kou****@clear*****>
株式会社クリアコード <http://www.clear-code.com/> (03-6231-7270)

groongaサポート:
  http://groonga.org/ja/support/
パッチ採用はじめました:
  http://www.clear-code.com/recruitment/
コミットへのコメントサービスはじめました:
  http://www.clear-code.com/services/commit-comment.html




groonga-dev メーリングリストの案内
Back to archive index