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*****>