3. サーバ変数の一覧

独自に追加されたサーバ変数を説明します。

3.1. mroonga_action_on_fulltext_query_error

全文検索クエリエラーの振舞いです。

mroonga_action_on_fulltext_query_error のデフォルト値は ERROR_AND_LOG です。これは従来のmroongaと同等に振舞います。

使用可能な mroonga_action_on_fulltext_query_error のリストです。

説明

ERROR

エラーを報告する。ログは無効です。

ERROR_AND_LOG

エラーを報告する。ログは有効です。(これがデフォルトです)

IGNORE

エラーを無視する。ログは無効です。

IGNORE_AND_LOG

エラーを無視するが、ログは有効です。 (InnoDBと似た振舞です)

mroonga_action_on_fulltext_query_error を確認するためのSQL例です:

mysql> SHOW VARIABLES LIKE 'mroonga_action_on_fulltext_query_error';
+----------------------------------------+---------------+
| Variable_name                          | Value         |
+----------------------------------------+---------------+
| mroonga_action_on_fulltext_query_error | ERROR_AND_LOG |
+----------------------------------------+---------------+
1 row in set (0.00 sec)

3.2. mroonga_boolean_mode_syntax_flags

MATCH () AGAINST ('...' IN BOOLEAN MODE) の構文をカスタマイズするフラグです。

この変数はシステム変数でもセッション変数でもあります。

以下は利用可能なフラグの一覧です。

フラグ

説明

DEFAULT

SYNTAX_QUERY,ALLOW_LEADING_NOT と同じです。

SYNTAX_QUERY

Groongaのクエリー構文. Groongaのクエリー構文はMySQLのBOOLEAN MODEの構文と互換性があります。

SYNTAX_QUERYSYNTAX_SCRIPT もどちらも指定されない場合は SYNTAX_QUERY が指定されたものとして扱われます。

SYNTAX_SCRIPT

Groongaのスクリプト構文 を使います。

これはJavaScriptのような構文です。この構文を使うとGroongaの全ての機能を使うことができます。

SYNTAX_QUERYSYNTAX_SCRIPT が両方指定された場合は SYNTAX_SCRIPT を使います。

ALLOW_COLUMN

クエリー構文で COLUMN:... という構文を使えるようにします。これはMySQLのBOOLEAN MODEの構文とは互換性がありません。

この構文を使うと1つの MATCH () AGAINST () の中で複数のインデックスを使うことができます。MySQLは1つのクエリーの中で1つのインデックスしか使えません。この構文を使うことでこの制限を回避することができます。

この構文を使うと全文検索だけでなく、等価比較や前方一致検索など他の演算も使うことができます。

詳細は Groongaのクエリー構文 を参照してください。

ALLOW_UPDATE

クエリー構文の中で、値の更新をする COLUMN:=NEW_VALUE という構文を使えるようにします。

ALLOW_LEADING_NOT

クエリー構文で -NOT_INCLUDED_KEYWORD ... 構文を使えるようにします。

デフォルトのフラグは DEFAULT です。これはMySQLのBOOLEAN MODEと互換性のある構文です。

SYNTAX_QUERY,ALLOW_LEADING_NOT というようにカンマで区切って複数のフラグを指定できます。

Groongaのスクリプト構文を使うようにするSQLの例です:

mysql> SET mroonga_boolean_mode_syntax_flags = "SYNTAX_SCRIPT";

3.3. mroonga_database_path_prefix

TODO:

3.4. mroonga_default_parser

バージョン 5.04 で撤廃: Use mroonga_default_tokenizer instead.

デフォルトの全文検索用パーサ。デフォルト値はconfigureの with-default-parser オプションで指定できます(無指定時は TokenBigram )。

全文検索パーサーとして TokenBigramSplitSymbolAlphaDigit を使う例です。この例では body_index 全文検索インデックスは TokenBigramSplitSymbolAlphaDigit を使います。

1
2
3
4
5
6
SET GLOBAL mroonga_default_parser=TokenBigramSplitSymbolAlphaDigit;
CREATE TABLE diaries (
  id INT PRIMARY KEY AUTO_INCREMENT,
  body TEXT,
  FULLTEXT INDEX body_index (body)
) DEFAULT CHARSET UTF8;

3.5. mroonga_default_tokenizer

バージョン 5.04 で追加.

全文検索用のデフォルトのトークナイザー。デフォルト値はconfigureの --with-default-tokenizer=TOKENIZER オプションで指定できます。このオプションを指定しないときは TokenBigram になります。

全文検索用インデックスのトークナイザーとして TokenBigramSplitSymbolAlphaDigit を使う例です。この例では body_index 全文検索インデックスは TokenBigramSplitSymbolAlphaDigit を使います。

