2016-11-15 58 views
0

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

 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%,这是推荐值。任何人都可以解释这种内存消耗?

回答

3

我认为这些价值观代表什么默认

整个InnoDB缓冲池在服务器启动时分配的消耗可能被未分配的最大的消耗,所以降低innodb_buffer_pool_size规模将减少初始内存足迹由MySQL使用。

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

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

由于您在其他地方提及您使用的是Jelastic,如果您想手动调整这些设置,则应该从my.cnf(通常位于/靠近第1行)删除#Jelastic autoconfiguration mark.行;否则会自动缩放以适应您的云端缩放限制(即,每次调整云端限制或重新启动MySQL时,您的更改都会被覆盖)。

0

的key_buffer_size

的key_buffer_size变量的最大大小为4 GB在32台机器上,以及较大的64台机器。 MySQL建议您保持key_buffer_size小于或等于机器上RAM的25%。

innodb_buffer_pool_size

推荐范围:60〜80%

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