Mroongaブログ

2022-11-29

Mroonga 12.10リリース!

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

変更点

今回の変更点は以下の通りです。

改良

  • CentOS, AlmaLinux MariaDB 10.3.37、10.4.27、10.5.18、10.6.11、10.7.7、10.8.6、10.9.4をサポートしました。

  • CentOS, AlmaLinux Percona Server 8.0.30-22をサポートしました。

  • CentOS Percona Server 5.7.40-43をサポートしました。

  • Windows MariaDB 10.7、10.8、10.9をサポートしました。

  • Windows 32bitバージョンのサポートをやめました。

    最近のMariaDBは32bitのWindowsでビルドできず、32bit向けの公式パッケージも存在しないためです。

  • mroonga_highlight_html() 新しいパラメータ open_tagclose_tag を追加しました。

    ハイライトに使うタグを open_tagclose_tag で指定できるようになりました。

    今までは固定で <span class=\"keyword\">...</span> というタグを使用しており、 class の変更や、別のタグが指定できず不便でした。 今回からタグを指定できるようになったので、 <mark>...</mark> などのハイライト用のタグも使えるようになって便利になりました。

    SELECT mroonga_highlight_html('Mroonga is the Groonga based storage engine.', 'groonga',
                                  '<mark>' AS open_tag, '</mark>' AS close_tag) AS highlighted;
    
    -- +-----------------------------------------------------------+
    -- | highlighted                                               |
    -- +-----------------------------------------------------------+
    -- | Mroonga is the <mark>Groonga</mark> based storage engine. |
    -- +-----------------------------------------------------------+
    

    詳細は mroonga_highlight_html() を参照してください。

  • 参照カウントモードをサポートしました。

    この機能によりメモリー使用量を一定量に保つことができますが、パフォーマンスが悪化します。 そのため、メモリー不足の場合には、この機能を使用する前に、メモリーを増強することを検討してください。

    参照カウントモードは MySQLの table_open_cache とともに使用します。

    MySQLは table_open_cache で指定した個数のテーブルをキャッシュしておくことができます。 キャッシュされているテーブルはまだ使用中なので、Groongaのオブジェクトも解放されません。

    table_open_cache で指定した個数よりも多いテーブルが開かれたとき、使用頻度が低いテーブルが閉じられます。 参照カウントモードが有効なとき、そのタイミングでGroongaのオブジェクトも閉じられます。

    このようにして参照カウントモードではメモリー使用量を一定に保っています。

    実際に使用する際には、ステータス変数の Open_tables の値と メモリー使用量を見ながら table_open_cache の値を調整することで、メモリー使用量とパフォーマンスのバランスを調整する必要があります。 なぜなら、この機能はメモリー使用量を一定に保ちますが、その分パフォーマンスが悪化するためです。

    Open_tables の確認方法は以下の通りです。

    SHOW GLOBAL STATUS LIKE 'Open_tables';
    -- +---------------+-------+
    -- | Variable_name | Value |
    -- +---------------+-------+
    -- | Open_tables   | 643   |
    -- +---------------+-------+
    

    通常は Open_tables より table_open_cache を大きくして常に使っているすべてテーブルをキャッシュします。 しかし、メモリーに余裕がない環境では一部の使用頻度の低いテーブルをキャッシュから落として解放することでメモリー使用量を削減します。 使用頻度の低いテーブルをキャッシュから落とすには Open_tables より table_open_cache を小さくします。 table_open_cache を小さくすればするほど、より多くのテーブルがキャッシュから落ちます。 その分メモリー使用量は減りますが、テーブルの開き直しが必要になるためパフォーマンスは悪化します。 table_open_cache を小さくすればするほど、パフォーマンスが悪化するので、小さくするのはメモリー使用量が許容範囲内に収まる程度までにしておきます。

    参照カウントモードを有効にするには、my.cnfに以下の値を設定します。

    loose-mroonga-enable-reference-count = ON
    

    注: MySQL起動後に変数で指定しても参照カウントモードは有効になりません。my.cnfで指定してください。

    SET GLOBAL mroonga_enable_reference_count = ON
    

修正

  • Windows版のMroongaに groonga-normalizer-mysql をバンドルしていなかった問題を修正しました。

    Mroonga 12.09 にて groonga-normalizer-mysql をバンドルするよう修正したとアナウンスしましたが、修正されていませんでした。

おわりに

今回のリリースの詳細については、 リリースノート または、 リリース自慢会 を参照してください。

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