目次
1) 前提:Vtiger 8 のカスタム項目は“列追加”になる
Vtiger 8 では、モジュールの追加フィールド(カスタムフィールド)は vtiger_<module>cf に カラム(列)として追加されます。
2) DB側のハード制限(MySQL 8 / InnoDB)
(A) カラム数上限:最大 1017 列
InnoDB テーブルは 最大 1017 カラムまでという上限があります。 (MySQL)
※Vtiger運用では、ここに到達する前に「行サイズ」や性能・保守性で先に限界が来ることがほとんどです。
(B) 行サイズ上限:最大 65,535 bytes(BLOB/TEXT 等は除外扱い)
MySQL には “テーブル行の内部表現”として最大 65,535 bytes という上限があります(BLOB/TEXT はこの計算への寄与が小さい)。 (MySQL)
(C) utf8mb4 は最大 4 bytes/文字
utf8mb4 は 最大4バイト/文字(utf8mb3は最大3バイト/文字)です。 (MySQL)
→ よって 同じ varchar(255) でも “宣言上の最大サイズ” が大きくなり、行サイズ上限に早く近づく、という見立てになります。
(D) 参考:インデックス接頭辞長 3072 bytes(DYNAMIC/COMPRESSED)
検索対象にしてインデックスを付けるとき、InnoDB(DYNAMIC/COMPRESSED)の インデックス接頭辞長上限は 3072 bytes です。 (MySQL)
※大量フィールドの“検索要件”がある場合、この制限が別のボトルネックになります。
3) utf8mb4 前提の「項目数」実務ガイドライン(Vtiger 8.x向け)
3-1. 推奨上限(運用・UI・性能の“ソフト上限”)
DBのハード制限より先に効いてくるため、まずはこれを基本ルールにします。
- 快適運用(推奨):~80項目/モジュール
- 許容(設計工夫前提):81~150項目
- 要リファクタ(分割検討):151~250項目
- 非推奨:251項目以上(子モジュール化・分割が基本)
UI面の目安:
- 一覧表示列:8~15列
- 編集画面に同時表示:30~60項目(ブロック分割・関連タブへ退避)