5.3. サーバ変数の一覧 — Mroonga vmrn_version documentation

本文へスキップ
`Ctrl`+`K`

# 5.3. サーバ変数の一覧

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

## 5.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)

## 5.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_QUERY` も `SYNTAX_SCRIPT` もどちらも指定されない場合は `SYNTAX_QUERY` が指定されたものとして扱われます。
`SYNTAX_SCRIPT` | Groongaのスクリプト構文 を使います。 これはJavaScriptのような構文です。この構文を使うとGroongaの全ての機能を使うことができます。 `SYNTAX_QUERY` と `SYNTAX_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";

## 5.3.3. `mroonga_database_path_prefix`

TODO:

## 5.3.4. `mroonga_default_parser`

バージョン 5.04 で非推奨: Use mroonga_default_tokenizer instead.

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

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

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

## 5.3.5. `mroonga_default_tokenizer`

Added in version 5.04.

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

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

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

## 5.3.6. `mroonga_default_wrapper_engine`

TODO:

## 5.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)

## 5.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)

## 5.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    |
    +--------------------------------+-------+

## 5.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    |
    +---------------------------------+-------+

## 5.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    |
    +---------------------------------+-------+

## 5.3.12. `mroonga_libgroonga_support_mecab`

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

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

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

## 5.3.13. `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)

## 5.3.14. `mroonga_lock_timeout`

TODO:

## 5.3.15. `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)

## 5.3.16. `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)

## 5.3.17. `mroonga_query_log_file`

Mroongaのクエリーログファイル名。デフォルト値は空です。

この値が空の場合、クエリーログはファイルに保存されません。この値が空ではない場合は、クエリーログは指定されたファイルに保存されます。

クエリーログファイルを `/tmp/mroonga_query.log` に変更する例です:

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

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

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

## 5.3.18. `mroonga_n_workers`

Added in version 15.00.

Groongaの内部処理の並列数を指定します。

Mroongaにおいては並列処理を有効にすると `CREATE INDEX` 時に並列で処理され高速化が見込まれます。

使用可能な値のリストです。デフォルト値は `0` です。

値 | 説明
--- | ---
`0` または `1` | 並列実行しません。
`2` 以上 | 指定したスレッド数以下で並列実行します。
`-1` | CPUのコア数以下のスレッドで並列実行します。

並列数を `2` に変更するSQLの例です:

    mysql> SHOW VARIABLES LIKE 'mroonga_n_workers';
    +-------------------+-------+
    | Variable_name     | Value |
    +-------------------+-------+
    | mroonga_n_workers | 0     |
    +-------------------+-------+
    1 row in set (0.001 sec)

    mysql> SET GLOBAL mroonga_n_workers = 2;
    Query OK, 0 rows affected (0.000 sec)

    mysql> SHOW VARIABLES LIKE 'mroonga_n_workers';
    +-------------------+-------+
    | Variable_name     | Value |
    +-------------------+-------+
    | mroonga_n_workers | 2     |
    +-------------------+-------+
    1 row in set (0.001 sec)

`GLOBAL` でのみ設定可能です。

`SET GLOBAL` で設定すると、次のセッションから有効になります。現在のセッションでは有効にならないことに注意してください。永続的に設定する場合は、`my.cnf` で設定してください。

## 5.3.19. `mroonga_match_escalation_threshold`

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

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

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

    1SET GLOBAL mroonga_match_escalation_threshold = -1;

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

     1CREATE TABLE diaries (
     2  id INT PRIMARY KEY AUTO_INCREMENT,
     3  title TEXT,
     4  tags TEXT,
     5  FULLTEXT INDEX tags_index (tags) COMMENT 'tokenizer "TokenDelimit"'
     6) ENGINE=mroonga DEFAULT CHARSET=UTF8;
     7
     8-- Test data
     9INSERT INTO diaries (title, tags) VALUES ("Hello groonga!", "groonga install");
    10INSERT INTO diaries (title, tags) VALUES ("Hello mroonga!", "mroonga install");
    11
    12-- Matches all records that have "install" tag.
    13SELECT * FROM diaries WHERE MATCH (tags) AGAINST ("install" IN BOOLEAN MODE);
    14-- id        title   tags
    15-- 1 Hello groonga!  groonga install
    16-- 2 Hello mroonga!  mroonga install
    17
    18-- Matches no records by "gr" tag search because no "gr" tag is used.
    19-- But matches a record that has "groonga" tag because search
    20-- method is escalated and prefix search with "gr" is used.
    21-- The default threshold is 0. It means that no records are matched then
    22-- search method is escalated.
    23SELECT * FROM diaries WHERE MATCH (tags) AGAINST ("gr" IN BOOLEAN MODE);
    24-- id        title   tags
    25-- 1 Hello groonga!  groonga install
    26
    27-- Disables escalation.
    28SET mroonga_match_escalation_threshold = -1;
    29-- No records are matched.
    30SELECT * FROM diaries WHERE MATCH (tags) AGAINST ("gr" IN BOOLEAN MODE);
    31-- id        title   tags
    32
    33-- Enables escalation again.
    34SET mroonga_match_escalation_threshold = 0;
    35-- Matches a record by prefix search with "gr".
    36SELECT * FROM diaries WHERE MATCH (tags) AGAINST ("gr" IN BOOLEAN MODE);
    37-- id        title   tags
    38-- 1 Hello groonga!  groonga install

## 5.3.20. `mroonga_max_n_records_for_estimate`

Added in version 5.02.

TODO:

## 5.3.21. `mroonga_enable_operations_recording`

復旧のために操作を記録するかどうかを指定します。デフォルトは `OFF` です。これはGroongaデータベースに操作を記録しないというおkとです。この変数の変更を反映するには `FLUSH TABLES` でデータベースを開き直す必要があります。

操作記録を無効にするSQLの例です:

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

    mysql> FLUSH TABLES;
    Query OK, 0 rows affected (0.00 sec)

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

## 5.3.22. `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 | ;     |
    +---------------------------------+-------+

## 5.3.23. `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)

## 5.3.24. `mroonga_condition_push_down_type`

Added in version 7.10.

コンデイションプッシュダウンサポートをどのように有効にするかを制御します。

デフォルト値は `ONE_FULL_TEXT_SEARCH` です。このときは `WHERE` 句に `MATCH AGAINST` が1つしかない場合だけコンデイションプッシュダウンを有効にします。

以下は有効な値の一覧です。

値 | 説明
--- | ---
NONE | コンディションプッシュダウンを使いません。
ALL | 常にコンディションプッシュダウンを使います。今のところ実験的な機能です。
ONE_FULL_TEXT_SEARCH | `WHERE` 内に `MATCH AGAINST` が1つだけある場合だけコンディションプッシュダウンを使います。 これがデフォルトです。

現在の値を確認するためのSQL例です:

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