本文介绍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相关配置参数的更多相关文章

  1. MySQL性能优化方法一:缓存参数优化

    原文链接:http://isky000.com/database/mysql-perfornamce-tuning-cache-parameter 数据库属于 IO 密集型的应用程序,其主要职责就是数 ...

  2. Mysql性能优化三:主从配置,读写分离

    大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢 ...

  3. linux性能优化基础——iommu相关配置

    此篇文档介绍了IOMMU相关的信息: https://blog.chaosjohn.com/Check-VT-D-or-IOMMU-under-Linux.html iommu和vt-d都是io半虚拟 ...

  4. Redis性能优化之redis.cnf配置参数

    redis调优总结 1.相应的参数调优 加内存2.redis使用结构调优3.使用合理的数据类型说明:redis存储的数据为redis hash(字符映射表) 单key多字段结构. 1)调整配置文件中配 ...

  5. MySQL性能优化之max_connections配置参数浅析

    这篇文章主要介绍了MySQL性能优化之max_connections配置参数浅析,本文着重讲解了3种配置max_connections参数的方法,需要的朋友可以参考下 MySQL的max_connec ...

  6. (转)MySQL配置文件mysql.ini参数详解、MySQL性能优化

    本文转自:http://www.cr173.com/html/18331_1.html my.ini(Linux系统下是my.cnf),当mysql服务器启动时它会读取这个文件,设置相关的运行环境参数 ...

  7. MySQL配置文件mysql.ini参数详解、MySQL性能优化

    my.ini(Linux系统下是my.cnf),当mysql服务器启动时它会读取这个文件,设置相关的运行环境参数. my.ini分为两块:Client Section和Server Section.  ...

  8. mysql性能优化学习笔记-参数介绍及优化建议

    MySQL服务器参数介绍 mysql参数介绍(客户端中执行),尽量只修改session级别的参数. 全局参数(新连接的session才会生效,原有已经连接的session不生效) set global ...

  9. MySQL DBA教程:Mysql性能优化之缓存参数优化

      在平时被问及最多的问题就是关于 MySQL 数据库性能优化方面的问题,所以最近打算写一个MySQL数据库性能优化方面的系列文章,希望对初中级 MySQL DBA 以及其他对 MySQL 性能优化感 ...

随机推荐

  1. 洛谷 P1756 最小花费

    题目背景 题目描述 在n个人中,某些人的银行账号之间可以互相转账.这些人之间转账的手续费各不相同.给定这些人之间转账时需要从转账金额里扣除百分之几的手续费,请问A最少需要多少钱使得转账后B收到100元 ...

  2. Spring 定时器 定时访问数据库并发送邮件

    我这里有两个案例的方法: 第一种:使用Spring quartz: 我这里使用的jar:spring-context-support.jar.quartz-1.6.5.jar ============ ...

  3. centos7 安装teamviewer 报错libQt5WebKitWidgets.so.5()(64bit)

    https://blog.csdn.net/kenny_lz/article/details/78884603

  4. What should do in Production

    Using Compose in production https://docs.docker.com/compose/production/

  5. Gradle讲解

    简介: Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具.它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置. ...

  6. jsp 时间格式

    <%@ taglib prefix='fmt' uri="http://java.sun.com/jsp/jstl/fmt" %> <fmt:formatDate ...

  7. python多线程(一)

    原文:http://www.pythonclub.org/python-basic/threading 一.python多线程thread和threading实现 python是支持多线程的,并且是n ...

  8. 7.Java web—tomcat9部署

    1)安装 在此之前要安装 好jdk和jre 下载绿色版 http://tomcat.apache.org/ 解压至:D:\Program Files (x86)\tomcat9 环境变更path添加两 ...

  9. HTML5 这些你全知道吗?

    今天心情烦躁,搭建个论坛各种失败,Laravel.React也学不进去,于是就复习复习学过的.记录一下很少用的东西. 代码摘抄于W3C菜鸟教程HTML5手册 # 定义文本方向 <element ...

  10. java cocurrent并发包

    1. java.util.concurrent - Java 并发工具包Java 5 添加了一个新的包到 Java 平台,java.util.concurrent 包.这个包包含有一系列能够让 Jav ...