MySQL参数优化总结
innodb_io_capacity
描述:
此参数用于控制InnoDB引擎刷脏页的速度,数据变更只记录到内存还未写入到磁盘的数据页称为脏页;把内存页数据写入到磁盘的过程,称为刷脏页(flush)。若刷脏页速度太快超过磁盘的IO写入能力,或者磁盘IO能力很高但刷脏页速度设置得太低,都会影响数据库的性能。
默认值:
200
建议值:
设置成磁盘的 IOPS,磁盘的 IOPS 可以通过 fio 这个工具来测试,命令:
fio -filename=$filename -direct=1 -iodepth 1 -thread -rw=randrw -ioengine=psync -bs=16k -size=500M -numjobs=10 -runtime=10 -group_reporting -name=mytest
innodb_flush_neighbors
描述:
若开启此参数,在刷某个脏页时,如果它旁边的内存页也是脏页,就会连带把它一起刷掉,而且这个把“邻居”拖下水的逻辑还可以继续蔓延。
默认值:
8.0(不含)版本之前默认为ON
建议值
若使用机械硬盘建议设为ON,可以减少随机IO;若是SSD建议设为OFF
innodb_stats_on_metadata
描述:
若开启此参数,在执行SHOW TABLE STATUS
命令或访问INFORMATION_SCHEMA
库里的表时,会更新InnoDB数据表的统计信息,更新过程可能会导致大量读盘操作,占用InnoDB buffer pool,从而影响数据库性能。
参阅:https://www.iteye.com/blog/dinglin-1575840
默认值:
5.6.5(含)之前版本默认是为ON
建议值:
OFF
innodb_file_per_table
描述:
若关闭此参数,InnoDB表的数据会存放在共享表空间(ibdata1文件)里;
若开启此参数,每个 InnoDB 表数据存储在一个以 .ibd 为后缀的文件中;
默认值:
5.6.5(含)之前版本默认是为OFF
建议值:
若数据放在共享表空间里,即使把数据表删除,MySQL也不会释放磁盘空间,为了方便回收空间,建议设为ON
innodb_deadlock_detect
描述:
自动检测事务之间的死锁,若检测到死锁,InnoDB会回滚其中一个事务并报错(1213 - Deadlock found when trying to get lock; try restarting transaction
),这样另外一个事务就可以继续执行下去
默认值:
ON
建议值:
ON。自动检测是有性能代价的,如果锁的冲突很严重,例如经常会出现几百个事务同时更新同一行的情况,这种情况开启自动检测反而会增加机器CPU负担,此时可以考虑关闭,仅依靠等待锁超时innodb_lock_wait_timeout
来处理。
innodb_lock_wait_timeout
描述:
等待行锁的超时时间,超时后放弃执行当前语句并报错(1205 - Lock wait timeout exceeded; try restarting transaction
),但InnoDB默认情况下并不会自动回滚当前事务,若需要自动回滚,可以把innodb_rollback_on_timeout
设置为ON
默认值:
50
建议值:
根据业务可以忍受的超时时间设置
innodb_flush_log_at_trx_commit
描述:
每次执行事务后的redo log持久化策略。
0:每次事务提交时都只把redo log留在redo log buffer中(MySQL崩溃或系统崩溃重启会导致丢数据)
InnoDB 有一个后台线程,每隔 1 秒,就会把 redo log buffer 中的日志,调用 write 写到文件系统的 page cache,然后调用 fsync 持久化到磁盘,因此设置为0时,最严重会丢失1秒钟的日志数据。
1:每次事务提交时都将redo log持久化到磁盘(不会丢数据)
2:每次事务提交时都只把redo log写到系统的page cache(系统崩溃重启会丢数据)
默认值:
1
建议值:
只考虑性能,不考虑数据安全性建议设置为0;
不考虑性能,只考虑数据安全性建议设置为1;
两者兼顾建议设置为2;
sync_binlog
描述:
每次执行事务后的binlog持久化策略。
0:表示每次提交事务都只write到系统page cache,不fsync到磁盘
1:表示每次提交事务都会执行fsync
N>1:表示每次提交事务都write,但累积N
个事务后才fsync
默认值:
0
建议值:
在出现 IO 瓶颈的场景里,将 sync_binlog
设置成一个比较大的值,可以提升性能。在实际的业务场景中,考虑到丢失日志量的可控性,一般不建议将这个参数设成 0,比较常见的是将其设置为 100~1000 中的某个数值。
但是,将 sync_binlog
设置为 N,对应的风险是:如果主机发生异常重启,会丢失最近 N 个事务的 binlog 日志。
将 sync_binlog
设置为1,可以保证binlog不丢失,但对性能有影响。
开启慢日志
开启慢日志记录功能,可以方便我们针对慢SQL语句进行监控和及时优化:
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 2
详情参阅这里
skip_name_resolve
描述
禁用IP反向解析主机名。不禁止的话,每次客户端连接后,MySQL都会根据客户端的IP去查询对应的主机名,如果这个查询过程很缓慢的话,会导致建立连接缓慢。详情参阅这里
注:在禁用后,MySQL用户授权表中的host字段就不能够使用域名而只能够使用IP地址了
默认值
不禁用
建议值
禁用
MySQL参数优化总结相关推荐
- Mysql性能优化、Mysql参数优化、Mysql配置优化
码字不易,转载请附原链,搬砖繁忙回复不及时见谅,技术交流请加QQ群:909211071 Mysql性能优化.Mysql参数优化.Mysql配置优化.Mysql参数优化对于不同的网站,及在线量等,以及机 ...
- MySQL系列之优化——1.优化哲学、2. 优化工具的使用、3. 优化思路分解、4. MySQL参数优化测试、5.1 参数优化、6. 参数优化结果、7. 锁的监控及处理、8. 主从优化
文章目录 1.优化哲学 1.1 为什么优化? 1.2 优化风险 1.3 谁参与优化 1.4 优化方向 1.5 优化的范围及思路 优化效果和成本的评估: 2. 优化工具的使用 2.1 系统层面的 2.1 ...
- mysql参数优化51cto_超详细MySQL数据库优化
前言 数据库优化一方面是找出系统的瓶颈,提高MySQL数据库的整体性能,而另一方面需要合理的结构设计和参数调整,以提高用户的相应速度,同时还要尽可能的节约系统资源,以便让系统提供更大的负荷. 1. 优 ...
- Linux记录-mysql参数优化
1.参数优化 show variables like '' /etc/my.cnf [mysqld] Max_connections =1024 #请求的最大连接数 back_log =1024 #m ...
- mysql参数优化步骤_MySQL架构优化实战系列4:SQL优化步骤与常用管理命令2(转)
MySQL架构优化实战系列4:SQL优化步骤与常用管理命令 原文:http://dbaplus.cn/news-11-649-1.html 一.SQL语句优化步骤 1.查看MySQL状态及配置 sho ...
- linux 内核参数优化 mysql_Linux记录-mysql参数优化
1.参数优化 show variables like '' /etc/my.cnf [mysqld] Max_connections =1024 #请求的最大连接数 back_log =1024 #m ...
- mysql 参数优化配置
网站访问量大 怎样优化mysql数据库 MySQL优化的一些建议,单机MySQL的优化我分为三个部分,一是服务器物理硬件的优化,二是 MySQL安装时的编译优化,三是自身配置文件my.cnf的优化:如 ...
- mysql参数优化和硬件优化等分享
innodb参数调优最主要的地方: innodb 最重要的参数就是buffer_pool,这个对innodb有着决定性的作用,再者就是buffer_log的大小,脏页的大小,加载谷歌优化的innodb ...
- 浅谈Mysql参数优化
MySQL优化 优化哲学 1.1 优化有风险 1.2 优化的范围 存储.主机和操作系统: 主机架构稳定性 I/O规划及配置 Swap OS内核参数 网络问题 应用 :(Index,lock,sessi ...
最新文章
- 使用cmd将磁盘转化为GPT格式
- Spring嵌套事务控制
- linux apache 2.2下载,Linux下的Apache 2.2.* SSL证书安装
- ITK:在签名图像中找到零交叉点
- mono for android 使用Tab 控件
- linux头文件怎么编译,microsoft编译器怎么使用Linux头文件
- Mobvista首席架构师蔡超:工作感悟之失败与成功,我的8点总结
- 算法导论 思考题6-2
- 达观杯文本智能处理(2)
- php laravel 相关收集
- matlab2016a网盘
- 综合支撑【恶灵附身 Psycho Break】的世界观的概念艺术
- easypoi插入超链接
- flyingsaucer转换多个html,java - 使用FlyingSaucer将包含阿拉伯字符的HTML页面转换为PDF - 堆栈内存溢出...
- java white case语句_JAVA基础(一)
- 05-SA8155 QNX I2C框架及代码分析
- C语言数据结构——广义表
- 利用JS写一个计算平方的网页
- 【从0到1搭建LoRa物联网】1、LoRa物联网的架构
- goland 使用 gorm 执行 存储过程 : go语言 执行存储过程