

# Amazon RDS for MySQL の既知の問題と制限
<a name="CHAP_MariaDB.Limitations"></a>

RDS for MariaDB を使用する際の既知の問題と制限事項は次のとおりです。

**注記**  
これはすべてを網羅したリストではありません。

**Topics**
+ [Amazon RDS での MariaDB のファイルサイズ制限](#RDS_Limits.FileSize.MariaDB)
+ [InnoDB 予約語](#MariaDB.Concepts.InnodbDatabaseName)
+ [カスタムポート](#MariaDB.Concepts.CustomPorts)
+ [Performance Insights](#MariaDB.Concepts.PerformanceInsights)

## Amazon RDS での MariaDB のファイルサイズ制限
<a name="RDS_Limits.FileSize.MariaDB"></a>

MariaDB DB インスタンスの場合、InnoDB file-per-table テーブルスペースを使用するとき、テーブルのサイズは最大 16 TB です。また、システムのテーブルスペースも最大 16 TB に制限されています。InnoDB file-per-table テーブルスペース (各テーブルが独自のテーブルスペースに存在) が、デフォルトで MariaDB DB インスタンスに設定されます。この制限は MariaDB DB インスタンスの最大ストレージ制限とは関係ありません。ストレージの制限の詳細については、「[Amazon RDS DB インスタンスストレージ](CHAP_Storage.md)」を参照してください。

InnoDB file-per-table テーブルスペースの使用は、アプリケーションにより長所と短所があります。アプリケーションに最適な方法を判断するには、MySQL ドキュメントの「[File-Per-Table テーブルスペース](https://dev.mysql.com/doc/refman/5.7/en/innodb-file-per-table-tablespaces.html)」を参照してください。

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

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

**すべての InnoDB テーブルスペースのサイズを確認するには**
+ 次の SQL コマンドを使用して、パーティション化の対象になる過度に大きなテーブルがあるか判断します。
**注記**  
MariaDB 10.6 以降では、このクエリは InnoDB システムテーブルスペースのサイズも返します。  
10.6 より前のバージョンの MariaDB では、システムテーブルをクエリして InnoDB システムテーブルスペースのサイズを判断することはできません。新しいバージョンにアップグレードすることをお勧めします。

  ```
  1. SELECT SPACE,NAME,ROUND((ALLOCATED_SIZE/1024/1024/1024), 2) 
  2. as "Tablespace Size (GB)"  
  3. FROM information_schema.INNODB_SYS_TABLESPACES ORDER BY 3 DESC;
  ```

**InnoDB 以外のユーザーテーブルのサイズを確認するには**
+ 次の SQL コマンドを使用して、InnoDB 以外のユーザーテーブルが過度に大きいかどうかを確認します。

  ```
  SELECT TABLE_SCHEMA, TABLE_NAME, round(((DATA_LENGTH + INDEX_LENGTH+DATA_FREE)
  / 1024 / 1024/ 1024), 2) As "Approximate size (GB)" FROM information_schema.TABLES
  WHERE TABLE_SCHEMA NOT IN ('mysql', 'information_schema', 'performance_schema')
  and ENGINE<>'InnoDB';
  ```

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

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

パラメータグループの更新については、「[Amazon RDS のパラメータグループ](USER_WorkingWithParamGroups.md)」を参照してください。

InnoDB file-per-table テーブルスペースを有効または無効にした場合は、`ALTER TABLE` コマンドを発行できます。このコマンドを使用して、テーブルをグローバルテーブルスペースからテーブル独自のテーブルスペースに移動できます。または、テーブルを独自のテーブルスペースからグローバルテーブルスペースに移動できます。次に例を示します。

```
1. ALTER TABLE table_name ENGINE=InnoDB, ALGORITHM=COPY; 
```

## InnoDB 予約語
<a name="MariaDB.Concepts.InnodbDatabaseName"></a>

`InnoDB` は MariaDB の RDS の予約語です。MariaDB データベースにこの名前を使用することはできません。

## カスタムポート
<a name="MariaDB.Concepts.CustomPorts"></a>

Amazon RDS は MariaDB エンジンのカスタムポート 33060 への接続をブロックします。MariaDB エンジン用に別のポートを選択してください。

## Performance Insights
<a name="MariaDB.Concepts.PerformanceInsights"></a>

InnoDB カウンターは、MariaDB コミュニティではサポートされなくなったため、MariaDB バージョン 10.11 の RDS の Performance Insights には表示されません。