お知らせ - 12系#
12.12リリース - 2023-01-29#
Improvements#
[AlmaLinux] AlmaLinux 9 を新しくサポートしました。
[CentOS][AlmaLinux][Debian GNU/Linux][Ubuntu] MySQL 8.0.32をサポートしました。
[CentOS][AlmaLinux][Debian GNU/Linux][Ubuntu] MySQL 5.7.41をサポートしました。
複合主キーを設定しているテーブルで通常のカラムの更新ができるようになりました。 [GitHub#592] [handmoundさんが報告]
以下のようにMroongaストレージエンジンを使ったテーブルに複合主キーを設定しているときは、通常のカラムを更新できませんでした。
CREATE TABLE scores ( name char(30) NOT NULL, score int NOT NULL, PRIMARY KEY (name, score), note char(30), FULLTEXT INDEX search_note_idx (note) ) ENGINE = Mroonga DEFAULT CHARSET=utf8mb4; INSERT INTO scores (name, score) VALUES ("Taro Yamada", 29); UPDATE scores SET note = "Note" WHERE name = "Taro Yamada" AND score = 29; ERROR 1265 (01000): data truncated for primary key column: <name>
このエラーはMariaDB向けMroongaでは発生しません。
Thanks#
handmoundさん
12.11リリース - 2020-01-06#
Improvements#
[Amazon Linux] MariaDB 10.5.10-2.amzn2.0.2をサポートしました。
[サーバ変数の一覧] 新しいサーバーステータス変数
libgroonga_support_mecab
を追加しました。これはGroongaがTokenMecabをサポートしている時のみtrueです。
[Debian GNU/Linux] MariaDB 10.5.18をサポートしました。
Fixes#
[mroonga_highlight_html()]
mroonga_highlight_html
をAS query
と一緒に使った際にメモリーリークする問題を修正しました。Windows版MariaDB 10.9以降のMroongaを使った時にMeCabの初期化に失敗する問題を修正しました。
12.10リリース - 2022-11-29#
Improvements#
[CentOS][AlmaLinux] MariaDB 10.3.37、10.4.27、10.5.18、10.6.11、10.7.7、10.8.6、10.9.4をサポートしました。 [GitHub #564][Josep Sanzさんの報告][かとうさんがパッチ提供]
[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_tag
とclose_tag
を追加しました。 [GitHub #537][ishitakaさんによる報告]ハイライトに使うタグを
open_tag
とclose_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
Fixes#
Windows版のMroongaに groonga-normalizer-mysql をバンドルしていなかった問題を修正しました。
Mroonga 12.09 にて groonga-normalizer-mysql をバンドルするよう修正したとアナウンスしましたが、修正されていませんでした。
Thanks#
Josep Sanz
Tomohiro KATO
ishitakaさん
12.09リリース - 2022-10-28#
Improvements#
[CentOS][AlmaLinux][Debian GNU/Linux][Ubuntu] MySQL 8.0.31をサポートしました。
[Ubuntu] Ubuntu 22.04 (Jammy Jellyfish) の MariaDB 10.6 をサポートしました。
クエリーのタイムアウトパラメータをサポートしました。 [GitHub #344] [かずひこさんが報告]
MySQL/MariaDB はクエリーの実行時間がタイムアウトパラメータで指定した時間を超過した場合、クエリーを中断することができます。タイムアウトパラメータは、MySQL では
MAX_EXECUTION_TIME
、MariaDBではmax_statement_time
です。しかし、MySQL/MariaDBがクエリーを中断し結果を返した後も、Mroongaは実行中のクエリーを中断していませんでした。そのため、クエリーが大量に結果にマッチする場合には、MySQL/MariaDBがクエリーを中断した後もメモリやCPUのリソースを消費し続けていました。
本バージョンから、Mroongaは指定された時間でクエリーを中断できるようになり、タイムアウトパラメータが正しく動作するようになりました。そのため、クエリーを中断した後もメモリやCPUリソースを消費し続ける問題も発生しなくなりました。
この機能の使い方は以下の通りです。
以下はMySQLの場合の例です。
CREATE TABLE diaries( title TEXT FULLTEXT INDEX (title) ) ENGINE = Mroonga DEFAULT CHARSET=utf8mb4; INSERT INTO diaries (title) VALUES ("It'll be fine tomorrow."); INSERT INTO diaries (title) VALUES ("It'll rain tomorrow"); SELECT /*+ MAX_EXECUTION_TIME(1) */ title FROM diaries WHERE MATCH(title) AGAINST("+fine" IN BOOLEAN MODE);
以下はMariaDBの場合の例です。
CREATE TABLE diaries( title TEXT FULLTEXT INDEX (title) ) ENGINE = Mroonga DEFAULT CHARSET=utf8mb4; INSERT INTO diaries (title) VALUES ("It'll be fine tomorrow."); INSERT INTO diaries (title) VALUES ("It'll rain tomorrow"); SET STATEMENT max_statement_time = 0.001 FOR SELECT title FROM diaries WHERE MATCH(title) AGAINST("+fine" IN BOOLEAN MODE);
この機能は、
mroonga_command()
でも使えます。
Fixes#
Windows版のMroongaに groonga-normalizer-mysql をバンドルしていなかった問題を修正しました。
このバグは、 Mroonga 12.02から存在していました。したがって、Windows版のMroonga 12.02 から 12.08 では groonga-normalizer-mysql を使えません。
Thanks#
Kazuhiko
12.08リリース - 2022-10-03#
[CentOS][AlmaLinux] MariaDB 10.6.10, 10.7.6, 10.8.5をサポートしました。
[Oracle Linux] MySQL 8.0.30をサポートしました。
12.07リリース - 2022-08-30#
Improvements#
[CentOS][AlmaLinux] MariaDB 10.3.36、10.4.26、10.5.17、10.6.9、10.7.5、10.8.4をサポートしました。
[CentOS][AlmaLinux] Percona Server 8.0.29-21をサポートしました。
注釈
Percona Server 8.0.29で使用しているMySQL 8.0.29には重大な問題があります。そのため、このバージョンの使用は推奨しません。
問題に関する詳細は、 MySQL 8.0.29 リリースノート を参照してください。
Fixes#
install.sqlを使用したインストールおよびアップグレードに失敗する問題を修正しました。[GitHub #525][Tomohiro KATOさんの報告][Jérome Perrinさんがパッチ提供]
install.sqlが壊れていたことが原因です。この問題は、 Mroonga 12.06以降で発生していました。
MySQL 8.0 以上を使用しているとき、
mroonga_command()
が16進数ダンプで結果を返す問題を修正しました。このバージョンから、
mroonga_command()
が正しい文字コードで結果を返すようになります。[AlmaLinux] AlmaLinux 8 向けMroongaのインストール手順を修正しました。[Gitter/ja:62fe4ca5b16e8236e3ef225c][handmoundさんの報告]
Thanks#
handmoundさん
Jérome Perrinさん
Tomohiro KATO
12.06リリース - 2022-08-04#
Improvements#
[CentOS] MySQL 5.7.39をサポートしました。
[Debian GNU/Linux] Debian 10 (buster)のサポートをやめました。
MroongaをMySQLに登録する際に、update.sql を実行する必要がないように変更しました。[GitHub #509][Jérome Perrin さんの報告]
Mroonga 12.04から、MroongaをMySQLに登録するには、install.sqlとupdate.sqlの両方を実行する必要がありました。
% mysql -u root < /usr/share/mroonga/install.sql % mysql -u root < /usr/share/mroonga/update.sql
この改善では、Mroonga 12.04 より前と同じように、install.sqlを実行するだけで良いように変更しています。
% mysql -u root < /usr/share/mroonga/install.sql
Thanks#
Jérome Perrinさん
12.04リリース - 2022-06-01#
Improvements#
[サーバ変数の一覧] 新しいサーバー変数
Mroonga_memory_map_size
を追加しました。以下のように、Mroongaのメモリーマップサイズの合計を取得できます。
mysql> SHOW STATUS LIKE 'Mroonga_memory_map_size'; +-------------------------+----------+ | Variable_name | Value | +-------------------------+----------+ | Mroonga_memory_map_size | 83406848 | +-------------------------+----------+ 1 row in set (0.00 sec)
Windowsでは、Mroogaが物理メモリーとスワップ領域を使い果たした場合、それ以上メモリーをマップすることができません。そのため、この値を監視することで、メモリーが十分でない環境でもメモリーマップサイズを適切にコントロールできます。
[CentOS][AlmaLinux] MariaDB 10.2.44, 10.3.35、10.4.25、10.5.16、10.6.8、10.7.4をサポートしました。
Fixes#
Mroongaのアップデートに失敗することがある問題を修正しました。 [groonga-dev,04982, groonga-dev,04987][Mitsuo YoshidaさんとOHTSUKA Soushiさんの報告]
この問題が発生した場合、"apt update"等でMroongaを更新した後、Mroongaが無効になります。その場合、以下の手順でMroongaを手動でインストールしてください。
% mysql -u root < /usr/share/mroonga/install.sql
Thanks#
Mitsuo Yoshidaさん
OHTSUKA Soushiさん
12.03リリース - 2022-05-06#
Improvements#
Fixes#
MariaDB 10.5.14 上でMroongaがインデックスの作成に失敗することがある問題を修正しました。 [GitHub clear-code/redmine_full_text_search#103][wateさんの報告]
全文検索でメモリーリークする問題を修正しました。[OHTSUKA SoushiさんとMitsuo Yoshidaさんの報告]
この問題は、 order limit の最適化 が使われた時に発生します。ただし、MariaDBを使っている場合はこの最適化を使っていなくても発生します。
この問題は、 Mroonga 11.03以降で発生していました。
Thanks#
wateさん
OHTSUKA Soushiさん
Mitsuo Yoshidaさん
12.02リリース - 2022-03-29#
Improvements#
MySQL 8.0以降でラッパーモードのサポートをやめました。
サーバー変数を使って、バックトレースを無効にできるようになりました。
"SET GLOBAL mroonga_enable_back_trace = false;" とすることで、バックトレースを無効にできます。
重み付きベクターの重みに
float32
型を追加しました。float32
で重みを格納できます。この機能を使うには、カラムを定義する時にWEIGHT_FLOAT32
フラグを追加する必要があります。[CentOS][AlmaLinux] MariaDB 10.3.34、10.4.24、10.5.15、10.6.7、10.7.3をサポートしました。
[CentOS] MariaDB 10.2.43をサポートしました。
MISSING_*
とINVALID_*
フラグをサポートしました。これらのフラグの詳細は、 https://groonga.org/ja/docs/news.html#release-12-0-2 を参照してください。
12.00リリース - 2022-02-09#
メジャーバージョンアップです! メジャーバージョンアップですが、互換性は壊れていないので、データベースを再構築することなく12.00へアップグレードできます。
まずはじめに、Mroonga 11.00から11.13までの変更点を紹介します。次に、12.00の主な変更点を紹介します。
Mroonga 11.00から 11.13までの主な変更点#
新規機能と改良#
Renamed package names as below.
mariadb-server-10.x-mroonga
->mariadb-10.x-mroonga
mysql-server-5.x-mroonga
->mysql-community-5.x-mroonga
mysql-server-8.x-mroonga
->mysql-community-8.x-mroonga
percona-server-5x-mroonga
->percona-server-5.x-mroonga
percona-server-8x-mroonga
->percona-server-8.x-mroonga
警告
パッケージ名を変更しています。この変更の影響でこのバージョンにアップグレード後、Mroongaが無効になることがあります。このバージョンにアップグレードする場合、以下の点を必ず確認してください。
If Mroonga is invalid after the upgrade, we need to install manually Mroonga again. Please refer to the following URL about the manual installation of Mroonga and how to confirming whether Mroonga is valid or not.
Mroonga 11.03をまたいでMroongaをアップグレードする場合は、この現象が発生するので、注意してください。
If Mroonga is valid after upgrade to this version but, Mroonga's version is old, we need to restart MySQL, MariaDB, or PerconaServer. We can confirm Mroonga's version as the below command.
SHOW VARIABLES LIKE 'mroonga_version';
[mroonga_snippet_html()]
mroonga_snippet_html()
でカスタマイズしたノーマライザーをサポートしました。We can use custom normalizer in
mroonga_snippet_html()
by this feature as below.CREATE TABLE terms ( term VARCHAR(64) NOT NULL PRIMARY KEY ) COMMENT='normalizer "NormalizerNFKC130(''unify_kana'', true)"' DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; SELECT mroonga_snippet_html('これはMroonga(ムルンガ)です。', 'terms' as lexicon_name, 'むるんが') as snippet; snippet <div class="snippet">これはMroonga(<span class="keyword">ムルンガ</span>)です。</div>
[サーバ変数の一覧] We disabled
mroonga_enable_operations_recording
by default.mroonga_enable_operations_recording
to determine whether recording operations for auto recovering are enabled or not.This recording of operations is for auto recovering Mroonga when it crashed. Normally, if lock remain in Mroonga, we can't execute INSERT/DELETE/UPDATE, but if
mroonga_enable_operations_recording
is enable, we may not execute SELECT at times in addition to INSERT/DELETE/UPDATE. Because auto recovery is sometimes blocked by residual lock when they crashed.Therefore, we set
OFF
to the default value in this version. By we disable operation recording, INSERT/DELETE/UPDATE is blocked as usual because of the residual lock, but "SELECT" may bework.An appropriate way to handle to residual lock is as follows.
Fixes#
MySQL/MariaDBのアップグレード後にクラッシュすることがある問題を修正しました。
Mronnga may crash if we execute
SELECT ... MATCH AGAINST
after MySQL/MariaDB upgrade.
WHERE句に "WHERE primary_key IN ("")" と指定した際にMroongaが誤ったレコードを返すことがある問題を修正しました。
詳細は、 release 11.07 を参照してください。
[最適化] Mroongaが行カウントの最適化を誤って適用する問題を修正しました。
詳細は、 release 11.10 を参照してください。
Fixed a bug that Mroonga crashed when we upgrade DB created by MySQL 5.7 to MySQL 8.0.
Fixed a bug that latitude and longitude are stored conversely.
警告
backward compatibility is broken by this fix.
Users that are using
GEOMETRY
type need to store the current data before upgrading to Mroonga 11.03 and restore the stored data after upgrading to Mroonga 11.03. Users can use the following methods for dumping/restoring data.mysqldump
Execute
ALTER TABLE ENGINE=InnoDB
before upgrading and executeALTER TABLE ENGINE=Mroonga
after upgrading.
If without this fix,
INSERT/UPDATE/SELECT/SELECT
works well but data stored in Groonga are wrong (Latitude and longitude are swapped in Groonga). Therefore,mroonga_command('select ...')
doesn't work for spatial data.外部キー制約が登録されない問題を修正しました。
This bug had only occurred on MySQL 8.0.
詳細は、 release 11.01 を参照してください。
対象のデータベースに外部キー制約があると、
DROP DATABASE
に失敗する問題を修正しました。詳細は、 release 11.01 を参照してください。
対象のテーブルが別のテーブルから参照されていると、
DROP COLUMN
に失敗する問題を修正しました。詳細は、 release 11.01 を参照してください。
MariaDBのMroongaでアップデートに失敗する問題を修正しました。
新しくサポートしたOS#
[Debian GNU/Linux] Added support for Debian 11 (bullseye).
[AlmaLinux] Added support for Mroonga on AlamLinux 8.
サポートをやめたOS#
Thanks#
shibanao4870
Marc Laporte
santalex
Josep Sanz
Tomohiro KATO
Katsuhito Watanabe
kenichi arimoto
Vincent Pelletier
Kosuke Yamashita
ひじー
12.00の主な変更点は以下の通りです。
Improvements#
[Ubuntu] Ubuntuの mysql-server パッケージの最新バージョンをサポートしました。
以下のバージョンをサポートしました。
Ubuntu 18.04 LTS (bionic) mysql-server (5.7.37-0ubuntu0.18.04.1)
Ubuntu 20.04 LTS (focal) mysql-server (8.0.28-0ubuntu0.20.04.3)
Ubuntu 21.10 LTS (impish) mysql-server (8.0.28-0ubuntu0.21.10.3)
[CentOS] MariaDB 10.2.42、10.3.33、10.4.23、10.5.14、10.6.6をサポートしました。
[AlmaLinux] MariaDB 10.3.33、10.4.23、10.5.14、10.6.6をサポートしました。