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
父主题: MySQL性能调优