优化思路

针对MySQL优化,无非是涉及到内存、IO、CPU的优化,该文档将依次从这三个方面来介绍。

问题定位

如何定位是内存、IO、CPU当中的哪一个环节的问题。可以参考如下步骤:

  1. 使用top命令查看MySQL进程的CPU及内存使用情况。如果内存占用低,可以考虑进行内存参数优化;如果CPU使用率低,可以考虑进行CPU参数优化。

  2. 使用iotop或者iostat分析磁盘IO。关键考虑数据吞吐量和IOPS两个参数,如果吞吐量和IOPS过低,则需要进行磁盘参数优化。数据吞吐量可以通过iotop查看,IOPS可以通过fio测试得出。
    使用iotop查看磁盘读写最大的进程

    yum install iotop -y
    iotop
    

    使用iostat分析磁盘IO占用

    yum install sysstat -y
    iostat -x -m -d 2 10
    

    使用fio进行磁盘IOPS测试。注意:命令中的/tmp/iotest需要改为MySQL数据文件所在的磁盘

    yum install fio -y
    fio -name=randread-4K -rw=randrw -rwmixwrite=50 -bs=4K -filename=/tmp/iotest -size=1G -iodepth=32 -ioengine=libaio -direct=1 -runtime=100 -invalidate=1 -time_based
    rm -rf /tmp/iotest
    

    如上图所示,系统总IOPS为read(35.9k)+write(35.9k)=total(71.8k),即总IOPS为70000左右。系统总吞吐量为read(140MB)+write(140MB)=total(140MB),即总吞吐量为280MB左右。

内存优化

在常见的内存优化场景中,一般会涉及到内存大小设置及缓存命中率的问题。 一般的优化方式有:

  • innodb_buffer_pool_size优化。Mysql优化之innodb_buffer_pool_size篇(opens new window)

磁盘优化

在常见的磁盘优化场景中,一般会涉及到MySQL磁盘IOPS设置的问题。 一般的优化方式有:

  • innodb_io_capacity优化。mysql 参数调优(6)之磁盘IO性能相关的innodb_io_capacity_max 和innodb_io_capacity(opens new window)

CPU优化

在常见的磁盘优化场景中,一般会涉及到MySQL读写线程设置的问题。 一般的优化方式有:

  • innodb_read_io_threadsinnodb_read_io_threads优化。MySQL 8.0.16 调优指南(鲲鹏920)(opens new window)

配置文件示例

以下配置适用于16核16GB内存,IOPS约为30000的服务器,单独部署MySQL的情况。

