もし、あなたがリストにないSQLコマンドを見つけて、そのSQLコマンドが動くかどうかを確認した場合は、そのSQLコマンドをこのリストに追加させてください。そのSQLコマンドを 開発チーム に連絡してもらうか、 ソースファイル に対するパッチをGitHubでpull requestしてくれれば取り込みます!
独自に追加されたサーバ変数を説明します。
デフォルトの全文検索用パーサ。デフォルト値は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;
|
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)
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)
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)
mroongaのバージョン
実行中のmroongaのバージョンを確認するためのSQL例です:
mysql> SHOW VARIABLES LIKE 'mroonga_version';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| mroonga_version | 1.10 |
+-----------------+-------+
1 row in set (0.00 sec)
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)
最適化を有効にするかどうかを指定します。デフォルト値は 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)
マッチ方法をエスカレーションするかどうかを決定する閾値です。マッチ方法については 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
|
独自に追加されたステータス変数を説明します。
行カウント高速化機能が動作する度にカウントアップされます。スキーマ/SQLチューニングを行って行カウント高速化機能を利用できるようにした際の動作確認に利用できます。
確認例です:
mysql> SHOW STATUS LIKE 'Mroonga_count_skip';
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| Mroonga_count_skip | 0 |
+--------------------+-------+
1 row in set (0.00 sec)
ORDER BY LIMIT 高速化機能が動作する度にカウントアップされます。スキーマ/SQLチューニングを行って ORDER BY LIMIT 高速化機能を利用できるようにした際の動作確認に利用できます。
確認例です:
mysql> SHOW STATUS LIKE 'Mroonga_fast_order_limit';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| Mroonga_fast_order_limit | 0 |
+--------------------------+-------+
1 row in set (0.00 sec)
mroongaストレージエンジンにはいくつか制限があります。
テーブルには以下の制限があります。この制限はgroongaに由来します。
実際には他の諸条件の制約により上記の値まで到達しない場合もあります。
1つのインデックスにおける論理上の上限値は以下のとおりです。テーブルごとに適用されるgroonga由来の制限です。
実際には他の諸条件の制約により上記の値まで到達しない場合もあります。
テーブルがこの制限に該当するかは SHOW TABLE STATUS や SHOW INDEX FROM ... などで確認してください。
ストレージモードにおいて、DATE、DATETIME型のカラムには制限があります。
mroongaストレージエンジンは月や日の値に指定された0を1へと自動的に補正します。
つまり、0月は1月へ、0日は1日として扱います。
そして、NULL値はUNIX時間の0秒 (1970-01-01)として扱います。
上記挙動を示す例はこちらです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | CREATE TABLE date_limitation (
id INT PRIMARY KEY AUTO_INCREMENT,
input varchar(32) DEFAULT NULL,
date DATE DEFAULT NULL
) ENGINE=mroonga DEFAULT CHARSET=UTF8;
CREATE TABLE datetime_limitation (
id INT PRIMARY KEY AUTO_INCREMENT,
input varchar(32) DEFAULT NULL,
datetime DATETIME DEFAULT NULL
) ENGINE=mroonga DEFAULT CHARSET=UTF8;
-- Test data for date_limitation
INSERT INTO date_limitation (input) VALUES ("NULL");
INSERT INTO date_limitation (input, date) VALUES ("1970-00-00", "1970-00-00");
-- Test data for datetime_limitation
INSERT INTO datetime_limitation (input) VALUES ("NULL");
INSERT INTO datetime_limitation (input, datetime) VALUES ("1970-00-00 00:00:00", "1970-00-00 00:00:00");
|
実行結果はこちらです。:
mysql> select * from date_limitation;
+----+------------+------------+
| id | input | date |
+----+------------+------------+
| 1 | NULL | 1970-01-01 |
| 2 | 1970-00-00 | 1970-01-01 |
+----+------------+------------+
2 rows in set (0.00 sec)
mysql> select * from datetime_limitation;
+----+---------------------+---------------------+
| id | input | datetime |
+----+---------------------+---------------------+
| 1 | NULL | 1970-01-01 00:00:00 |
| 2 | 1970-00-00 00:00:00 | 1970-01-01 00:00:00 |
+----+---------------------+---------------------+
2 rows in set (0.00 sec)