# 9. 制限事項

Groongaにはいくつか制限事項があります。

## 9.1. テーブルの制限

テーブルには以下の制限があります。

- 1つのキーの最大サイズ：4KiB

- キーに格納した値の合計サイズの上限値：

  - デフォルトは4GiB。

  - flags に `KEY_LARGE` フラグを指定すると1TiB。ただし、 `KEY_LARGE` は TABLE_HASH_KEY でしか使えない。

- 最大レコード数：

  - TABLE_NO_KEY: 1,073,741,815 (2 30 - 9)

  - TABLE_HASH_KEY: 536,870,912 (2 29)

  - TABLE_PAT_KEY: 1,073,741,823 (2 30 - 1)

  - TABLE_DAT_KEY: 268,435,455 (2 28 - 1)

実際には他の諸条件の制約により上記の値まで到達しない場合もあります。

たとえば、大量のレコードを保存する場合はキーの型は小さいサイズの型を使う必要があります。なぜなら、最大レコード数の上限に達する前に最大総キーサイズの上限に達するからです。もし、 `UInt64` （8バイト）型を使って 2 29 レコード保存すると、総キーサイズは4GiB（= 8 * (2 29)）になります。この状態ではこれ以上レコードを追加できません。さらにレコードを保存したい場合は、キーのサイズを小さくする（たとえば `UInt32` にする）か、 `KEY_LARGE` と TABLE_HASH_KEY を使うか、どちらかを選びます。

## 9.2. インデックス上限値

1つのインデックスにおける論理上の上限値は以下のとおりです。

- 最大語彙数: 268,435,455 (約2億6千万)

- 最大インデックスサイズ: 256GiB

実際には他の諸条件の制約により上記の値まで到達しない場合もあります。

## 9.3. カラムの制限

1つのカラムにつき、次の制限があります。

- カラムに格納した値の合計サイズの上限値: 256GiB