元ドキュメント: 使用規範・推奨事項
利用上の推奨事項
テーブル作成規範
テーブルタイプの選択
テーブル作成前にテーブルタイプを確定する必要があります。3種類のタイプは相互変換できません(単一テーブル→パーティションテーブルを除く):
| テーブルタイプ | 適用シナリオ | 特徴 |
|---|---|---|
| 通常テーブル(単一テーブル) | データ量が少なく分散不要 | すべてのデータが1つの RG に配置 |
| パーティションテーブル | 大容量データ、水平スケーリングが必要 | ルールに従いデータを複数の RG に分散 |
| 同期テーブル | システム設定、ディメンションテーブル、読み取り多/書き込み少 | 全ノードに強同期レプリカ |
主キー規範
- 主キーを必ず明示的に定義してください。主キーがない場合、書き込みホットスポットが発生します
- 単調増加する主キー(純粋な AUTO_INCREMENT INT など)は避けてください。同様に書き込みホットスポットの原因になります。複合主キーやランダム性のあるプレフィックスの使用を推奨
- AUTO_INCREMENT 列は独立した主キーまたはユニークインデックスとして定義する必要があります。そうしないと値が重複する可能性があります
- パーティションテーブル:主キーとすべてのユニークインデックスにはパーティションキーを含める必要があります
テーブル構造設計規範
- 単一テーブルの列数は60以下を推奨(上限: 4096列)
- 単一行のデータは64KB以下を推奨(上限: デフォルト64MB、最大512MBに調整可)
- テーブル名は32文字以内を推奨(上限: 64文字)
- ストレージエンジンは統一して RocksDB。テーブル作成時にどのエンジンを指定しても無視されます
数量制限
| 項目 | 制限 |
|---|---|
| 単一テーブル最大列数 | 4096 |
| 単一テーブル最大インデックス数 | 64 |
| 単一テーブル最大パーティション数 | 8192 |
| インデックス最大バイト数 | 3072バイト |
| インデックス最大列数 | 16列/インデックス |
| 単一行最大長 | デフォルト64MB、最大512MB |
| 最大テーブル作成数 | ノードスペックに依存(1万〜8万) |
パーティションテーブル規範
パーティション戦略の選択
| 戦略 | 適用シナリオ | キータイプ |
|---|---|---|
| HASH | 均一分散、整数キー | 整数型 |
| KEY | 均一分散、文字列キー | 任意の型 |
| RANGE | 時間範囲、ID 区間クエリ | 整数/日付 |
| LIST | 列挙値分類(地域など) | 整数 |
パーティションキー規範
- 主キーとすべてのユニークインデックスにパーティションキーを含める必要があります(違反するとテーブル作成が失敗します)
- クエリの WHERE 句にはパーティションキーを含める必要があります。そうしないと全パーティションスキャンが発生します
- UPDATE でパーティションキーの値を変更しないでください。クロスパーティションのデータ移行が発生し、パフォーマンスが低下します
同期テーブル規範
定義と適用シナリオ
同期テーブルは書き込み時にすべての有効な Follower レプリカに強同期してからレスポンスを返します。
適用シナリオ:
- グローバルシステム設定テーブル、パラメータテーブル
- データウェアハウスのディメンションテーブル(商品カテゴリ、地域辞書など)
- TPC-C の item テーブルなど、読み取り多/書き込み少の小テーブル
非推奨シナリオ:
- 高頻度書き込みテーブル(レプリカ数が多いほど書き込みパフォーマンスが低下)
- 大容量データテーブル