mysql:15422
From: Yuya Takeyama <Yuya Takeyama <sign.of.the.wolf.pentagram@xxxxxxxxxx>>
Date: Thu, 11 Nov 2010 22:00:40 +0900
Subject: [mysql 15422] Re: FULLTEXT インデックス使用時のクエリキャッシュについて
奥野さん、ご返答ありがとうございます。 教えていただいた方法で確認した所、 クエリキャッシュは効いていないようであることを確認しました。 しかし、クエリの実行時間についは、やはり 2 回目移行で大幅に短縮されるよ うです。 クエリキャッシュ以外の要因が、何か別にあるということでしょうか。 とはいえ、今回は個人的な興味の上でのベンチマークを行っているだけで、 特に実務で困っているわけでもないので、この場での質問は止めにしようと思い ます。 ありがとうございました。 ----- Yuya Takeyama (2010年11月08日 17:21), Mikiya Okuno wrote: > 奥野です。こんにちは。 > > 手元のマシンで試してみましたが、SQL_NO_CACHEを使用すると > 仕様通りクエリキャッシュが使われませんでした。クエリキャッシュが > 使われているかどうかは > > SHOW GLOBAL STATUS LIKE 'Qcache%'; > > で確認できますので、まずはこちらを実行してみてください。 > クエリキャッシュにエントリが追加されたときはQcache_insertsが増え、 > SQL_NO_CACHEが効いたときはQcache_not_cachedが増えます。 > ヒットしたときはQcache_hitsですね。 > > 既知のバグもひと通り見ましたが、特にめぼしいのはありませんでした。 > まずは現状どうなっているかを確認して頂けますでしょうか。 > > ではでは。 > -- > 奥野 幹也 > http://www.google.com/profiles/mikiya.okuno > http://nippondanji.blogspot.com/ > http://twitter.com/nippondanji > > On 11/08/2010 11:11 AM, Yuya Takeyama wrote: > >> こんにちは。竹山と申します。 >> >> FULLTEXT インデックス使用時に、 SQL_NO_CACHE を使用しても、 >> クエリキャッシュが効いてしまっている ? という事象に悩まされています。 >> >> 以下のページを参考に、 12 万件ほどのテーブルを作ってみました。 >> MySQL FULLTEXT + Ngram : LIKE検索より数十倍高速な、お手軽 日本語全文検索 >> について >> http://www.tatamilab.jp/rnd/archives/000390.html >> >> 日本郵便から郵便番号・住所のデータをダウンロードして、 >> 以下のような定義で作っています。 >> >> CREATE TABLE `addresses` ( >> `id` int(11) NOT NULL AUTO_INCREMENT, >> `zip` int(7) unsigned zerofill NOT NULL, >> `name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, >> `name_bigram` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, >> PRIMARY KEY (`id`), >> FULLTEXT KEY `name_bigram` (`name_bigram`) >> ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci >> >> 郵便番号、住所、そして住所を 2-gram に分かち書きしたデータを入れています。 >> >> 「福岡市」という単語で検索するときは、以下のような SQL を使います。 >> >> SELECT SQL_NO_CACHE SQL_CALC_FOUND_ROWS * >> FROM addresses >> WHERE MATCH (name_bigram) AGAINST ('+福岡 +岡市' IN BOOLEAN MODE) >> LIMIT 3 >> >> このような形で、「福岡市」という単語での検索を 3 回行うと、 >> 実行時間は以下のような結果になりました。 >> >> 36msec >> 14msec >> 6msec >> >> 「鹿児島市」ではこうです。 >> >> 61msec >> 10msec >> 4msec >> >> さらに、「戸田市」。 >> >> 25msec >> 3msec >> 3msec >> >> いずれも、 2 回目以降が不自然に速くなっています。 >> >> SQL には SQL_NO_CACHE オプションが付いているので、 >> 通常であれば、クエリキャッシュは使用されない物だとおもいます。 >> >> 念のため name LIKE '%福岡市%' といった形での測定もしましたが、 >> こちらはちゃんとクエリキャッシュが効いているようでした。 >> >> 「福岡市」 >> >> 112msec >> 93msec >> 144msec >> >> 「鹿児島市」 >> >> 127msec >> 122msec >> 89msec >> >> 「戸田市」 >> >> 108msec >> 119msec >> 124msec >> >> >> 上記をまとめると、「FULLTEXT インデックス使用時は SQL_NO_CACHE が効かない」 >> といったことがあるのでは、と考えられるのですが、どうでしょうか。 >> >> 詳しくご存知の方がいらしたら、ご教示いただければ幸いです。 >> >> 以上、長文失礼致しました。 >> よろしくお願いします。 >> >> ----- >> Yuya Takeyama >>
15419 2010-11-08 11:11 [Yuya Takeyama <sign.] FULLTEXT インデックス使用時のクエリキャッシュについて 15420 2010-11-08 17:21 ┗[Mikiya Okuno <mikiya] -> 15422 2010-11-11 22:00 ┗[Yuya Takeyama <sign.]