Katsuya Utada
utada****@themi*****
2007年 4月 24日 (火) 13:51:34 JST
お世話になっております
うただです
|2ind機能はまだ未完成の部分がある&不具合があると認識しております。
|こうした具体的な情報は非常にありがたいです。
2ind利用時のパフォーマンスに関してですが
当方でもMySQL5.0.37+tritonn-1.0.2.mysql-5.0.37.senna-1.0.4(ngram)
の環境で、特定のキーワードで応答が極端に遅くなる場合があります。
2ind ON/OFF時でも応答時間に変化は見られませんでした。。
遅延の発生する条件が分かりませんが、
一応情報としてレポートさせて頂きます。
安定性が上がったのは大変助かっております。
今後の改良に期待致しております。
|mysql> show senna status\G
|*************************** 1. row ***************************
| Table: sitest
| Key_name: keywords
| Column_name: keywords
| Encoding: euc_jp
| Index_type: NGRAM
| Normalize: ON
| Split_alpha: OFF
| Split_digit: OFF
| Split_symbol: OFF
| Initial_n_segments: 512
| Senna_keys_size: 4624378
| Senna_keys_file_size: 113319936
| Senna_lexicon_size: 2503513
|Senna_lexicon_file_size: 67182592
| Senna_inv_seg_size: 181833728
| Senna_inv_chunk_size: 485888000
|mysql> select count(*) from sitest where match(keywords) against('コン');
|+----------+
|| count(*) |
|+----------+
|| 371907 |
|+----------+
|1 row in set (0.11 sec)
|
|mysql> select count(*) from sitest where match(keywords) against('パソコン');
|+----------+
|| count(*) |
|+----------+
|| 278108 |
|+----------+
|1 row in set (30.95 sec)
On Wed, 28 Mar 2007 20:05:47 +0900, Tetsuro IKEDA wrote:
|こんにちは。池田@Tritonnプロジェクトです。
|
|2ind機能はまだ未完成の部分がある&不具合があると認識しております。
|こうした具体的な情報は非常にありがたいです。
|
|またTritonnでのMySQL 4.1対応ですが、他にもいろいろなTODOがあり、
|何を優先して行うかは議論のあるところなのですが、
|こうした要望をいただけますと、非常に参考になります。
|ありがとうございます。
|
|07/03/28 に 坂根 有<sakan****@skygr*****> さんは書きました:
|> お世話になります。坂根と申します。
|>
|> 先日、末長様へ個人的にメールさせて頂きましたが
|> MLのほうで報告をすればサポートできるかもというこでしたので
|> 期待を込めてメールさせていただきます。
|>
|> 何点か不具合と思われる現象がありました。
|>
|> 動作確認環境は以下の通りです。
|>
|> 環境1
|> mysql-5.0.37 + tritonn-1.0.0.mysql-5.0.37.senna-1.0.2
|> Senna 1.02
|> MeCab
|>
|> 環境2
|> mysql-4.1.22 + 4.122用MySQLバインディングパッチ(末長様に頂きました)
|> Senna 1.03
|> MeCab
|>
|> 使用テーブル
|>
|> CREATE TABLE `blog_items` (
|> `blogid` int(11) NOT NULL default '0',
|> `itemid` int(11) NOT NULL default '0',
|> `commentid` int(11) NOT NULL default '0',
|> `title` varchar(160) NOT NULL default '',
|> `body` text NOT NULL,
|> `more` text NOT NULL,
|> `blog` int(11) NOT NULL default '0',
|> `author` varchar(60) NOT NULL default '',
|> `wdate` date NOT NULL default '0000-00-00',
|> `wtime` datetime NOT NULL default '0000-00-00 00:00:00',
|> `closed` tinyint(2) NOT NULL default '0',
|> `draft` tinyint(2) NOT NULL default '0',
|> `catid` int(11) NOT NULL default '0',
|> `search` text NOT NULL,
|> PRIMARY KEY (`blogid`,`itemid`,`commentid`),
|> KEY `date_idx` (`wdate`),
|> KEY `wtime_idx` (`wtime`),
|> FULLTEXT KEY `author_full_idx` (`author`),
|> FULLTEXT KEY `search_full_idx` (`search`)
|> ) ENGINE=MyISAM DEFAULT CHARSET=ujis;
|>
|> 一回FULLTEXT INDEXは消して
|> ALTER TABLE blog_items ADD FULLTEXT author_full_idx USING NGRAM (author), ADD FULLTEXT search_full_idx (search);
|> で作り直しました。
|>
|> CREATE TABLE `master_blog` (
|> `blog_id` int(11) NOT NULL auto_increment,
|> `blog_name` varchar(100) NOT NULL default '',
|> `blog_dir` varchar(20) NOT NULL default '',
|> `blog_dbname` varchar(20) NOT NULL default '',
|> `blog_url` varchar(100) NOT NULL default '',
|> `search_flag` tinyint(4) NOT NULL default '0',
|> `sum_flag` int(11) NOT NULL default '1',
|> `access_group` text NOT NULL,
|> `partner_flg` tinyint(4) NOT NULL default '0',
|> `daredemo_flg` tinyint(4) NOT NULL default '0',
|> `status` varchar(20) NOT NULL default '',
|> PRIMARY KEY (`blog_id`)
|> ) ENGINE=MyISAM DEFAULT CHARSET=ujis PACK_KEYS=0 AUTO_INCREMENT=231
|> ;
|>
|> データはblog_itemsには35万レコード,master_blogには231レコードは行っております。
|>
|> まず以下の比較的簡単なクエリで4.1環境では0.2秒で終わるクエリが
|> 5.0環境では20秒近くかかり極端にパフォーマンスが落ちました。
|>
|> 実行した SQL:
|> SELECT SQL_CALC_FOUND_ROWS *
|> FROM blog_items
|> LEFT JOIN master_blog ON blog_items.blogid = master_blog.blog_id
|> WHERE blog_items.blogid = 5 LIMIT 0 , 100
|>
|> 4.1環境でのEXPLAIN結果
|> id select_type table type possible_keys key key_len ref rows
|> Extra
|> 1 SIMPLE blog_items ref PRIMARY PRIMARY 4 const 28378 Using where
|> 1 SIMPLE master_blog eq_ref PRIMARY PRIMARY 4 bcounter.blog_items.blogid 1
|>
|> 5.0環境でのEXPLAIN結果
|> id select_type table type possible_keys key key_len ref rows Extra
|> 1 SIMPLE blog_items ref PRIMARY PRIMARY 4 const 36801
|> 1 SIMPLE master_blog const PRIMARY PRIMARY 4 const 1
|>
|> パッチを当てていないMYSQL5.0でも検証しても
|> 起こるためMYSQL5.0の問題と思っております。
|>
|> そこで5.0ではパフォーマンスがでないため
|> 末長様にMYSQL4.1.22用のパッチを頂きました。
|>
|> MYSQL4.1では全体的にパフォーマンスもよく検索できておりましたが
|> バグと思われる挙動があり困っております。(MYSQL5.0+Tritonn環境でも発生します)
|>
|> ------------------------------------------------------------------------------------------
|> 1点目 0件目からのLimitでない場合結果が取得できない。
|> ------------------------------------------------------------------------------------------
|> 以下のクエリは正常に結果が取得できます。
|> SELECT * FROM blog_items
|> LEFT JOIN master_blog ON blog_items.blogid = master_blog.blog_id
|> WHERE MATCH (search) AGAINST ('test') AND master_blog.search_flag =1
|> LIMIT 0,10
|>
|> ところが以下のようにLIMITで0件目からの取得でない場合結果が空になります。(カウントでは200件あります)
|> SELECT * FROM blog_items
|> LEFT JOIN master_blog ON blog_items.blogid = master_blog.blog_id
|> WHERE MATCH (search) AGAINST ('test') AND master_blog.search_flag =1
|> LIMIT 10,10
|> ------------------------------------------------------------------------------------------
|>
|> ------------------------------------------------------------------------------------------
|> 2点目 SQL_CALC_FOUND_ROWSで総件数を取得する場合limitの値で総件数が変動します。
|> ------------------------------------------------------------------------------------------
|> SELECT SQL_CALC_FOUND_ROWS * FROM blog_items WHERE MATCH (search)
|> AGAINST ('test') AND (master_blog.search_flag = 1) limit 120,10
|>
|> と
|>
|> SELECT SQL_CALC_FOUND_ROWS * FROM blog_items WHERE MATCH (search)
|> AGAINST ('test') AND (master_blog.search_flag = 1) limit 10,10
|>
|> では違う件数になってしまいます。
|> ------------------------------------------------------------------------------------------
|>
|> 2indパッチを当てずに検証しましたところ発生いたしませんでした。
|>
|> 現状2indパッチを使用しない形で実運用に組み込もうと考えておりますが
|> 今後のことが少々不安ですのでTritonnプロジェクトでの
|> 4.1系の開発を要望としてあげさせていただきます。
|>
|> 以上よろしくお願いいたします。
|>
|> _______________________________________________
|> Senna-dev mailing list
|> Senna****@lists*****
|> http://lists.sourceforge.jp/mailman/listinfo/senna-dev
|>
|
|_______________________________________________
|Senna-dev mailing list
|Senna****@lists*****
|http://lists.sourceforge.jp/mailman/listinfo/senna-dev
|
|
---
Katsuya Utada <utada****@themi*****>