RDS 的内存是重要的性能参数,常常出现由于异常的 SQL 请求以及待优化的数据库导致内存利用率升高的情况,严重时还会出现由于 OOM 导致实例发生 HA 切换的情况。
MySQL 的内存大体可以分为共享内存和 session 私有内存两部分,下面将详细介绍各部分的构成。
共享内存
执行如下命令,即可查询示例的共享内存分配情况:
show variables wherevariable_name in(
'innodb_buffer_pool_size','innodb_log_buffer_size','innodb_additional_mem_pool_size','key_buffer_size','query_cache_size'
);
如下是内存规格为 240 M 的 RDS 实例的共享内存分配情况的查询结果:
+---------------------------------+-----------------+
|Variable_name|Value|
+---------------------------------+-----------------+
|innodb_additional_mem_pool_size |2097152|
|innodb_buffer_pool_size |67108864|
|innodb_log_buffer_size |1048576|
|key_buffer_size |16777216|
|query_cache_size |0|
+---------------------------------+-----------