常用的MYSQL调优策略

查看配置中的变量数据可以通过show variables like "变量名"(也可以使用%通配符)

1、硬件层相关优化,修改服务器BIOS设置。

  • 选择Performance Per Watt Optimized(DAPC)模式,发挥CPU最大性能。
  • Memory Frequency (内存频率)选择 Maximum Performance (最佳性能)。
  • 内存设置菜单中, 启用Node Interleaving,避免NUMA问题。

2、磁盘I/0相关。

  • 使用 SsD硬盘
  • 如果是磁盘阵列存储, 建议阵列卡同时配备CACHE及BBU模块,可明显提升IOPS。
  • raid 级别尽量选择raid10, 而不是raid5.v

3、文件系统层优化

  • 使用 deadline/noop,这两种I/O调度器,千万别用 cfq;
  • 使用xfs文件系统,千万别用ext3;ext4勉强可用,但业务量很大的话,则一定要用 xfs;
  • 文件系统 mount 参数中增加: noatime, nodiratime, nobarrier几个选项(nobarrier是 xfs
    文件系统特有的);

4、内核参数优化

  • 修改 vm.swappiness参数,降低swap使用率。RHEL7/centos7以 上则慎重设置为0,(推荐设置为10)可能发生OOM(内存溢出)
  • 调整 vm.dirty_background_ratio、 vm.dirty_ratio内核参数,以确保能持续将脏数据刷新到磁盘,避免瞬间I/O写。产生等待。
  • 调整 net.ipv4.tcp_tw_ recycle、 net.ipv4.tcp_tw_ reuse都设置为1, 减少TIME_ WAIT,提高TCP效率。。

5、Mysql参数优化建议(都是在my.cnf配置文件中操作)。

  • 建议设置 default_storage_engine = lnnoDB,强烈建议不要再使用MyISAM引擎。
  • 调整 innodb_buffer_pool_sise的大小,如果是单实例且绝大多数是InnoDB引擎表的话,可考虑设置为物理内存的50% -70%左右,内存大小允许的情况下越大越好。
  • 设置 innodb_file_per_table =1(innodb_file_per_table =on),使用独立表空间。mysql5.6之后的默认on,也就是1
  • 调整 innodb_data_file_path = ibdata1:1G:autoextend, 不要用默认的12M,在高并发场景下,性能会有很大提升。(MySQL8.0.22 是12M)就是设置数据文件大小,如果设置小了,要不了多久就满了,系统又会再次申请,这样会造成资源浪费。设置大一些就不会频繁申请。
  • 设置innodb_log_file_size=256M(回滚日志大小,从oracle数据库引进来的,根据数据库的操作频率来设置,一般256M就够了),设置innodb_log_files_in_group=2,基本可以满足大多数应用场景。
  • 另外,open_flles_limit、 innodb_open_files、 table_open_cache、table_definition_cache,可以设置大约为max_connection(默认是151) 的10倍左右大小。
  • key_buffer_size 建议调小, 32M左右即可,另外建议关闭query cache。
  • mp_table_size和max_heap_table_sie设置不要过大,另外sort_buffer_size、join_buffer_size、read_ buffer_size、read_rnd_buffer_size 等设置也不要过大。
  • innodb_flush_log_at_trx_commit默认值为1,安全性最高,不允许丢失数据;值2表示不写入硬盘而是写入系统缓存,有少量数据丢失;值0则是不考虑数据丢失(可能会丢很多),速度最快
  • innodb_flush_method默认值是fdatasync;另外有O_DSYNC、O_DIRECT;决定了数据和日志写入硬盘的方式

常用的MYSQL调优策略

上一篇:MySQL基础知识:存储过程 - Stored Procedure


下一篇:Redis 通过 RDB 方式进行数据备份与还原