1、查看Mysql版本

# mysql -V

示例:

[root@root /]# mysql -V
mysql Ver 14.14 Distrib 5.7.44, for Linux (x86_64) using EditLine wrapper

各个参数含义:

  • mysql:表示这是一个MySQL命令。
  • Ver 14.14:表示MySQL的版本号是14.14。
  • Distrib 5.7.44:表示MySQL的发行版本是5.7.44。
  • for Linux (x86_64):表示这个MySQL版本是为Linux操作系统(64位)设计的。
  • using EditLine wrapper:表示MySQL使用EditLine作为命令行界面。

结论:当前Mysql版本是5.7.44

2、查看MySQL安装路径

# whereis mysql

示例:

[root@root /]# whereis mysql
mysql: /usr/bin/mysql /usr/lib64/mysql /usr/include/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz

各个参数含义:

  • mysql::表示接下来的内容是关于mysql的路径信息。
  • /usr/bin/mysql:表示mysql命令行工具的安装路径是/usr/bin/mysql。
  • /usr/lib64/mysql:表示mysql库文件的路径是/usr/lib64/mysql。
  • /usr/include/mysql:表示mysql头文件的路径是/usr/include/mysql。
  • /usr/share/mysql:表示mysql的配置文件的路径是/usr/share/mysql。
  • /usr/share/man/man1/mysql.1.gz:表示mysql命令行工具的手册页的路径是/usr/share/man/man1/mysql.1.gz。

结论:MySQL的安装路径是/usr/lib64/mysql

3、修改配置优化内存

3.1、优化前

当前一台2核2G的服务器,mysql占用内存情况如下:

top - 13:44:55 up 5 days, 20:22,  1 user,  load average: 0.00, 0.01, 0.05
Tasks: 113 total, 1 running, 112 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 0.2 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.2 si, 0.0 st
KiB Mem : 1798504 total, 164088 free, 723960 used, 910456 buff/cache
KiB Swap: 1049596 total, 1049596 free, 0 used. 876948 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
31243 mysql 20 0 1464.1m 198.8m 10.8m S 0.0 11.3 2:08.21 mysqld

可以看到当前Mysql占用的内存大小是198.8M。

3.2、优化配置

3.2.1 、查询配置文件的位置

通过执行mysqld --verbose --help | grep -A 1 "Default options",可以找到MySQL服务器启动时读取的配置文件路径

示例:

[root@root /]# mysql --verbose --help | grep -A 1 "Default options"
Default options are read from the following files in the given order:
/etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf

各个参数含义:

  • /etc/mysql/my.cnf:这是MySQL的默认配置文件路径,通常包含全局配置选项。
  • /etc/my.cnf:这是另一个常见的配置文件路径,用于存储全局配置选项。
  • ~/.my.cnf:这是用户级别的配置文件路径,可以用于覆盖全局配置选项。

MySQL会按照上述顺序依次读取这些配置文件,并将它们合并为一个最终的配置。

如果多个文件中存在相同的配置选项,则后面的文件中的值将覆盖前面的文件中的值。

结论:这里选择修改/etc/my.cnf文件,因为该文件通常用于存储全局配置选项。

3.2.2、修改配置文件

1、修改innodb_buffer_pool_size参数

这是InnoDB存储引擎的缓冲池大小,它决定了多少数据和索引被缓存在内存中,适当调整这个值可以减少内存使用。

查看当前的innodb_buffer_pool_size大小:

mysql> SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
+-------------------------+-----------+
| Variable_name | Value |
+-------------------------+-----------+
| innodb_buffer_pool_size | 134217728 |
+-------------------------+-----------+
1 row in set (0.00 sec)

当前的大小是约128M。

一般是占用总内存的50-70%,但我目前没什么数据量,所以砍一半,调成64M。

修改:

[root@root /]# vim /etc/my.cnf

[mysqld]
innodb_buffer_pool_size = 64M
innodb_log_file_size = 32M
innodb_log_buffer_size = 8M

将这三个值的大小都调低了一半。

2、修改key_buffer_size参数

key_buffer_size是MySQL中用于缓存MyISAM表索引的参数,我这里基本不用MyISAM,所以这个参数可以调小一点。

原来默认的是32M,我调整成8M。

key_buffer_size = 8M

重启Mysql,让修改生效

[root@root /]# systemctl restart mysqld

再次查看当前的innodb_buffer_pool_size大小:

mysql> SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
+-------------------------+----------+
| Variable_name | Value |
+-------------------------+----------+
| innodb_buffer_pool_size | 67108864 |
+-------------------------+----------+
1 row in set (0.00 sec)

可以看到当前的大小已经调整为64M了。

3.2、优化后效果

查看当前mysql的内存占用情况:

top - 14:53:31 up 5 days, 21:31,  1 user,  load average: 0.02, 0.04, 0.05
Tasks: 112 total, 1 running, 111 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.7 us, 0.3 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1798504 total, 157688 free, 630204 used, 1010612 buff/cache
KiB Swap: 1049596 total, 1049596 free, 0 used. 970700 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
24890 mysql 20 0 931.5m 124.8m 9.2m S 0.0 7.1 0:00.37 mysqld

通过top命令可以看到当前mysql的内存占用情况,已经从之前的198M降低到了128M左右。

内存占比也从之前的11.3%降到了7.1%。

总结:通过降低innodb_buffer_pool_size和key_buffer_size的值,成功降低了Mysql的内存占用情况,优化成功!!!

