当前位置:首页 > 内存 > 正文

mysql占用内存不断加大(mysqld占用内存较高)

  • 内存
  • 2024-05-11 19:29:37
  • 6011

一、linux下怎么优化mysql占用内存?

修改MySQL配置文件,优化缓存大小和连接数,优化SQL语句。记住MySQL好像有一个工具可以查看消耗资源最多的SQL语句,找到它们并优化它们。

安装MySQL后,配置文件应位于/usr/local/mysql/share/mysql目录中。配置文件有好几个,包括,不同流量的网站和不同配置的服务器环境自然需要不同的配置文件。

一般情况下,配置文件可以满足我们的大部分需求。一般我们都是将配置文件复制到/etc/中,现在我们只需要修改这个配置文件即可使用mysqladminvariablesextended-status_uroot_p查看当前参数。其中最重要的三个配置参数是key_buffer_size、query_cache_size和table_cache。

key_buffer_size仅适用于MyISAM表

key_buffer_size指定索引缓冲区的大小,它决定了索引处理的速度,尤其是索引读取的速度。一般我们将该值设置为16MB。然而,对于稍大一点的网站来说,这个数字还远远够。通过检查Key_read_requests和Key_reads状态值,可以判断key_buffer_size设置是否合适。key_reads/key_read_requests的比例应该尽可能低,至少1:100,更好的是1:1000(上面的状态值可以用SHOWSTATUSLIKE'key_read%'找到)。或者如果你安装了phpmyadmin,你可以通过服务器的运行状态看到它。作者推荐使用phpmyadmin来管理MySQL。以下状态值是我通过phpmyadmin得到的示例分析:

此服务器已运行20天

key_buffer_size_128M

key_read_requests_650759289

key_reads-79112

比例接近1:8000,状态非常好


二、MySQLCPU占用过高怎么办

CPU占用过高的解决方法如下:

1同时按下键盘上的Ctrl+Alt+Delete,点击“启用任务管理器(T)”即可查看CPU占用情况。。(这里只有27%,因为游戏没有运行,后台打开的程序也不多。)

2按Win+组合键R进入运行在窗口中输入“msconfig”,点击“开始”不要打开太多程序,以减少CPU占用。


三、Mysql5.7服务开启之后,占内存过多,怎么减小?

如果我们查看“top”命令的输出,我们会看到:MySQL5.7

MySQL8.0

这也说明MySQL8使用了更多的常驻内存和虚拟内存。尤其是“可怕的”虚拟内存,因为它远远超过这些虚拟机中可用的1GB物理内存。当然,虚拟内存使用量(VSZ)并不能很好地反映现代应用程序的实际内存需求,但它证实了更高内存需求的想法。

实际上,从“vmstat”输出中我们知道,MySQL8和MySQL5.7在低负载下都不会使用交换分区,即使“空间”不多。如果您有多个连接或想要在同一虚拟机中运行多个应用程序,则可以使用交换(如果不启用交换可能会导致OOM)。

这是一个有趣的实验,旨在了解MySQL5.7和MySQL8可以驱动多少内存消耗。