1
2
3
4
5
6
SET GLOBAL mroonga_default_tokenizer=TokenBigramSplitSymbolAlphaDigit;
CREATE TABLE diaries (
  id INT PRIMARY KEY AUTO_INCREMENT,
  body TEXT,
  FULLTEXT INDEX body_index (body)
) DEFAULT CHARSET UTF8;

3.6. mroonga_default_wrapper_engine

TODO:

3.7. mroonga_dry_write

Groongaデータベースに実際にデータを書き込むかどうかを指定します。デフォルト値は OFF で、実際にGroongaデータベースにデータを書き込みます。通常はこの値を変更する必要はありません。この変数はベンチマーク時に便利です。この値を ON にすることでMySQLとMroongaだけの処理時間を計測することができます。この時間にGroongaの処理時間は含まれません。

Groongaデータベースに値を書き込まないようにするSQLの例です:

mysql> SHOW VARIABLES LIKE 'mroonga_dry_write';
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| mroonga_dry_write | OFF   |
+-------------------+-------+
1 row in set (0.00 sec)

mysql> SET mroonga_dry_write = true;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW VARIABLES LIKE 'mroonga_dry_write';
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| mroonga_dry_write | ON    |
+-------------------+-------+
1 row in set (0.00 sec)

3.8. mroonga_enable_optimization

最適化を有効にするかどうかを指定します。デフォルト値は ON で最適化は有効になっています。通常はこの値を変更する必要はありません。この変数はベンチマーク時に便利です。

最適化を無効にするSQLの例です:

mysql> SHOW VARIABLES LIKE 'mroonga_enable_optimization';
+-----------------------------+-------+
| Variable_name               | Value |
+-----------------------------+-------+
| mroonga_enable_optimization | ON    |
+-----------------------------+-------+
1 row in set (0.00 sec)

mysql> SET mroonga_enable_optimization = false;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW VARIABLES LIKE 'mroonga_enable_optimization';
+-----------------------------+-------+
| Variable_name               | Value |
+-----------------------------+-------+
| mroonga_enable_optimization | OFF   |
+-----------------------------+-------+
1 row in set (0.00 sec)

3.9. mroonga_libgroonga_support_lz4

GroongaライブラリーのLZ4サポート状況

GroongaライブラリーがLZ4をサポートしているかを確認するためのSQL例です:

mysql> SHOW GLOBAL VARIABLES LIKE 'mroonga_libgroonga_support_lz4';
+--------------------------------+-------+
| Variable_name                  | Value |
+--------------------------------+-------+
| mroonga_libgroonga_support_lz4 | ON    |
+--------------------------------+-------+

3.10. mroonga_libgroonga_support_zlib

Groongaライブラリーのzlibサポート状況

Groongaライブラリーがzlibをサポートしているかを確認するためのSQL例です:

mysql> SHOW GLOBAL VARIABLES LIKE 'mroonga_libgroonga_support_zlib';
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| mroonga_libgroonga_support_zlib | ON    |
+---------------------------------+-------+

3.11. mroonga_libgroonga_support_zstd

GroongaライブラリーのZstandardサポート状況

GroongaライブラリーがZstandardをサポートしているかを確認するためのSQL例です:

mysql> SHOW GLOBAL VARIABLES LIKE 'mroonga_libgroonga_support_zstd';
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| mroonga_libgroonga_support_zstd | ON    |
+---------------------------------+-------+

3.12. mroonga_libgroonga_version

groongaライブラリのバージョン

groongaライブラリのバージョンを確認するためのSQL例です:

mysql> SHOW VARIABLES LIKE 'mroonga_libgroonga_version';
+----------------------------+------------------+
| Variable_name              | Value            |
+----------------------------+------------------+
| mroonga_libgroonga_version | 1.2.8-9-gbf05b82 |
+----------------------------+------------------+
1 row in set (0.00 sec)

3.13. mroonga_lock_timeout

TODO:

3.14. mroonga_log_file

Mroongaのログファイル名。デフォルト値は groonga.log

ログファイルを /tmp/mroonga.log に変更する例です:

mysql> SHOW VARIABLES LIKE 'mroonga_log_file';
+------------------+-------------+
| Variable_name    | Value       |
+------------------+-------------+
| mroonga_log_file | groonga.log |
+------------------+-------------+
1 row in set (0.00 sec)

mysql> SET GLOBAL mroonga_log_file = "/tmp/mroonga.log";
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW VARIABLES LIKE 'mroonga_log_file';
+------------------+------------------+
| Variable_name    | Value            |
+------------------+------------------+
| mroonga_log_file | /tmp/mroonga.log |
+------------------+------------------+
1 row in set (0.00 sec)

3.15. mroonga_log_level

Mroongaのログの出力レベル。デフォルト値は NOTICE

使用可能な mroonga_log_level のリストです。

ログレベル

説明

NONE

ログ出力なし。

EMERG

データベースの破損などの緊急に対処が必要なログメッセージを出力する。

