5. 制限事項¶
mroongaストレージエンジンにはいくつか制限があります。
5.1. テーブルの制限事項¶
テーブルには以下の制限があります。この制限はgroongaに由来します。
1つのキーの最大サイズ: 4096Bytes
キーのサイズを合計した上限値: 4GBytes
実際には他の諸条件の制約により上記の値まで到達しない場合もあります。
5.2. インデックスの制限事項¶
1つのインデックスにおける論理上の上限値は以下のとおりです。テーブルごとに適用されるgroonga由来の制限です。
最大レコード数: 268,435,455 (約2億6千万)
最大語彙数: 268,435,455 (約2億6千万)
最大インデックスサイズ: 256GByte
実際には他の諸条件の制約により上記の値まで到達しない場合もあります。
テーブルがこの制限に該当するかは SHOW TABLE STATUS や SHOW INDEX FROM ... などで確認してください。
5.3. カラムの値に関する制限事項¶
ストレージモードにおいて、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)