Tetsuro IKEDA
te.ik****@jpta*****
2008年 2月 1日 (金) 20:31:44 JST
奥さん、こちらでははじめまして:) 池田です。 ご報告ありがとうございます!! まだしっかり調べていないので正確なことは言えないですが、こうしたヘビーな 環境で使った場合の欠点はぜひぜひ改善していきたいと考えています。 実際にご利用されている環境にて現れてきた性能問題としては他にも、、 ・大きなテーブルへの更新クエリにより参照クエリが長時間ブロックされる問題 (MyISAMを使用していることからくる欠点) ・更新クエリに対するCPUスケーラビリティが乏しい問題(これもMyISAM...) といったようなものを認識しています。 Tritonnの普及を促進したい自分としては、機能的な不具合だけでなく、 こうした問題にも積極的に取り組んでいきたいと考えております。 # もちろんpatchの寄贈とかも大歓迎です :) この件につきましては、こちらでも擬似環境を作って調べてみたいと思います。 その際にはいろいろ伺うこともあるかと思いますが、よろしくおねがいします。 > はじめまして、奥一穂と申します。 > > 仕事で Pathtraq というウェブサービスを開発していて、そのキーワード検索機能に Tritonn > を使わせていただいています。また、MySQL のストレージエンジンを開発していたりします (http://q4m.31tools.com/) > 。よろしくお願いいたします。 > > ところで、Tritonn の動作についてちょっと質問があるのですが、現状の Tritonn では、たとえば、 > > select id from content where match(body) against ('+test' in boolean mode); > > のようなクエリを投げた場合に、条件にマッチした全ての行データを MYD から読み込むと理解しています。 > > Pathtraq では、全文検索で得られた文書IDの一覧 (と tritonn の返す relevance と length(body)) > と、別テーブルに記録されているスコアの一覧を inner join ... order by して結果を返しているのですが、大量に MYD > へのアクセスが発生するため、実質的に MYD をメモリに載せておかないとサービスが提供できない感じになっています。 > #あるいは、約2倍程度のメモリが必要となっているということです > > 奥の理解では、この原因は2つあって、 > > ・sql/sql_select.cc の make_join_readinfo 関数で、他の型の場合に行われる最適化処理が JT_FT の場合に実行されない > ・そもそも MySQL の全文索引が、テーブルのプライマリキーではなく MYD ファイルのオフセットを記憶するようになっている > > というものです。 > > order by を予定するカラムと全文索引を同一テーブルに載せることができれば 2ind > パッチが有効になるパターンだと思うのですが、Pathtraq > の場合は、日ごとに異なるスコアテーブルがあるので、そのような対応は不可能です。また、他のユースケースにおいても、結合後に order by > をしたい、というのはあり得る話だと思います。 > > > 現象の説明が長くなってしまいましたが、この問題について、あるいは関連するようなバージョンアップは今後予定されていますでしょうか? > > 自分のケースに限って言えば、 > > ・プライマリキー等、必要なカラムを senna のキーのお尻にくっつけるようにする > ・senna のキーのお尻から読むような read_record を作る > ・read_record をセッション変数を用いて切り替えられるようにする > > といった感じでごまかしてしまえばオプティマイザに手を入れなくていいので楽なのですが、もっとちゃんとした解決策が検討されているのであれば、自分も何か協力できるかもしれませんし、メールする次第です。 > > よろしくお願いいたします。 > > > -- > Kazuho Oku > > _______________________________________________ > Tritonn-dev mailing list > Trito****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/tritonn-dev ------------------------------ Tetsuro IKEDA Sumisho Computer Systems, Corp. http://www.scs.co.jp/mysql/ ------------------------------