【问题标题】:MYSQL default RAM consumptionMYSQL 默认 RAM 消耗
【发布时间】:2016-11-15 17:13:33
【问题描述】:

我有一个 32GB 内存的 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%,这是推荐值。谁能解释一下这种内存消耗?

【问题讨论】:

    标签: mysql database memory memory-management ram


    【解决方案1】:

    我认为这些值代表可以分配的最大消耗量,而不是默认消耗量

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

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

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

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

    【讨论】:

      【解决方案2】:

      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 应该让这个原则更容易遵循。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-01-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-14
        • 1970-01-01
        相关资源
        最近更新 更多