メニュー
Amazon Relational Database Service
ユーザーガイド (API Version 2014-10-31)

Amazon RDS の制限

このトピックでは、Amazon RDS でのリソース制限と命名に関する制約について説明します。

Amazon RDS の制限

各 AWS アカウントでは、リージョンごとに、作成できる Amazon RDS リソースの数に対して制限があります。リソースの制限に達すると、リソースを作成するための追加の呼び出しは、例外が発生して失敗します。

次の表に、リソースとリージョンごとの制限を示します。

リソース デフォルトの制限
クラスター 40
クラスターパラメータグループ 50
DB インスタンス 40
イベントサブスクリプション 20
手動スナップショット 100
手動クラスタースナップショット 100
オプショングループ 20
パラメータグループ 50
マスター当たりのリードレプリカ 5
リザーブドインスタンス (1 か月あたりの購入) 40
セキュリティグループ当たりのルールの数 20
セキュリティグループ 25
セキュリティグループ (VPC) 5
サブネットグループ 50
サブネットグループあたりのサブネット 20
リソースあたりのタグ 50
すべての DB インスタンスの合計ストレージ 100 TB

Amazon RDS の命名に関する制約

次の表に、Amazon RDS の命名に関する制約を示します。

DB インスタンス識別子

  • 1~63 文字の英数字またはハイフンを使用する必要があります。

  • 1 字目は文字である必要があります。

  • ハイフンを、文字列の最後に使用したり、2 つ続けて使用したりすることはできません。

  • 1 つの AWS アカウント、1 つのリージョンにつき、すべての DB インスタンスにおいて一意である必要があります。

データベース名

データベース名の制約は、データベースエンジンごとに異なります。

MySQL、Amazon Aurora、MariaDB

  • 1 ~ 64 文字の英数字を使用する必要があります。

  • データベースエンジンの予約語は使用できません。

PostgreSQL

  • 1 ~ 63 文字の英数字を使用する必要があります。

  • 先頭は英字またはアンダースコアにする必要があります。後続の文字には、英字、アンダースコア、または数字 (0 ~ 9) を含めることができます。

  • データベースエンジンの予約語は使用できません。

Oracle

  • 8 文字より長くすることはできません。

SQL Server

  • 該当しません. SQL Server の場合は、DB インスタンスを作成した後、データベースを作成します。データベース名は、通常の SQL Server の命名ルールに従います。

マスターユーザー名

マスターユーザー名の制約は、データベースエンジンごとに異なります。

MySQL と Amazon Aurora

  • 1 ~ 16 文字の英数字を使用する必要があります。

  • 1 字目は文字である必要があります。

  • データベースエンジンの予約語は使用できません。

Oracle

  • 1 ~ 30 文字の英数字を使用する必要があります。

  • 1 字目は文字である必要があります。

  • データベースエンジンの予約語は使用できません。

SQL Server

  • 1 ~ 64 文字の英数字を使用する必要があります。

  • 1 字目は文字である必要があります。

  • データベースエンジンの予約語は使用できません。

PostgreSQL

  • 1 ~ 63 文字の英数字を使用する必要があります。

  • 1 字目は文字である必要があります。

  • データベースエンジンの予約語は使用できません。

MariaDB

  • 1 ~ 16 文字の英数字を使用する必要があります。

  • データベースエンジンの予約語は使用できません。

マスターパスワード

マスターデータベースユーザーのパスワードには、表示可能な ASCII 文字のうち、/、"、または @ を除く任意の文字を使用できます。マスターパスワードの制約は、データベースエンジンごとに異なります。

MySQL、Amazon Aurora、MariaDB

  • 8 ~ 41 文字にする必要があります。

Oracle

  • 8 ~ 30 文字にする必要があります。

SQL Server

  • 8 ~ 128 文字にする必要があります。

PostgreSQL

  • 8 ~ 128 文字にする必要があります。

DB パラメータグループ名

  • 1 ~ 255 文字の英数字を使用する必要があります。

  • 1 字目は文字である必要があります。

  • ハイフンを、文字列の最後に使用したり、2 つ続けて使用したりすることはできません。

Amazon RDS のファイルサイズ制限

Amazon RDS での Aurora のファイルサイズ制限

Amazon Aurora では、テーブルサイズの制限は Aurora クラスターボリュームのサイズによってのみ制限されます。これは、最大 64 テラバイト (TB) です。したがって、Aurora データベース内のテーブルの最大テーブルサイズは 64 TB です。

Amazon RDS の MySQL のファイルサイズ制限

Amazon RDS MySQL DB インスタンスの場合、InnoDB file-per-table テーブル領域を使用するとき、プロビジョンドストレージの最大サイズにより、テーブルのサイズは最大 6 TB に制限されます。また、システムのテーブルスペースも最大 6 TB に制限されています。テーブルがそれぞれに固有のテーブル領域に存在する InnoDB file-per-table テーブル領域は、Amazon RDS MySQL DB インスタンスに対してデフォルトで設定されます。

注記

2014 年 4 月より前に作成された MySQL DB インスタンスには、2 TB のテーブルサイズの制限があります。この 2 TB というファイルサイズの制限は、2014 年 4 月より前に作成された DB スナップショットから作成された DB インスタンスまたはリードレプリカにも適用されます。その DB インスタンスがいつ作成されたかには関係ありません。

