MySQL最佳安装之参数调整

本文旨在通过调整MySQL的参数设置,最大化提升其性能。内容涵盖了InnoDB参数、用户连接线程、连接管理、读写线程、数据文件、锁机制、Undo日志以及主从复制与并行复制的相关配置细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目的

通过根据服务器目前状况,修改Mysql的变量参数,达到合理利用服务器现有资源,最大合理的提高MySQL性能。因此,我将mysql在启动前需要调整的参数做了分类,便于大家理解。

常用的一些调整

sql_mode=''
autocommit= 
character_set_server=
transaction_isolation=  //以上参数需要跟开发人员协商,由开发人员决定


max_allowed_packet= //允许最大包的大小,
event_scheduler=1 //允许建立event,event周期性执行
loose_innodb_numa_interleave=1  //数据库层面关闭 numa,尽量在 MySQL 数据库服务器在 BIOS 层面关闭NUMA

skip_name_resolve = 1 //关闭反向解析

innodb相关参数

innodb_buffer_pool_size=   //一般是物理内存的50%~80%左右
innodb_buffer_pool_instances= //一般10G分配一个pool,在latch锁争用比较厉害的情况下,可以增加池子的数量
innodb_page_size= //数据页的大小,一般是16K
innodb_buffer_pool_dump_at_shutdown = 1  //保证关闭后,热数据会继续加载和保留在热数据区
innodb_buffer_pool_load_at_startup=1 //5.7新特性,数据库启动时加载热数据



innodb_doublewrite=  //是否开启double write
innodb_flush_neighbors = 0  //是否开启是适应hash索引

用户连接线程相关

sort_buffer_size=   //排序空间大小,如果过小,会产生磁盘排序
join_buffer_size=   //表连接空间,多表连接会用到
read_buffer_size=  //只是针对MyISAM表,强列建议降低该参数值
read_rnd_buffer_size=  //针对所有的表都生效,可以调大一点。建议16M即可
binlog_cache_size=  //二进制日志缓存空间,如果过小,会产生binglog_cache_disk_use
tmp_table_size=   //临时表空间的大小,如果过小,会产生磁盘临时文件

连接相关

max_connections = 1500 //最大连接数不要超过2000
max_connect_errors = 1000000  //最大连接错误数,防止暴力破解
thread_cache_size=  //对于频繁额连接和断开的情况下,防止线程频繁的建立和销毁

读写线程相关

innodb_write_io_threads=  //默认情况下会调成CPU核数
innodb_read_io_threads=   //默认情况下会调成CPU 核数
innodb_purge_threads=
innodb_page_cleaners
innodb_thread_concurrency = 64 //允许并发线程的数量

数据文件相关的(redolog、binlog、slowlog、errorlog)

slow_query_log=1 //开启慢查询
log_queries_not_using_indexes = 1
long_query_time=2




log-bin=mysqlbinlog
binlog_format = mixed
expire_logs_days = 90  //建议手动删除binlog
binlog-rows-query-log-events = 1 //记录原生的SQL语句
sql_log_bin=  //在会话级别临时性关闭binlog
sync_binlog=1



innodb_log_file_size=
innodb_log_files_in_group
innodb_flush_log_at_trx_commit=1


log_error = error.log

锁相关

innodb_lock_wait_timeout=   //事务锁的超时时间
lock_wait_timeout=   //表锁的超时时间,可以适当减小,降低锁冲突
innodb_print_all_deadlocks=  //将死锁的信息打印到错误日志中去
innodb_autoinc_lock_mode=   //自增长锁的工作模式,建议是2

undo相关

innodb_undo_logs = 128  //undo段的数量
innodb_undo_tablespaces = 3 //将undo从ibdata中独立出来

主从、并行复制相关

master_info_repository = TABLE
relay_log_info_repository = TABLE
relay_log_recovery = 1,自动恢复损坏的 relaylog
slave_skip_errors = ddl_exist_errors



并行复制:
slave-parallel-type = LOGICAL_CLOCK 
slave-parallel-workers = 16 //开启16个SQL线程并行应用
slave_preserve_commit_order=1  //保证事务在从库上执行顺序跟realylog中一样
slave_transaction_retries=128 //执行事务发生锁超时时,先尝试着再执行 128 次,不至于一
被锁住就马上回滚事务。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值