RDS for MariaDB 的已知问题和限制
以下各项是使用 RDS for MariaDB 时的已知问题和限制。
注意
此列表并不详尽。
Amazon RDS 中的 MariaDB 文件大小限制
对于 MariaDB 数据库实例,在使用 InnoDB file-per-table 表空间时,表的最大大小为 16 TB。此限制也将系统表空间的最大大小约束为 16 TB。默认情况下,为 MariaDB 数据库实例设置 InnoDB file-per-table 表空间(每个表位于各自的表空间中)。此限制与 MariaDB 数据库实例的最大存储限制无关。有关存储限制的更多信息,请参阅 Amazon RDS 数据库实例存储。
根据您的应用程序,使用 InnoDB file-per-table 表空间有一些优缺点。要确定适用于您的应用程序的最佳方法,请参阅 MySQL 文档中的 File-Per-Table 表空间
建议不要允许表增长到最大文件大小。一般而言,更好的方法是将数据分区到较小的表中,这可以提高性能并缩短恢复时间。
可用于将大型表划分为多个较小表的一个选项是分区。分区 可基于您指定的规则将大型表的各个部分分布到单独的文件中。例如,如果您按日期存储事务,则可以创建分区规则,以便使用分区将较旧的事务分布到单独的文件中。随后您可以定期存档无需随时可供应用程序使用的历史事务数据。有关更多信息,请参阅 MySQL 文档中的分区
确定所有 InnoDB 表空间的大小
-
使用以下 SQL 命令可确定任何表是否太大以及是否适合进行分区。
注意
对于 MariaDB 10.6 及更高版本,此查询还返回 InnoDB 系统表空间的大小。
对于 10.6 之前的 MariaDB 版本,您无法通过查询系统表来确定 InnoDB 系统表空间的大小。我们强烈建议您升级到更高的版本。
SELECT SPACE,NAME,ROUND((ALLOCATED_SIZE/1024/1024/1024), 2) as "Tablespace Size (GB)" 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 的参数组。
当您启用或禁用 InnoDB file-per-table 表空间后,可以发出 ALTER TABLE
命令。您可以使用此命令将表从全局表空间移动到其自己的表空间。或者,您可以将表从其自己的表空间移动到全局表空间。以下为示例。
ALTER TABLE table_name ENGINE=InnoDB, ALGORITHM=COPY;
InnoDB 保留字
InnoDB
是 RDS for MariaDB 的保留字。您不能将此名称用于 MariaDB 数据库。
自定义端口
Amazon RDS 禁止连接到 MariaDB 引擎的自定义端口 33060。为您的 MariaDB 引擎选择不同的端口。
Performance Insights
InnoDB 计数器在 RDS for MariaDB 版本 10.11 的性能详情中不可见,因为 MariaDB 社区不再支持它们。