鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

MySQL配置调优

由于MySQL是动态管理系统,在实际应用中,有时会因参数调整不当而降低MySQL的性能,因此需要通过调节MySQL参数来优化它的性能。

可以通过修改默认配置路径“/etc/my.cnf”下的文件来调整MySQL的配置。以下是一个经过优化的MySQL配置文件示例,供用户参考。

配置文件示例仅供参考,在实际应用中,用户应根据具体硬件环境以及业务需求等进行适当调整。

[mysqld_safe]
log-error=/data/mysql/log/mysql.log
pid-file=/data/mysql/run/mysqld.pid

[client]
socket=/data/mysql/run/mysql.sock
default-character-set=utf8

[mysqld]
basedir=/usr/local/mysql
tmpdir=/data/mysql/tmp
datadir=/data/mysql/data
socket=/data/mysql/run/mysql.sock
default_authentication_plugin=mysql_native_password
port=3306
user=root

max_connections=6000  #设置最大连接数
back_log=4000  #设置会话请求缓存个数
performance_schema=OFF  #关闭性能模式
max_prepared_stmt_count=1280000
large-pages  #使用大页

#file
innodb_file_per_table  #设置为每个表一个文件
innodb_log_file_size=2048M  #设置日志文件大小
innodb_log_files_in_group=8  #设置日志文件组个数
innodb_open_files=10000  #设置最大打开表个数
table_open_cache_instances=24  #设置打开句柄分区数

#buffers
innodb_buffer_pool_size=24G  #设置缓冲池大小,通常为虚拟机内存的75%
innodb_buffer_pool_instances=16  #设置缓冲池实例个数,提高并发能力

#tune
default_time_zone=+8:00
thread_cache_size=2000
sync_binlog=1  #每次事务提交时同步二进制日志
innodb_flush_log_at_trx_commit=1  #每次事务提交时MySQL都会把log buffer的数据写入日志文件,并且刷新日志到磁盘
innodb_use_native_aio=1  #开启异步IO
innodb_spin_wait_delay=4  #设置spin_wait_delay参数,防止进入系统自旋
innodb_sync_spin_loops=6  #设置spin_loops 循环次数,防止进入系统自旋
innodb_flush_method=O_DIRECT  #设置InnoDB数据文件和重做日志(redo log)的直接打开与刷写模式
innodb_io_capacity=20000  #设置InnoDB后台线程每秒最大IOPS上限
innodb_io_capacity_max=40000  #设置压力下InnoDB后台线程每秒最大IOPS上限
innodb_lru_scan_depth=8000  #设置page cleaner线程每次刷脏页的数量
innodb_page_cleaners=14  #设置将脏数据写入磁盘的线程数
innodb_spin_wait_pause_multiplier=2  #设置spin lock循环随机数

#perf special
innodb_flush_neighbors=0  #对同一区(extent)内的所有脏页进行刷新。对于SSD,建议关闭此功能
innodb_write_io_threads=5 #设置写线程数
innodb_read_io_threads=2  #设置读线程数
innodb_purge_threads=1  #设置回收已经使用并分配的undo页的线程数
innodb_read_ahead_threshold=70
innodb_random_read_ahead=OFF
innodb_old_blocks_pct=44
innodb_old_blocks_time=800
sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_AUTO_VALUE_ON_ZERO,STRICT_ALL_TABLES

log-bin=mysql-bin  #启用二进制日志
ssl=0  #关闭SSL
table_open_cache=30000  #设置打开表的数量
max_connect_errors=2000
innodb_adaptive_hash_index=0

mysqlx=0