Amazon Aurora(MySQL互換)のテーブルの最大行サイズと最大キー長に関するまとめです。
内容的にはほぼMySQLと共通。
環境
-
Amazon Aurora:2.08.1(MySQL5.7と互換性のあるもの)
- 「開発/テスト」用
- DBインスタンスサイズ:db.r5.large
- ストレージエンジン:InnoDB
-
クライアントOS:Windows10
-
DB接続ツール:A5SQL:Mk2
1. テーブルの最大行サイズについて
- 最大行サイズ:65535バイト(InnoDBのページサイズ16Kバイト(デフォルト)の場合)
→ 文字コード:utf8mb4の場合、16383文字が最大 - BLOB型、TEXT型は上記の限りではない(別領域にデータを格納するため)
→ 例えば、一部のカラムをTEXT型で定義して50,000文字格納することも可能
2. 最大キー長について
- 最大キー長(インデックスを構成するカラムサイズの合計の最大)はInnoDBのページサイズ
- BLOB型、TEXT型はINDEXに指定できない(以下のようなエラーになる)
注意事項と対処法
Amazon Aurora(MySQL互換)では、対象DBに割り当てられている「DBのパラメータグループ」の「sql_mode」は「0(設定値なし)」になっています。
このままだと、テーブル定義、インデックス定義する際などに、暗黙的にデータ型が変更されてしまう場合があります。
デフォルトで割り当てられている「default.aurora-mysql5.7」は編集できないので、「DBのパラメータグループ」を新規作成して「sql_mode」を「STRICT_TRANS_TABLES」に変更→対象DBに割り当てます。
その後、対象のDBインスタンスを再起動して適用します。
参考
- 第44回 MySQLで扱える文字列型の種類を理解する | gihyo.jp
- CLOB 【 Character Large Object 】 CLOB型 / キャラクタラージオブジェクト | IT用語辞典 e-Words
- 5.1.10 Server SQL Modes | MySQL 5.7 Reference Manual
- varcharとtextの違い(mysql innodb) | lxyuma BLOG
- 8.4.7 Limits on Table Column Count and Row Size | MySQL 5.7 Reference Manual
- 14.23 InnoDB Limits | MySQL 5.7 Reference Manual
- 1.8.3.3 Constraints on Invalid Data | MySQL 5.7 Reference Manual
- 13.1.18.6 Silent Column Specification Changes | MySQL 5.7 Reference Manual