Mroongaブログ

2015-04-29

Mroonga 5.02リリース!

今日は肉の日ですね!

Mroonga 5.02 をリリースしました!

今回のリリースのハイライトは以下です。

  • 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を参照してください。

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からの詳細な変更点は 5.02リリース - 2015-04-29 を確認してください。

それでは、Mroongaでガンガン検索してください!