mysql:15420
From: Mikiya Okuno <Mikiya Okuno <mikiya.okuno@xxxxxxxxxx>>
Date: Mon, 08 Nov 2010 17:21:47 +0900
Subject: [mysql 15420] Re: FULLTEXT インデックス使用時のクエリキャッシュについて
奥野です。こんにちは。 手元のマシンで試してみましたが、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.]