项目上线需要,对Mysql进行基准压测,结合其他网上资料,总结出Mysql配置的几个提升性能的关键配置,如下:

 
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
#log-error = /var/log/mysql/error.log
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
 
max_connections=3000
max_allowed_packet=512M
 
# 表示缓冲池字节大小,推荐值为物理内存的50%~80%。
innodb_buffer_pool_size=15G
 
# 用来控制redo log刷新到磁盘的策略。
innodb_flush_log_at_trx_commit=1
 
# 后台进程最大IO性能指标。默认200,如果SSD,调整为5000~20000
innodb_io_capacity=12000
 
# 非交互式连接 最大空闲时长(jdbc)单位:秒
wait_timeout=120
 
# 交互式连接 最大空闲时长(mysql客户端)单位:秒
interactive_timeout=120
 
# 并发线程数,设为 CPU 核数的两倍
thread_concurrency=48
 
# 慢查询开启
slow_query_log = 'ON'
 
# 慢查询sql存放文件路径
slow_query_log_file = /usr/local/mysql/data/slow.log
 
# 记录查询超过1秒的语句
long_query_time = 1
 
# 开启查询缓存
query_cache_type = 1
 
# 查询缓存大小
query_cache_size = 6000000000
 
# 查询缓存单个sql最大值
query_cache_limit = 10485760
 
# 除了缓存表数据和索引外,可以为操作所需的其他内部项分配缓存来提升InnoDB 的性能。这些内存就可以通过此参数来分配。(默认值不到百MB,调到1G提升3000tps)
innodb_additional_mem_pool_size = 1G
 
# 可以修改 InnoDB 为独立表空间模式,每个数据库的每个表都会生成一个数据空间。当一个 MySQL 服务器作为 Mycat 分片表存储服务器使用的情况下,单独表空间的访问性能要大大好友共享表空间,因此强烈建议使用独立表空间。
innodb_file_per_table=1
 
# InnoDB 存储引擎的事务日志所使用的缓冲区
innodb_log_buffer_size = 838860800
 
# 自动扩展InnoDB系统空间的增量大小, 对于大批量插入数据也是比较重要的优化参数(单位是 M)
innodb_autoextend_increment = 1024
 
# 此参数确定数据日志文件的大小,以 M 为单位,更大的设置可以提高性能,但也会增加恢复故障数据库所需的时间。(默认值50MB,调到2G后,tps由2000提升到20000,提高了10倍)
innodb_log_file_size = 2048M

posted on 2021-01-06 13:46  Boom__Clap  阅读(190)  评论(0编辑  收藏  举报