InnoDB file-per-table テーブルスペースの使用は、アプリケーションにより長所と短所があります。アプリケーションに最適な方法を判断するには、MySQL のドキュメントで「InnoDB File-Per-Table Mode」を参照してください。

テーブルを最大ファイルサイズまで拡張可能にすることはお勧めしません。一般的に望ましいのは、データを小さなテーブルにパーティション分割することです。これにより、パフォーマンスと復旧時間が改善される可能性があります。

大きなテーブルを小さなテーブルに分ける方法の 1 つはパーティション化です。パーティション化は、指定したルールに基づいて、大きなテーブルの各部分を個別のファイルに分散します。たとえば、トランザクションを日付ごとに保存する場合、パーティション化を使用して古いトランザクションを別々のファイルに分散させるパーティションルールを作成できます。また、定期的に、アプリケーションですぐに使用する必要のない履歴トランザクションデータをアーカイブできます。詳細については、MySQL ドキュメントの「Partitioning」を参照してください。

テーブルのファイルサイズを確認するには

次の SQL コマンドを使用して、パーティション化の対象になる過度に大きなテーブルがあるか判断します。テーブル統計を更新するには、各テーブルに ANALYZE TABLE コマンドを発行します。詳細については、MySQL ドキュメントの「ANALYZE TABLE」を参照してください。

Copy
SELECT TABLE_SCHEMA, TABLE_NAME, round(((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024), 2) As "Approximate size (MB)", DATA_FREE FROM information_schema.TABLES WHERE TABLE_SCHEMA NOT IN ('mysql', 'information_schema', 'performance_schema');

InnoDB file-per-table テーブルスペースを有効にするには

  • InnoDB file-per-table テーブルスペースを有効にするには、DB インスタンスのパラメータグループで innodb_file_per_table パラメータを 1 に設定します。

InnoDB file-per-table テーブルスペースを無効にするには

  • InnoDB file-per-table テーブルスペースを無効にするには、DB インスタンスのパラメータグループで innodb_file_per_table パラメータを 0 に設定します。

パラメータグループの更新については、「DB パラメータグループを使用する」を参照してください。

InnoDB file-per-table テーブルスペースを有効または無効にすると、次の例のように ALTER TABLE コマンドを実行してテーブルをグローバルテーブルスペースから固有のテーブルスペースに、または固有のテーブルスペースからグローバルテーブルスペースに移動できます。

Copy
ALTER TABLE table_name ENGINE=InnoDB, ALGORITHM=COPY;

Amazon RDS での MariaDB のファイルサイズ制限

Amazon RDS MariaDB DB インスタンスの場合、InnoDB file-per-table テーブル領域を使用するとき、プロビジョンドストレージの最大サイズにより、テーブルのサイズは最大 6 TB に制限されます。 また、システムのテーブルスペースも最大 6 TB に制限されています。テーブルがそれぞれに固有のテーブル領域に存在する InnoDB file-per-table テーブル領域は、Amazon RDS MariaDB DB インスタンスに対してデフォルトで設定されます。

InnoDB file-per-table テーブルスペースの使用は、アプリケーションにより長所と短所があります。アプリケーションに最適な方法を判断するには、MySQL のドキュメントで「InnoDB File-Per-Table Mode」を参照してください。

テーブルを最大ファイルサイズまで拡張可能にすることはお勧めしません。一般的に望ましいのは、データを小さなテーブルにパーティション分割することです。これにより、パフォーマンスと復旧時間が改善される可能性があります。

大きなテーブルを小さなテーブルに分ける方法の 1 つはパーティション化です。パーティション化は、指定したルールに基づいて、大きなテーブルの各部分を個別のファイルに分散します。たとえば、トランザクションを日付ごとに保存する場合、パーティション化を使用して古いトランザクションを別々のファイルに分散させるパーティションルールを作成できます。また、定期的に、アプリケーションですぐに使用する必要のない履歴トランザクションデータをアーカイブできます。詳細については、MySQL のドキュメントの https://dev.mysql.com/doc/refman/5.6/en/partitioning.html を参照してください。

テーブルのファイルサイズを確認するには

次の SQL コマンドを使用して、パーティション化の対象になる過度に大きなテーブルがあるか判断します。テーブル統計を更新するには、各テーブルに ANALYZE TABLE コマンドを発行します。詳細については、MySQL ドキュメントの「ANALYZE TABLE」を参照してください。

Copy
SELECT TABLE_SCHEMA, TABLE_NAME, round(((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024), 2) As "Approximate size (MB)", DATA_FREE FROM information_schema.TABLES WHERE TABLE_SCHEMA NOT IN ('mysql', 'information_schema', 'performance_schema');

InnoDB file-per-table テーブルスペースを有効にするには

  • InnoDB file-per-table テーブルスペースを有効にするには、DB インスタンスのパラメータグループで innodb_file_per_table パラメータを 1 に設定します。

InnoDB file-per-table テーブルスペースを無効にするには

  • InnoDB file-per-table テーブルスペースを無効にするには、DB インスタンスのパラメータグループで innodb_file_per_table パラメータを 0 に設定します。

パラメータグループの更新については、「DB パラメータグループを使用する」を参照してください。

InnoDB file-per-table テーブルスペースを有効または無効にすると、次の例のように ALTER TABLE コマンドを実行してテーブルをグローバルテーブルスペースから固有のテーブルスペースに、または固有のテーブルスペースからグローバルテーブルスペースに移動できます。

Copy
ALTER TABLE table_name ENGINE=InnoDB, ALGORITHM=COPY;