ALERT

内部的なエラーを示すログを出力する。

CRIT

デッドロックの発生など致命的なログメッセージを出力する。

ERROR

Mroongaが使用しているAPIのエラーログメッセージを出力する。

WARNING

引数の誤りなどの警告ログメッセージを出力する。

NOTICE

設定や状態の変化を示すログメッセージを出力する。

INFO

ファイル操作などの情報をログメッセージとして出力する。

DEBUG

デバッグメッセージを出力する。

Mroonga開発者やバグレポートの際にお勧めします。

DUMP

テストツール向けのダンプログメッセージを出力します。

ログレベルを DEBUG に変更する例です。 DEBUG レベルにするとデバッグ用のたくさんのメッセージがログに出力されます:

mysql> SHOW VARIABLES LIKE 'mroonga_log_level';
+-------------------+--------+
| Variable_name     | Value  |
+-------------------+--------+
| mroonga_log_level | NOTICE |
+-------------------+--------+
1 row in set (0.00 sec)

mysql> SET GLOBAL mroonga_log_level = "debug";
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW VARIABLES LIKE 'mroonga_log_level';
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| mroonga_log_level | DEBUG |
+-------------------+-------+
1 row in set (0.00 sec)

3.16. mroonga_match_escalation_threshold

マッチ方法をエスカレーションするかどうかを決定する閾値です。マッチ方法については Groongaの検索の仕様 を確認してください。

デフォルト値はGroongaのデフォルト値と同じです。デフォルトの設定でインストールした場合は0になります。この変数のスコープは「グローバル」と「セッション」の両方なので、my.cnfまたは SET GLOBAL mroonga_match_escalation_threshold = THRESHOLD; でデフォルト値を設定できます。

マッチ方法がエスカレーションするかどうかを決定する閾値として-1を使った例です。-1は絶対エスカレーションしないという意味です。

1
SET GLOBAL mroonga_match_escalation_threshold = -1;

この変数の値による挙動の変化を示す別の例です。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
CREATE TABLE diaries (
  id INT PRIMARY KEY AUTO_INCREMENT,
  title TEXT,
  tags TEXT,
  FULLTEXT INDEX tags_index (tags) COMMENT 'parser "TokenDelimit"'
) ENGINE=mroonga DEFAULT CHARSET=UTF8;

-- Test data
INSERT INTO diaries (title, tags) VALUES ("Hello groonga!", "groonga install");
INSERT INTO diaries (title, tags) VALUES ("Hello mroonga!", "mroonga install");

-- Matches all records that have "install" tag.
SELECT * FROM diaries WHERE MATCH (tags) AGAINST ("install" IN BOOLEAN MODE);
-- id        title   tags
-- 1 Hello groonga!  groonga install
-- 2 Hello mroonga!  mroonga install

-- Matches no records by "gr" tag search because no "gr" tag is used.
-- But matches a record that has "groonga" tag because search
-- method is escalated and prefix search with "gr" is used.
-- The default threshold is 0. It means that no records are matched then
-- search method is escalated.
SELECT * FROM diaries WHERE MATCH (tags) AGAINST ("gr" IN BOOLEAN MODE);
-- id        title   tags
-- 1 Hello groonga!  groonga install

-- Disables escalation.
SET mroonga_match_escalation_threshold = -1;
-- No records are matched.
SELECT * FROM diaries WHERE MATCH (tags) AGAINST ("gr" IN BOOLEAN MODE);
-- id        title   tags

-- Enables escalation again.
SET mroonga_match_escalation_threshold = 0;
-- Matches a record by prefix search with "gr".
SELECT * FROM diaries WHERE MATCH (tags) AGAINST ("gr" IN BOOLEAN MODE);
-- id        title   tags
-- 1 Hello groonga!  groonga install

3.17. mroonga_max_n_records_for_estimate

バージョン 5.02 で追加.

TODO:

3.18. mroonga_vector_column_delimiter

ベクターカラムを出力する際の区切り文字。デフォルト値は空白です。

区切り文字を空白からセミコロンに変更するSQL例です:

mysql> SHOW VARIABLES LIKE 'mroonga_vector_column_delimiter';
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| mroonga_vector_column_delimiter |       |
+---------------------------------+-------+
1 row in set (0.00 sec)


mysql> SET GLOBAL mroonga_vector_column_delimiter = ';';
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW GLOBAL VARIABLES LIKE 'mroonga_vector_column_delimiter';
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| mroonga_vector_column_delimiter | ;     |
+---------------------------------+-------+

3.19. mroonga_version

Mroongaのバージョン

実行中のmroongaのバージョンを確認するためのSQL例です:

mysql> SHOW VARIABLES LIKE 'mroonga_version';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| mroonga_version | 1.10  |
+-----------------+-------+
1 row in set (0.00 sec)