MYSQL 默认 RAM 消耗

MYSQL default RAM consumption

我有一个 32GB RAM MYSQL 服务器。它仍然是全新的,除了默认数据库外没有附加数据库。但是,当我 运行 free -m 命令时,我得到以下信息:

       total     used     free    shared  buff/cache available
Mem:   32768     2972     29718     10       76        29692
Swap:  16384     0        16384

当我联系主机时,他们告诉我 MYSQL 默认占用主内存的 10%,他们建议我配置以下参数:

key_buffer_size = 8192M
myisam_sort_buffer_size = 10922M
innodb_buffer_pool_size = 16384M

我认为这些值代表可以分配的最大消耗,而不是默认消耗的值,它们是 MYSQL 的推荐值。例如 8192M / 32768M(总内存)= 25%,这是推荐值。谁能解释一下这种内存消耗?

Those values I think represent the maximum consumption that could be allocated not what's consumed by default

整个 InnoDB 缓冲池是在服务器启动时分配的,因此减小 innodb_buffer_pool_size 的大小将减少 MySQL 使用的初始内存占用量。

我相信其他 MySQL 缓冲区也是如此,例如 key_buffer_sizemyisam_sort_buffer_size

但是,您在调整这些参数时应该考虑实际的服务器工作负载。启动时使用的内存量无关紧要;有趣的是当服务器与真实数据库一起使用时内存使用情况如何。

由于您(在其他地方)提到您正在使用 Jelastic,如果您想手动删除 my.cnf 中的 #Jelastic autoconfiguration mark. 行(通常是 at/near 行 1)调整这些设置;否则它们会自动缩放以适应您的 cloudlet 缩放限制(即每次您调整 cloudlet 限制或重新启动时您的更改将被覆盖 MySQL)。

key_buffer_size

key_buffer_size 变量的最大大小在 32 位机器上为 4 GB,在 64 位机器上更大。 MySQL 建议您保持 key_buffer_size 小于或等于计算机 RAM 的 25%。

innodb_buffer_pool_size

推荐范围:60~80%

MySQL 5.7 and it’s online buffer pool resize feature 应该使这条原则更容易遵循。