mysql刚安装没多久,配置都是默认的,目前只知道修改innodb_buffer_pool_size和key_buffer_size的值,不知道还有其他参数可以调整。

等以后知道了,在继续补充完善。

优化Mysql配置调整内存的更多相关文章

  1. 如何优化tomcat配置(从内存、并发、缓存4个方面)优化

    Tomcat有很多方面,我从内存.并发.缓存四个方面介绍优化方法.  ** 一.Tomcat内存优化 ** Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚 ...

  2. 优化tomcat配置(从内存、并发、缓存3个方面)优化

    Tomcat有很多方面,我从内存.并发.缓存三个方面介绍优化方法. 一.Tomcat内存优化 Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catal ...

  3. 【Tomcat】如何优化tomcat配置(从内存、并发、缓存4个方面)优化

    一.Tomcat内存优化 ** Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 java_OPTS 参数. JAVA_O ...

  4. 优化tomcat配置(从内存、并发、缓存)优化

    一.Tomcat内存优化 ** Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 java_OPTS 参数. JAVA_O ...

  5. TCMalloc优化MySQL、Nginx内存管理

    TCMalloc的全称为Thread-Caching Malloc,是谷歌开发的开源工具google-perftools中的一个成员. 与标准的glibc库的Malloc相比,TCMalloc库在内存 ...

  6. jemalloc优化MySQL、Nginx内存管理

    上一篇文章<TCMalloc优化MySQL.Nginx.Redis内存管理>,下面来看下jemalloc jemalloc源于Jason Evans 2006年在BSDcan confer ...

  7. 优化tomcat配置(从内存、并发、缓存4个方面)优化

    Tomcat内存优化 Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 java_OPTS 参数. JAVA_OPTS参数 ...

  8. 优化MySQL开启skip-name-resolve参数时显示“ignored in --skip-name-resolve mode.”Warning解决方法

    转自:http://blog.csdn.net/yiluoak_47/article/details/53381282 参数用途: skip-name-resolve #禁止MySQL对外部连接进行D ...

  9. Java面试题系列(六)优化tomcat配置

    序言 资料 如何优化tomcat配置(从内存.并发.缓存3个方面)优化

  10. 新安装的mysql必须调整的10项配置

    还在为新安装的mysql服务,不知道修改哪些默认配置而发愁吗?mysql可调整参数有100多个,到底要立即!马上!调整哪些最重要的参数? 网络神贴答复你: 这篇文章主要介绍了MySQL优化必须调整的1 ...

随机推荐

  1. P5943 [POI2002] 最大的园地 题解

    题目传送门 前置知识 单调栈 简化题意 在一个 \(n \times n\) 的正方形内找到最大的由 \(0\) 组成的子矩形的面积. 解法 令 \(f_{i,j}(1 \le i,j \le n)\ ...

  2. NC20951 网络优化

    题目链接 题目 题目描述 <梦三国2>是一款3D MOBA类网游.游戏继承<梦三国>的三国文化背景和基础玩法,并加入许多全新地图和全新竞技玩法.由于人气高,游戏在线人数与日俱增 ...

  3. csplit命令

    csplit命令 csplit命令将用PATTERN分隔的FILE文件输出到文件xx00.xx01....,并将每个文件的字节数输出到标准输出. 语法 csplit [OPTION]... FILE ...

  4. 项目实战:Qt+OSG三维2D文字实时效果查看工具

    需求   OSG三维中2D文字的基本属性较多,方便实时查看效果,并出对应文本代码.   Demo      工具下载地址   CSDN免积分下载地址:https://download.csdn.net ...

  5. queryset高级用法:prefetch_related

    这个方法和select_related方法类型,就是访问多个表中的数据的时候,减少查询的次数.这个方法是为了解决一对多和多对多的关系的查询问题.比如要获取标题中带有hello字符串的文章以及它的所有标 ...

  6. Vue 上传前获取图片宽度尺寸和大小

    参考资料:https://www.cnblogs.com/wyx-remove-love/p/wyx-20190626-1.html    https://blog.csdn.net/qq_22771 ...

  7. 【LeetCode二叉树#08】寻找树左下角的值(回溯机制X深度)

    找树左下角的值 力扣题目链接(opens new window) 给定一个二叉树,在树的最后一行找到最左边的值. 示例 1: 示例 2: 思路 层序遍历 这个是很自然的思路,因为层序遍历可以避免对于& ...

  8. 【Azure Storage Blob】如何通过.NET Azure Storage Blobs SDK获取到Blob的MD5值呢?

    问题描述 通过.NET Azure Storage Blobs SDK , 获取Blob的MD5值,查看了Azure操作手册中,介绍可以使用 blob.Properties.ContentMD5 属性 ...

  9. 【Azure Function App】Java Function部署到Azure后出现中文显示乱码问题

    问题描述 Java Function在Azure上遇见中文显示乱码问题?如何解决呢? 问题解答 中文字符显示为乱码,这个情况就是服务实例上设置的编码格式不是统一的UTF-8所导致的. 在查看Azure ...

  10. 关于KMP模式匹配的一些思考

    算法简介 模式匹配 给定主串text和模式串pattern,在主串中查找,如果找到了模式串,返回模式串在主串中的起始位置,从1开始计数. 暴力求解求解模式匹配 算法的核心思想是:蛮力法.即使用两个指针 ...