Amazon RDS 上的 MariaDB 的缓存预热
InnoDB 高速缓存预热可为您的 MariaDB 实例提供性能收益,方式是在数据库实例关闭时保存缓冲池的当前状态,然后在数据库实例启动时从保存的信息重新加载缓冲池。此方法将不再需要缓冲池使用常规数据库进行“预热”,而是预加载具有已知常见查询的页的缓冲池。有关缓存预热的更多信息,请参阅 MariaDB 文档中的转储和还原缓冲池
默认情况下,在 MariaDB 10.3 和更高版本的数据库实例上启用缓存预热。要启用该功能,请将数据库实例的参数组中的 innodb_buffer_pool_dump_at_shutdown
和 innodb_buffer_pool_load_at_startup
参数设置为 1。更改参数组中的这些参数值将影响使用该参数组的所有 MariaDB 数据库实例。要为特定 MariaDB 数据库实例启用缓存预热,您可能需要为这些数据库实例创建新的参数组。有关参数组的信息,请参阅Amazon RDS 的参数组。
缓存预热主要为使用标准存储的数据库实例提高性能。如果您使用 PIOPS 存储,则通常看不到显著的性能收益。
重要
如果您的 MariaDB 数据库实例未正常关闭 (例如,在故障转移期间),则缓冲池状态将不会保存到磁盘。在此情况下,MariaDB 将在重新启动数据库实例时加载任何可用的缓冲池文件。这不会造成任何损害,但还原后的缓冲池可能不会反映缓冲池在重新启动前的最新状态。要确保您拥有启动时可用于预热 缓存的缓冲池的最新状态,建议您定期“按需”转储缓冲池。您可以按需转储或加载缓冲池。
您可创建事件来定期自动转储缓冲池。例如,以下语句创建一个名为 periodic_buffer_pool_dump
的事件,该事件每小时转储一次缓冲池。
CREATE EVENT periodic_buffer_pool_dump ON SCHEDULE EVERY 1 HOUR DO CALL mysql.rds_innodb_buffer_pool_dump_now();
有关更多信息,请参阅 MariaDB 文档中的事件
按需转储和加载缓冲池
您可以使用以下存储过程按需保存和加载 缓存:
要将缓冲池的当前状态转储到磁盘,请调用 mysql.rds_innodb_buffer_pool_dump_now 存储过程。
要从磁盘加载缓冲池的已保存状态,请调用 mysql.rds_innodb_buffer_pool_load_now 存储过程。
要取消正在进行的加载操作,请调用 mysql.rds_innodb_buffer_pool_load_abort 存储过程。