HAYASHI Kentaro
hayas****@clear*****
2015年 4月 29日 (水) 14:53:19 JST
今日は肉の日(4/29)ですね。Mroonga 5.02をリリースしました! http://mroonga.org/ja/docs/news.html#release-5-02 ドキュメント: http://mroonga.org/ja/docs/ インストールガイド: http://mroonga.org/ja/docs/install.html アップグレード方法: http://mroonga.org/ja/docs/upgrade.html 今回のリリースのハイライトは以下のとおりです。 * Debian 8.0 (Jessie)とUbuntu 15.04 (Vivid Vervet)のサポート * 範囲検索でレコード数を見積る際のパフォーマンスを改善 ## Debian 8.0 (Jessie)とUbuntu 15.04のサポート 4/25にリリースされたばかりのDebian 8.0 (Jessie)と4/23にリリースされた Ubuntu 15.04 (Vivid Vervet)に対応しました。 インストール手順については次のURLを参照してください。 Debian 8.0 (Jessie)の場合 http://mroonga.org/ja/docs/install/debian.html#jessie Ubuntu 15.04 (Vivid Vervet)の場合 http://mroonga.org/ja/docs/install/ubuntu.html mroonga.orgで案内しているMroongaのパッケージはMySQL向けになっています が、Debian 8.0 (Jessie)とUbutnu 15.04ではMariaDBの10.0.xがディストリ ビューションの公式パッケージとしてインストールできます。 * Debian 8.0ではMariaDB 10.0.16をインストール可能 * Ubuntu 15.04ではMariaDB 10.0.17をインストール可能 MariaDB 10.0.xではMroongaのプラグインがバンドルされているので、MariaDB をインストール後に、プラグインを有効にすればすぐに使えるようになります。 (バンドルされたMroongaはちょっと古いバージョンなので、最新のMroongaを使いたいなら mroonga.orgで案内しているパッケージを使ってください) プラグインのインストールには次のSQLを実行します。 INSTALL PLUGIN Mroonga SONAME 'ha_mroonga.so'; CREATE FUNCTION last_insert_grn_id RETURNS INTEGER SONAME 'ha_mroonga.so'; CREATE FUNCTION mroonga_snippet RETURNS STRING SONAME 'ha_mroonga.so'; CREATE FUNCTION mroonga_command RETURNS STRING SONAME 'ha_mroonga.so'; CREATE FUNCTION mroonga_escape RETURNS STRING SONAME 'ha_mroonga.so'; ## 範囲検索でレコード数を見積る際のパフォーマンスを改善 今回のリリースでは、統計情報を計算するときの仕組みを見直してパフォーマンスを 改善しました。 これまで統計情報を計算するときに、Mroongaでは「見積り」ではなくて律儀 に「本物」の件数を返していました。そのため、ヒット数が多いとそれなりに 時間がかかってしまうという問題がありました。 そもそも、統計情報を計算しているのは「高速に実行するための情報集め」な ので、そこで時間がかかってしまい、全体の処理が遅くなってしまっていては 本末転倒です。そこで、「ざっくりとした見積り」の件数を返すようにしまし た。これによりパフォーマンスが改善しています。 もし範囲検索で極端に遅く、show profileで確認したときにstatisticsが結構 な割り合いを占めているケースでは上記の問題に遭遇している可能性があります。 Mroongaを最新版にすることをおすすめします。 また、これにあわせて、mroonga_max_n_records_for_estimate というサーバー 変数を追加しました。これは、さきほどのざっくりとした見積りの件数の最大 値を指定するものです。デフォルトでは1000件です。この値はクエリを最適化 するにあたって、どのインデックスが使われるかに影響します。 # 変更点 5.01からの変更点は以下の通りです。 http://mroonga.org/ja/docs/news.html#release-5-02 ## 改良 * [doc] リリース手順 を更新しました。 * [ストレージ] 範囲指定のレコード数を見積もる際のパフォーマンスを改 善しました。以前のバージョンでは、Mroongaは実際のレコード数をカウン トします。そのため、レコード数が増えるとパフォーマンスに影響していま した。この恩恵を受けるにはGroonga 5.0.2以降が必要です。 [groonga-dev,03150] [嶋田さんが報告] * [実験的] mroonga_max_n_records_for_estimate サーバー変数を追加しま した。この変数はレコード数を見積る際の最大レコード数を制限するのに 使います。対象となるレコードが多いときでも、見積もる際のコストを抑 えることができます。 * [rpm][centos] 最新のMySQL 5.6でビルドするようにしました。 * [ラッパーモード] Mroongaの ORDER BY LIMIT 最適化で主キーのソートに対応 しました。 [Tsugunori Nashiroさんが報告] * Debian 8.0 (Jessie)に対応しました。 * Ubuntu 15.04 Vivid Vervetに対応しました。 ## 修正 * [doc] Windows版パッケージへのリンクが古いのを修正しました。 [METAL_GEAR_mkIIさんが報告] * [ストレージモード][mysql56] ORDER BY のカラム指定が重複していると きにクラッシュする問題を修正しました。 ORDER BY LIMIT の最適化を適 用するケースでSQLの ORDER BY カラム指定が重複しているときに発生し ます。この問題はMySQL 5.5には影響しません。 [GitHub#50] [GMOメディ ア株式会社さんが報告] ## 感謝 * 嶋田さん * Tsugunori Nashiroさん * METAL_GEAR_mkIIさん * GMOメディア株式会社さん -- HAYASHI Kentaro <hayas****@clear*****>