2013年10月17日木曜日

Mroonga(全文検索)を使ってみる。その2

前回からの続き。

『Senna』 VS 『Mroonga』のパフォーマンス比較です。
正確には、『Tritonn』 VS 『Mroonga』のパフォーマンス比較です。

※簡易説明
・Tritonn(詳細⇒コチラ
MySQLから全文検索エンジンSennaを利用可能にするためのプロジェクト。
・Mroonga
MySQL用のストレージエンジンです。
すべてのMySQLユーザーに高速な全文検索機能を提供します。

※備考
TritonnインストールサーバとMroongaインストールサーバを
全く同等スペックで構成して調査することができませんでした。
よって、パフォーマンス比較は目安でしかありません。ごめんなさい。

では、まずは『Tritonn』のパフォーマンスから。

■『Tritonn』側スペック
#cpu情報
cat /proc/cpuinfo
Intel(R) Xeon® L5410 2.33GHz クアッドコア×1

#memory情報
cat /proc/meminfo
4G (2GB×2)Registered ECC DDR2-667

#OSバージョン
cat /etc/redhat-release
CentOS release 5.4 (Final)

#mysqlバージョン
mysql --version
mysql  Ver 14.12 Distrib 5.0.77, for redhat-linux-gnu (x86_64) using readline 5.1

#phpバージョン
php --version
PHP 5.1.6 (cli) (built: Jan 13 2010 17:09:42)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies

#sennaステータス確認
mysql -u root 
use データベース名
show senna status\G

#sennaテーブル構造
show create table hogehoge
CREATE TABLE `hogehoge` (
  `id` bigint(20) unsigned NOT NULL auto_increment,
  `uptm` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  `tablename` varchar(63) NOT NULL,
  `tableid` bigint(20) unsigned NOT NULL,
  `subject` text NOT NULL,
  `body` text NOT NULL,
  `subject_input` text NOT NULL,
  `body_input` text NOT NULL,
  `comment` text NOT NULL,
  `user_crypt_id` varchar(255) NOT NULL,
  `shop_crypt_id` varchar(255) NOT NULL,
  `user_id` bigint(20) unsigned NOT NULL,
  `shop_id` bigint(20) unsigned NOT NULL,
  `update_date` datetime NOT NULL,
  `insert_date` datetime NOT NULL,
  `forbid_word_result_info_type` smallint(6) NOT NULL default '0',
  `forbid_word_result_inspect_state` smallint(6) NOT NULL default '0',
  `forbid_word_result_delete_flag` smallint(6) NOT NULL default '0',
  `user_action` smallint(6) NOT NULL default '0',
  `shop_action` smallint(6) NOT NULL default '0',
  PRIMARY KEY  (`id`),
  UNIQUE KEY `idx1_tablename_tableid` (`tablename`,`tableid`),
  FULLTEXT KEY `subject` USING NGRAM, NORMALIZE, SECTIONALIZE, 2048 (`subject`,`body`,`subject_input`,`body_input`,`comment`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
■『Tritonn』側のパフォーマンス確認
#件数確認
select count(*) from hogehoge;
+----------+
| count(*) |
+----------+
|  2847144 |
+----------+
1 row in set (0.00 sec)

#パフォーマンス確認その1
select count(*) from hogehoge where
MATCH(`subject`,`body`,`subject_input`,`body_input`,`comment`)
against ("●●●");
+----------+
| count(*) |
+----------+
|   141288 |
+----------+
1 row in set (2 min 47.66 sec)

#パフォーマンス確認その2
select id from hogehoge where
MATCH(`subject`,`body`,`subject_input`,`body_input`,`comment`)
against ("●●●" IN BOOLEAN MODE)
ORDER BY insert_date DESC
LIMIT 0, 30;
+---------+
| id      |
+---------+
| 5271608 |
| 5271592 |
 途中省略
| 5268937 |
| 5268932 |
+---------+
30 rows in set (2 min 37.85 sec)
となりました。
ん~。いずれもちょっとかかりすぎですね。
Mroongaでどれくらい早くなるか楽しみですね。

ってことで、いよいよMroongaでパフォーマンス測定!
の前に、Sennaデータをmroonngaインストール済みサーバに移す手順「その3」へ続きます。

0 件のコメント:

コメントを投稿