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 性能优化感 ...
随机推荐
- Yii 之控制器响应
public function actionIndex(){ //控制器响应处理 $res = \Yii::$app->response; //设置状态码 // $res->statusC ...
- VScode开发Vue初尝试(一)
由于公司近期有新的H5项目开发,而前端的同事也离职了,所以就临时顶缸,研究学习一下Vue框架开发. 本人也是初学,在学习过程中,把一些学习所得分享出来,可能会有很多问题和疏漏,希望大家能够多多指正,共 ...
- PAT (Advanced Level) 1086. Tree Traversals Again (25)
入栈顺序为先序遍历,出栈顺序为中序遍历. #include<cstdio> #include<cstring> #include<cmath> #include&l ...
- Google代码风格配置文件(Java)(IDEA/Eclipse)
官网:http://www.cnblogs.com/EasonJim/p/7837474.html 下载: 安装: IDEA/Eclipse导入相应文件即可. 说明: Google代码风格文件的缩进是 ...
- connectTimeOut和readTimeout
网络编程时,经常遇到很多timeout异常,下面是java URLConnection 中经典的2种 timeout参数,这些参数设置不当的话,就会遇到timeout 异常. 1. ConnectTi ...
- .net core mvc启动顺序以及主要部件1
原文:.net core mvc启动顺序以及主要部件1 首先我是新人一个写这些东西也是为了增加记忆,有不对的地方请多多指教. 说回正题,打开Program.cs文件,看到在有个CrateWebHost ...
- flask-limiter限制单个IP访问的频率和次数
Flask-Limiter provides rate limiting features to flask routes. It has support for a configurable bac ...
- 关于linter
各类代码都有规则格式检查工具,称之为linter 比如:csslint/jslint/eslint/pylint sumlime提供了一个linter的框架SublimeLinter,在里面可以使用各 ...
- 【转】fedora和ubuntu开启ssh
fedora和ubuntu开启ssh 1小时前 ubuntu开启SSH服务 SSH分客户端openssh-client和openssh-server如果你只是想登陆别的机器的SSH只需要安装opens ...
- google 集群计算的3大基础设施
1. GFS 分布式文件系统 2. map-reduce 分布式计算框架 3. bigtable 海量key-value的存储 (开源实现:Hypertable)