Kouhei Sutou
kou****@clear*****
2016年 1月 10日 (日) 17:23:23 JST
須藤です。 補足します。 この件ですが、インデックスが壊れているわけではなくて、検索方 法(というか見積もり件数の返し方)がよくなかっただけなので、 アップグレードすればインデックスを再構築しなくてもちゃんとし た結果を返すようになります! In <20160****@clear*****> "[groonga-dev,03842] Re: Mroonga で timestamp 型の index が破損するパターンがある(ストレージモード)" on Sun, 10 Jan 2016 17:18:16 +0900 (JST), Kouhei Sutou <kou****@clear*****> wrote: > 須藤です。 > > In <20160****@domai*****> > "[groonga-dev,03836] Re: Mroonga で timestamp 型の index が破損するパターンがある(ストレージモード)" on Wed, 06 Jan 2016 19:19:26 +0900, > 各務 洋 <kagam****@outwa*****> wrote: > >> 頂いたスクリプト(test.sh)ですが、ちょっと順序が違うようでした。 >> これで再現しましたが、どうでしょうか? > > ありがとうございます! > 手元でも再現したので直しました! > > 各務さんはmysql-community-mroongaのCentOS 6 x86_64でしたよね。 > ↓にパッケージをおいておきました。 > http://packages.groonga.org/tmp/mysql-community-mroonga-5.12-1.el6.x86_64.rpm > > 5.01(2015年3月29日リリース)の頃にヒットレコード数が増える > と範囲検索が遅くなるという問題がありました。 > ↓の「mroongaのウォームアップと範囲指定」の件です。 > https://osdn.jp/projects/groonga/lists/archive/dev/2015-April/thread.html > > MySQLは実際に範囲検索する前にMroongaに「どのくらいヒットしそ > う?」と聞くんですが、Mroonga 5.01の頃までは正直に「○○件ヒッ > トするよ!」と答えていました。当然ヒット件数が増えると時間が > かかります。 > > しかし、MySQLは速い実行計画を決めるために「どのくらいヒット > しそう?」と聞いているだけなので、その回答にたくさん時間がか > かるのは本末転倒です。そのため、5.02からは「ちょっと調べて > ○○件ヒットしそう」と返すことにしました。これならあまり時間 > はかかりません。 > > ただ、ちょっと調べた中にヒットするレコードがない場合は「0件 > ヒットしそう」と答えるのが問題になります。この場合、MySQLは > 「あ、ヒットしないんだ。じゃあ検索せずに0件ヒットと返すね」 > と処理してしまいます。この場合、ちょっと調べた中ではヒットし > ないけど、ちゃんと検索するとヒットする場合は異なる結果(ヒッ > トしない)になってしまいます。これが、今回のケースです。 > > そのため、ちょっと調べた中にヒットするレコードがなくても、そ > れが全部の検索でない場合は「(ちょっと調べた中では0件だけど) > 1件ヒットしそう」と返すことにしました。MySQLは1件あるならちゃ > んと検索しようかと考えるので、ちゃんと検索する処理が走って正 > しい結果が返ります。 > > なお、この問題の小さな再現ケースは次のSQLになりました。 > (3件登録して1件削除。) > > https://github.com/mroonga/mroonga/blob/8648af37b2aff4da4bf22afb32bedcab4acce3fd/mysql-test/mroonga/storage/variable/max_n_records_for_estimate/t/not_found_in_limit.test > > > -- > 須藤 功平 <kou****@clear*****> > 株式会社クリアコード <http://www.clear-code.com/> > > Groongaベースの全文検索システムを総合サポート: > http://groonga.org/ja/support/ > パッチ採用 - プログラミングが楽しい人向けの採用プロセス: > http://www.clear-code.com/recruitment/ > リーダブルコードワークショップ: > http://www.clear-code.com/services/code-reader/readable-code-workshop.html > > _______________________________________________ > groonga-dev mailing list > groon****@lists***** > http://lists.osdn.me/mailman/listinfo/groonga-dev