Mysql启动占用内存过高解决

2023-12-14 05:17:32

Hi, I’m Shendi


Mysql启动占用内存过高解决




前言

最近服务器内存不够用了,甚至还出现了内存溢出问题,导致程序宕机。但请求与用户量并没有多少,所以从各种启动的程序中想方设法的尽可能的减少其占用的内存。

而在我的服务器中,Mysql服务占大头,吃了400多MB

经过修改配置,优化,最后降到100多MB,如下

在这里插入图片描述



减少内存占用的几个方法

使用本地数据库来进行测试。目前什么都没有配置也没有连接,Mysql 服务占用 360MB

在这里插入图片描述



调整表缓存与表定义缓存数量

在mysql配置文件 my.ini 中,[mysqld] 部分,新增或修改下面两个项

  • table_open_cache(打开的表缓存数量)
    • 表缓存是MySQL用来存储已经被打开的表的一种内存数据结构,可以提高查询性能
  • table_definition_cache(打开的表定义缓存数量)
    • 表定义缓存用于存储表的定义信息,包括列的数量、类型、索引等

按照自己的需求更改,我的表不超过100个,于是我直接设置100

table_open_cache=100
table_definition_cache=100

重启 mysql 后发现内存降至 246MB,较之前少了一百多MB

在这里插入图片描述



关闭 performance_schema

将上面的操作注释,依然是360MB

同样,在mysql的my.ini文件中的[mysqld] 部分加入下面这样的代码

performance_schema=off

performance_schema 是MySQL的一个特殊模式,用于监控数据库服务器的性能和运行状态。通过它可以查看数据库服务器的性能指标,如查询执行情况、连接情况、内存使用情况等。如果performance_schema=off,则不会记录这些性能指标,也就无法通过performance_schema来查看数据库服务器的性能状态。


将其关闭后,重启Mysql服务,发现内存占用一下就少了很多。从360MB变到70多MB

在这里插入图片描述


结合第一个方法,内存变动不大


剩下的就是调整连接数等,但对我来说,现在的内存占用已经可以了。




END

文章来源:https://blog.csdn.net/qq_41806966/article/details/134881017
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。