MySQL性能优化之配置参数过程

 更新时间:2025年09月04日 10:38:04   作者:一只IT攻城狮  
优化MySQL配置:调整连接数、超时时间及缓冲区大小,提升性能,建议修改back_log为128-512,interactive_timeout为7200,合理设置InnoDB参数及缓存策略

1、连接设置

show variables like ‘%max_connection%';
show status like ‘%Max_used_connections%';
Max_used_connections/max_connection <=85%

2、存储在堆栈中的连接数量

show variables like ‘%back_log%';

back_log 默认为50 建议修改为 128~512

3、数据连接关闭前等待时间

show variables like ‘%timeout%';

修改interactive_timeout wait_timeout 2项的值,默认为28800,建议修改为7200

4、索引缓冲区的大小

show status like ‘%read%';

索引未缓存命中率 key_read/key_request_reads =0.0010.01

5、查询缓冲区的大小(query_cache_size)

show variables like ‘%cache%';
show status like ‘%qcache%';
  • 缓存碎片率 Qcache_free_blocks/Qcache_total_blocks <20%
  • 缓存利用率 (query_cache_size-Qcache_free_memory)/query_cache_size<25%
  • 缓存命中率 Qcache_hits/Qcache_inserts>95%

6、顺序读、随机读、排序、连接缓冲区的大小,每个线程独占,建议设置为16MB

show status like ‘%buffer%';
read_buffer_size
read_rnd_buffer_size
sort_buffer_size
join_buffer_size

7、表缓冲区大小

show status like ‘%tables%';

table_cache 根据 open_tables opented_tables 大小来调整

8、内存表和临时表

show status like ‘%table%';
max_heap_table_size
tmp_table_size

内存表超过临时表大小,才需要调整内存表的大小

9、磁盘上临时表大小

show status like ‘%tmp%';
(Created_tmp_disk_tables/Created_tmp_tables)*100<25%

10、缓存线程的数量

show variables like ‘%tmp%';
thread_cache_size

11、并发线程的数量

show variables like ‘%thread%';
innodb_thread_concurrency (cpu+磁盘)数量的2倍

12、其他

数据和索引缓冲区的大小 innodb_buffer_pool_size 物理内容的80%

日志缓冲区的大小 innodb_log_buffer_size 1~8MB

数据字段和其他数据结构的大小 innodb_additional_mem_pool_size 20MB

事物处理机制 innodb_flush_log_at_trx_commit

  • 0 提交事物不写入日志,每秒日志文件写入和flush磁盘
  • 1 每秒或每次事物提交时,日志文件写入 flush磁盘
  • 2 每次事物提交时,日志文件写入,每秒flush磁盘

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • SpringBoot连接MYSQL数据库并使用JPA进行操作

    SpringBoot连接MYSQL数据库并使用JPA进行操作

    今天给大家介绍一下如何SpringBoot中连接Mysql数据库,并使用JPA进行数据库的相关操作。
    2017-04-04
  • Spring需要三个级别缓存解决循环依赖原理解析

    Spring需要三个级别缓存解决循环依赖原理解析

    这篇文章主要为大家介绍了Spring需要三个级别缓存解决循环依赖原理解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • java文件上传下载代码实例

    java文件上传下载代码实例

    这篇文章主要介绍了java文件上传下载,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • SpringBoot使用Aspect切面拦截打印请求参数的示例代码

    SpringBoot使用Aspect切面拦截打印请求参数的示例代码

    这篇文章主要介绍了SpringBoot使用Aspect切面拦截打印请求参数,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-07-07
  • SpringBoot实现HTTP调用的7 种方式

    SpringBoot实现HTTP调用的7 种方式

    本文主要介绍了SpringBoot实现HTTP调用的7 种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-04-04
  • Java数组传递及可变参数操作实例详解

    Java数组传递及可变参数操作实例详解

    这篇文章主要介绍了Java数组传递及可变参数操作,结合实例形式详细分析了java数组参数传递与可变参数相关使用技巧,需要的朋友可以参考下
    2019-09-09
  • Java实战之火车票预订系统的实现

    Java实战之火车票预订系统的实现

    这篇文章主要介绍了利用Java实现的火车票预订系统,文中用到了JSP 、Servlert、JQuery、Ajax 等技术,文中示例代码讲解详细,需要的可以参考一下
    2022-02-02
  • 如何利用Java实现MySQL的数据变化监听

    如何利用Java实现MySQL的数据变化监听

    在高并发和大数据环境下,实时获取 MySQL 数据库的增量变化对数据同步、数据分析、缓存更新等场景至关重要,下面我们就来看看如何通过Java实现MySQL的数据变化监听吧
    2025-02-02
  • Caused by: java.io.IOException: DerInputStream.getLength(): lengthTag=111

    Caused by: java.io.IOException: DerInputStrea

    这篇文章主要介绍了Caused by: java.io.IOException: DerInputStream.getLength(): lengthTag=111, too big,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-10-10
  • Mybatis如何一次性插入多条数据

    Mybatis如何一次性插入多条数据

    这篇文章主要介绍了Mybatis如何一次性插入多条数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11

最新评论