数据库
首页 > 数据库> > MySQL 实际内存分配情况介绍

MySQL 实际内存分配情况介绍

作者:互联网

RDS 的内存是重要的性能参数,常常出现由于异常的 SQL 请求以及待优化的数据库导致内存利用率升高的情况,严重时还会出现由于 OOM 导致实例发生 HA 切换的情况。

MySQL 的内存大体可以分为共享内存和 session 私有内存两部分,下面将详细介绍各部分的构成。

共享内存

执行如下命令,即可查询示例的共享内存分配情况:

 
  1. show variables where variable_name in (
  2. 'innodb_buffer_pool_size','innodb_log_buffer_size','innodb_additional_mem_pool_size','key_buffer_size','query_cache_size'
  3. );

如下是内存规格为 240 M 的 RDS 实例的共享内存分配情况的查询结果:

 
  1. +---------------------------------+-----------------+
  2. | Variable_name | Value |
  3. +---------------------------------+-----------------+
  4. | innodb_additional_mem_pool_size | 2097152 |
  5. | innodb_buffer_pool_size | 67108864 |
  6. | innodb_log_buffer_size | 1048576 |
  7. | key_buffer_size | 16777216 |
  8. | query_cache_size | 0 |
  9. +---------------------------------+-----------------+
  10. 共返回 5 行记录,花费 342.74 ms.

参数说明:

Session 私有内存

共享内存中介绍的内存空间是实例创建时即分配的内存空间,并且是所有连接共享的。而出现 OOM 异常的实例都是由于下面各个连接私有的内存造成的。

执行如下命令,查询示例的 session 私有内存分配情况:

 
  1. show variables where variable_name in (
  2. 'read_buffer_size','read_rnd_buffer_size','sort_buffer_size','join_buffer_size','binlog_cache_size','tmp_table_size'
  3. );

查询结果如下(如下为测试实例配置):

 
  1. +-------------------------+-----------------+
  2. | Variable_name | Value |
  3. +-------------------------+-----------------+
  4. | binlog_cache_size | 262144 |
  5. | join_buffer_size | 262144 |
  6. | read_buffer_size | 262144 |
  7. | read_rnd_buffer_size | 262144 |
  8. | sort_buffer_size | 262144 |
  9. | tmp_table_size | 262144 |
  10. +-------------------------+-----------------+
  11. 共返回 6 行记录,花费 356.54 ms.

参数说明:

标签:缓存,RDS,buffer,innodb,内存,MySQL,分配情况,size
来源: https://www.cnblogs.com/moss_tan_jun/p/12846389.html