2010年11月11日

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


投稿者 xml-rpc : 2010年11月11日 22:00
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/99980
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。