我有一个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%,这是建议值。任何人都可以解释这种内存消耗吗?
答案 0 :(得分:3)
我认为这些值代表的是可以分配的最大消耗,而不是默认消耗的
整个InnoDB缓冲池在服务器启动时分配,因此减小innodb_buffer_pool_size
的大小将减少MySQL使用的初始内存占用量。
我相信其他MySQL缓冲区也是如此,例如key_buffer_size
和myisam_sort_buffer_size
。
但是,在调整这些参数时应考虑实际的服务器工作负载。启动时使用的内存量无关紧要;有趣的是当服务器与真实数据库一起使用时内存使用情况如何。
由于您(其他地方)提及您正在使用Jelastic,因此如果您想手动调整这些内容,则应从#Jelastic autoconfiguration mark.
(通常在第1行/附近)删除my.cnf
行设置;否则它们会自动缩放以适应您的cloudlet扩展限制(即每次调整cloudlet限制或重新启动MySQL时,您的更改都将被覆盖)。
答案 1 :(得分:0)
<强>的key_buffer_size 强>
32位计算机上 key_buffer_size 变量的最大大小为4 GB,64位计算机的最大大小为4 GB。 MySQL建议您保持key_buffer_size小于或等于机器RAM的25%。
<强> innodb_buffer_pool_size 强>
推荐范围:60~80%
MySQL 5.7 and it’s online buffer pool resize feature应该让这更容易遵循原则。