

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# RDS for MariaDB 的已知問題和限制
<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 資料庫執行個體，使用 InnoDB file-per-table 資料表空間時，資料表大小上限為 16 TB。此限制也會將系統資料表空間限制為最大 16 TB。InnoDB file-per-table 資料表空間 (其中每個資料表都在自己的資料表空間中) 會由 MariaDB 資料庫執行個體的預設設定。此上限與 MariaDB 資料庫執行個體的儲存空間上限無關。如需儲存空間限制的詳細資訊，請參閱 [Amazon RDS 資料庫執行個體儲存體](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)。

不建議允許資料表成長至檔案大小上限。一般來說，更理想的做法是將資料表分割成更小的資料表，如此可以改善效能並縮短復原時間。

您可以用於將大型資料表分成更小資料表的選項為分割。「分割」**會根據您指定的規則，將大型資料表的部分分散成個別檔案。例如，如果您依日期儲存交易，則可以建立分割規則，使用分割將較舊的交易分配成個別檔案。然後，您可以定期封存不需要立即可供應用程式使用的歷史交易資料。如需詳細資訊，請參閱 MySQL 文件中的[分割](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 資料表空間**
+ 在資料庫執行個體的參數群組中，將 `innodb_file_per_table` 參數設為 `1`。

**停用 InnoDB file-per-table 資料表空間**
+ 在資料庫執行個體的參數群組中，將 `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` 是用於 RDS for MariaDB 的保留字詞。此名稱無法用於 MariaDB 資料庫。

## 自訂連接埠
<a name="MariaDB.Concepts.CustomPorts"></a>

Amazon RDS 會封鎖 MariaDB 引擎的自訂連接埠 33060 的連線。為您的 MariaDB 引擎選擇不同的連接埠。

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

在適用於 RDS for MariaDB 10.11 版的 Performance Insights 中看不見 InnoDB 計數器，因為 MariaDB 社群不再支援這些計數器。