最新tritonnで

SELECT MATCH(col1, col2, col3) AGAINST('W.... query' IN BOOLEAN MODE) AS score Where MATCH(col1, col2, col3) AGAINST('W.... query' IN BOOLEAN MODE) ORDER BY score DESC;

が異常に遅いのはなんでなんでしょう。vmstatみてるとこのクエリが発生すると、10回に1回くらいすげぇ量のI/O (特にINのほう)が発生してるんですが・・・

一回このクエリが実行し終わって、再度同じクエリを投げるとそうとう速くなるのだけど、これはクエリキャッシュっぽい。SQL_NO_CACHEすると同じ事が起きる。いったいどこの何をつかってソートしてるんだ??

追記:間違い。SQL_NO_CACHEしてても、2回目はそれなりに速い。
追記2: ちゃんとLIMIT も使ってる。



追記。結局何を直しても最終的にFilesortになってしまうのが問題だと結論にいたったので、それならORDER BYをやめることにした。Tritonnはどんな理由か知らんがデフォルトでスコア順にソートしてくれないので、442行目あたりに勘だけをたよりに  sen_records_sort()を突っ込んでsennaレベルで先にソートすることに。んで、後はソート無し。グッド。

カテゴリ

トラックバック(0)

このブログ記事に対するトラックバックURL: http://mt.endeworks.jp/cgi-bin/mt-tb.cgi/1967

コメントする

筆者

daisuke - a.k.a. "lestrrat", Perl hacker at Livedoor Inc, Japan Perl Association 代表理事

このブログ記事について

このページは、Dが2007年12月11日 10:41に書いたブログ記事です。

ひとつ前のブログ記事は「レイトン教授クリア」です。

次のブログ記事は「世田谷ぼろ市/豪徳寺」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 4.1