MySQL性能优化-I/O相关配置参数
本文介绍InnoDB和MyISAM两种存储引擎的I/O相关参数配置。
1.InnoDB I/O相关配置
Innodb是一种事务型的存储引擎,为了减少提交事务时产生的io开销,innodb采用了写日志的方式,也就是在事务提交的时候会先写入事务日志中 ,而不是每次都把修改或者数据刷新到数据文件中,这样做是为了提高io的性能,因为事务的修改,使数据和索引文件通常都会映射到表空间随机的位置,所以刷新数据变更到数据文件会产生大量随机io,而记录日志是顺序io,一旦事务日志安全的写到磁盘中,数据就算是持久化了,即使变更还没有写入到数据文件,如果这时候服务器宕机了,这样的情况我们还是可以使用事务日志来恢复已经提交的事务。以下是一些InnoDB存储引擎相关的配置参数:
Innodb_log_file_size : 控制单个事务日志文件的大小(如果业务繁忙可以设置大一些,一般可以记录业务一个小时产生事务的日志);
Innodb_log_files_in_group : 控制事务日志文件的个数 ;
事务日志并不是每次提交都直接写入日志文件中的,而是先写入到事务日志的缓冲区,然后再刷新到磁盘中。Innodb_log_buffer_size控制事务日志缓冲区的大小,通常不需要把日志缓冲区设置得非常大,因为一般情况下至少一秒钟,就会进行一次事务日志缓存的刷新,所以这个缓冲区只要可以保存至少一秒钟的事务就足够了,当然稍微大一些也没有什么坏处,通常来说32M~128M这样的配置就可以了。
所以 , 事务日志的总大小 = Innodb_log_files_in_group * Innodb_log_file_size 。
Innodb_flush_log_at_trx_commit 将log刷新到磁盘的配置,有三种选项 :
(1)0:每秒钟进行一次log写入操作系统cache,并flush log到磁盘(在事务提交时候并不会做任何事情,这个设置在mysql崩溃时会至少丢失一秒钟的事务);
(2)1[默认]:在每次事务提交执行log写入cache,并fulsh log到磁盘(这是最安全的设置,不会丢失任何事务,但是性能并不理想) ;
(3)2[建议]:每次事务提交,执行log数据写入到cache,每秒钟执行一次flush log到磁盘。(完成事务持久化分为两步 :首先从mysql日志缓冲区刷新到操作系统的cache,然后从操作系统的cache刷新到磁盘);
2.MyISAM I/O相关配置
MyISAM也是常用的存储引擎,MySQL的相关系统表就是使用MyISAM存储引擎,MyISAM的I/O相关参数配置如下:
delay_key_write : OFF 每次写操作后刷新键缓冲中的脏块到磁盘;
ON 只对在键表时指定了delay_key_write选项的表使用延迟刷新;
ALL 对所有的MyISAM表都使用延迟键写入;
MySQL性能优化-I/O相关配置参数的更多相关文章
- MySQL性能优化方法一:缓存参数优化
原文链接:http://isky000.com/database/mysql-perfornamce-tuning-cache-parameter 数据库属于 IO 密集型的应用程序,其主要职责就是数 ...
- Mysql性能优化三:主从配置,读写分离
大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢 ...
- linux性能优化基础——iommu相关配置
此篇文档介绍了IOMMU相关的信息: https://blog.chaosjohn.com/Check-VT-D-or-IOMMU-under-Linux.html iommu和vt-d都是io半虚拟 ...
- Redis性能优化之redis.cnf配置参数
redis调优总结 1.相应的参数调优 加内存2.redis使用结构调优3.使用合理的数据类型说明:redis存储的数据为redis hash(字符映射表) 单key多字段结构. 1)调整配置文件中配 ...
- MySQL性能优化之max_connections配置参数浅析
这篇文章主要介绍了MySQL性能优化之max_connections配置参数浅析,本文着重讲解了3种配置max_connections参数的方法,需要的朋友可以参考下 MySQL的max_connec ...
- (转)MySQL配置文件mysql.ini参数详解、MySQL性能优化
本文转自:http://www.cr173.com/html/18331_1.html my.ini(Linux系统下是my.cnf),当mysql服务器启动时它会读取这个文件,设置相关的运行环境参数 ...
- MySQL配置文件mysql.ini参数详解、MySQL性能优化
my.ini(Linux系统下是my.cnf),当mysql服务器启动时它会读取这个文件,设置相关的运行环境参数. my.ini分为两块:Client Section和Server Section. ...
- mysql性能优化学习笔记-参数介绍及优化建议
MySQL服务器参数介绍 mysql参数介绍(客户端中执行),尽量只修改session级别的参数. 全局参数(新连接的session才会生效,原有已经连接的session不生效) set global ...
- MySQL DBA教程:Mysql性能优化之缓存参数优化
在平时被问及最多的问题就是关于 MySQL 数据库性能优化方面的问题,所以最近打算写一个MySQL数据库性能优化方面的系列文章,希望对初中级 MySQL DBA 以及其他对 MySQL 性能优化感 ...
随机推荐
- 济南学习 Day 5 T2 pm
逆欧拉函数(arc)题目描述:已知phi(N),求N.输入说明:两个正整数,分别表示phi(N)和K.输出说明:按升序输出满足条件的最小的K个N.样例输入:8 4杨丽输出:15 16 20 24数据范 ...
- javascript 日期处理类库 moment.js
- MongoDB_单机版环境搭建
linux上安装MogoDB http://www.runoob.com/mongodb/mongodb-linux-install.html 在https://www.mongodb.com/dow ...
- 使用icomoon把svg图片生成字体图标
今天看了使用icomoon来将svg转换成图标字体,本来是不会使用别人给的svg,也不清楚具体的好处是什么,查了svg以后,越来越懵,svg挺好的为什么要转成图标字体呢. 一.SVG介绍 SVG 是一 ...
- JavaSE的包装类,自动装箱和自动拆箱 ,字符窜转换,toString(),equals(), hashCode()的区别
一.基本数据类型和包装类 包装类均位于Java.lang包,包装类和基本数据类型的对应关系如下表所示: Primitive-Type Wrapper-Class byte ...
- Centos7 下的防火墙端口配置
如果外部不能访问,需要查看防火墙以及服务器的端口安全设置. 防火墙的操作 查看所有打开的端口: firewall-cmd --zone=public --list-ports 添加 firewall- ...
- Java中ArrayList类
ArratList 类:存放同一数据类型容器(只能为引用数据类型,因实际其内部存放的是地址) 1.导入其所在包 import java.util.ArratList 2.创建对象 ArrayList& ...
- JDK动态代理理解精髓
1.Java动态代理的关键是:Proxy类要和InvocationHandler的接口实现类,要用同一个目标target对象class,所以精髓是InvocationHandler和Proxy是一 ...
- memcached优化方法
工作原理 基本概念:slab,page.chunk. slab,是一个逻辑概念. 它是在启动memcached实例的时候预处理好的,每一个slab相应一个chunk size.也就是说 ...
- ormlite
id 主键 默认为false generatedId 自增长的主键 默认值是false generatedIdSequence 字符串名称的序列号 类同generatedId,但您可以指定序列的名称使 ...