[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
innodb_buffer_pool_size = 12G
#
# Remove the leading "# " to disable binary logging
# Binary logging captures changes between backups and is enabled by
# default. It's default setting is log_bin=binlog
disable_log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
join_buffer_size = 1G
sort_buffer_size = 200M
read_rnd_buffer_size = 200Mdefault-authentication-plugin=mysql_native_passwordsocket=/var/lib/mysql/mysql.sockmax_connections=1200
wait_timeout=1800
interactive_timeout=7200log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTIONskip_log_bin
innodb_read_io_threads=8
innodb_write_io_threads=8
innodb_io_capacity=15000
innodb_io_capacity_max=30000

MySql 配置优化相关推荐

  1. Mysql性能优化、Mysql参数优化、Mysql配置优化

    码字不易,转载请附原链,搬砖繁忙回复不及时见谅,技术交流请加QQ群:909211071 Mysql性能优化.Mysql参数优化.Mysql配置优化.Mysql参数优化对于不同的网站,及在线量等,以及机 ...

  2. 4G内存服务器的MySQL配置优化

    公司网站访问量越来越大(日均超10万PV),MySQL自然成为瓶颈,关于 MySQL 的优化,最基本的是 MySQL 系统参数的优化. MySQL对于web架构性能的影响最大,也是关键的核心部分.My ...

  3. Mysql配置优化浅谈

    安装MySQL后,配置文件my.cnf在MySQL安装目录/share/mysql目录中,该目录中还包含多个配置文件可供参考,有my-large.cnf ,my-huge.cnf,  my-mediu ...

  4. phpcms mysql debug_phpcms教程之mysql配置优化

    1.页面缓存功能: 页面缓存功能降低MySQL的资源消耗的(系统本身就已经考虑,采用生成HTML页面,大大降低了数据库的压力). 2.mysql服务器的优化 2.1.修改全站搜索 修改my.ini(m ...

  5. mysql配置优化查询缓存_MySQL优化(4):查询缓存

    查询缓存: MySQL提供的数据缓存QueryCache,用于缓存SELECT查询的结果 默认不开启,需要在配置文件中开启缓存(my.ini/my.cnf) 在[mysqld]段中,修改query_c ...

  6. mysql配置优化ya_mysql性能调优工具之mytop

    Mysql性能调优工具之mytop的安装和使用 1.mytop的下载地址 2.首先安装mytop必要的组件. yum -y install perl-DBD-MySQL perl-DBIperl-Te ...

  7. druid mysql 配置优化_数据库连接池优化配置(druid,dbcp,c3p0)

    考虑因素 1:当前连接DB的规模   2:并发情况 3:执行db的响应时间 配置考虑 1:初始化连接:可考虑设置为3个连接 .对于db规模特别大的情况下可考虑设置为1个.避免启动时间过长: 2:最小连 ...

  8. mysql 提高电脑配置_Mysql配置优化浅谈

    Mysql配置优化浅谈安装MySQL后,配置文件my.cnf在MySQL 安装目录/share/mysql目录中,该目录中还包含多个配置文件可供参考,有my-large.cnf ,my-huge.cn ...

  9. MySQL数据库性能优化由浅入深(表设计、慢查询、SQL索引优化、Explain分析、Show Profile分析、配置优化)

    文章目录 0 SQL性能分析 1 表的设计合理化 1.1 为什么需要范式 1.2 三范式原理 1.3 什么样的表才满足三范式 2 慢查询 2.1 慢查询介绍 2.2 慢查询步骤 3 添加适当索引 3. ...

最新文章

  1. 水杯测试----误人子弟啊!
  2. android api在线文档_通过 API 远程管理 Jenkins
  3. Azure上用API成功创建Lambda Function的截图
  4. C++中类和对象的一些注意事项
  5. log4j配置时的位置问题
  6. ISTQB 软件测试资质认证
  7. 魅族内斗;中兴危机;阿里百度要回 A 股 | CSDN极客头条
  8. 基于STM32的电池管理系统触摸屏设计方案
  9. Windows下安装pip
  10. 金融信息化及交易管理系统(股票交易系统APP)
  11. OpenCV基础——threshold函数的使用
  12. tumblr图片批量下载
  13. 中国游戏产业的多事之秋
  14. 18数藏,太一捡漏,抢购,
  15. Python Spider入门
  16. CSS( Cascading Style Sheets )简书
  17. 小游戏《别踩白块》-第十一个程序20200625
  18. 定义char dog[]=wang\0miao;那么sizeof(dog)与strlen(dog)分别是多少:
  19. 希腊神话、罗马神话与中国神话人物大比拼
  20. 【C语言】如何理解【void(*)(void)】

热门文章

  1. YOLOV5 参数设定与模型训练的坑点一二三
  2. 转:计算机、游戏和风花雪月—一个IT老兵的成长之路(1)
  3. pjax php,php整合pjax(pushstate+ajax)实现无刷新页面
  4. java中数学函数的使用
  5. 屏幕小于6英寸的手机_我不喜欢大屏幕. 您对这两款6英寸以下的2019小屏手机感兴趣吗?...
  6. 什么是定向与非定向?都有什么注意事项?
  7. 【vue3】css原子化
  8. 图像处理工具如何正确的颜色和对比度
  9. Sentinel 之 网关限流
  10. SAE 2018 汽车智能与网联技术国际学术会议在昆山顺利召开