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_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";

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 を使います。

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;

5.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;

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_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.13. mroonga_lock_timeout

TODO:

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

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

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

5.3.17. mroonga_max_n_records_for_estimate

バージョン 5.02 で追加.

TODO:

5.3.18. mroonga_enable_operations_recording

Whether recording operations for recover is enabled or not. The default value is ON that means operations are recording to Groonga database. It needs to reopen the database with FLUSH TABLES in order to reflect the variable is changed.

操作記録を無効にする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.19. 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.20. 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.21. mroonga_condition_push_down_type

バージョン 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)