前言

作为mysql底层最重要的组件,了解Innodb的原理并掌握其基本的参数配置对于mysql性能调优具有非常重要的作用

下面结合工作中和Innodb部分常用的参数配置进行说明

1、innodb_buffer_pool_size

该参数表示mysql 的Innodb存储引擎为优化查询性能而开辟出的一块内存缓冲区

show global VARIABLES like 'innodb_buffer_pool_size'


换算成M就是128M,即Innodb引擎默认开辟了128M的空间作为优化查询性能使用,需要将这个和query cache区别开来,两者是在不同的层级上进行优化的

在理解这个参数时,需要结合下面几个参数一起理解,

Innodb已使用的缓存 “页Page”的数量

show global status like ‘innodb_buffer_pool_pages_data’

innodb在读取数据从磁盘到内存时是以Page为单位进行读取的

Innodb全部缓存页的数量

show global status like ‘innodb_buffer_pool_pages_total’;


Innodb缓存页的每一页的长度

show global status like ‘Innodb_page_size’


页面使用率

result = innodb_buffer_pool_pages_data / innodb_buffer_pool_pages_total * 100%

可以利用这个结果作为mysql服务器优化的参考指标

  • result > 95%,考虑增大 innodb_buffer_pool_size ,建议使用物理内存的75%
  • result < 95%,考虑减小 innodb_buffer_pool_size ,建议设置为:innodb_buffer_pool_pages_data * Innodb_page_size * 1.05 (MB)

如果修改innodb_buffer_pool_size,使用如下命令即可:

set global innodb_buffer_pool_size = XXX

2、innodb_flush_log_at_trx_commit

控制Innodb事务日志写入的过程

在事务控制中,存在“事务区”来保证事务的完整性,在事务提交成功以后,这些事务区的数据会写入到硬盘上,同时事务操作日志(log)也需要向硬盘中写入,这个参数就是用来控制何时写入日志数据的

该参数有3个等级,分别为0,1,2

  • 0:log buffer 将每秒一次的写入log file中,在模式在事务提交的时候,不会主动触发写入磁盘的操作
  • 1:每次事务提交的时候,mysql都会把log buffer的数据写入到 log file,并且做flush操作(刷到磁盘),该模式为系统默认
  • 2:每次事务提交的时候都会把 log buffer的数据写入到log file,但是flush(刷到磁盘)的操作并不会同时进行,在该模式下,mysql会每秒执行一次flush的操作

三种模式下的数据安全性比较:

  • 当设置为0时,速度最快,但不太安全,如果mysql进程崩溃会导致上一秒的所有事务数据丢失【适用于高并发场景下对于事务日志数据的读写不是很敏感的场景】
  • 设置为1时,该模式是最安全的,但也是最慢的一种方式,在mysql服务进程崩溃或者主机宕掉时,最多丢失一个语句或者事务【适用于强事务的业务操作】
  • 当设置为2时,该模式速度较快,相对0时也安全,在进程崩溃或者宕机时,上一秒的所有事务数据才会丢失

注意:对于事务的操作比较频繁的业务操作中,需要特别关注这个参数的配置,在实际测试时发现,该参数的设置对于插入数据的速度影响非常大,设为2的时候插入10000条数据需要2秒,设置为0的时候只需要1秒,设置为1的时候,则需要200多秒,因此,mysql官方运维手册也建议尽量将插入操作合并为一个事务,即将众多的小事务合并,以便可以大幅度提升速度

3、innodb_doublewrite

双写操作,即同一份数据写2份,保证数据存在一个副本,预防数据因为物理介质的存储因素造成数据丢失(默认开启)

show global variables like ‘innodb_doublewrite’;


4、innodb_file_per_table=1

设置独立的表空间文件,在存储上看到的那些 xxx.idb文件,通过设置这个参数,可以让Innodb引擎对于表的数据维护性更好,同时也更方便后续对表的数据拆分与迁移

5、innodb_thread_concurrency

设置Innodb线程的并发数,默认值为0时表示不被限制(即可以创建任意多个线程来处理请求),若要设置最好与服务器的CPU核心数相同或者CPU核心数的2倍,以最大化的提升Innodb的使用效率

show global variables like ‘innodb_thread_concurrency’;


这个参数在实际开发中建议可以根据自身的服务器好好配置下参数,以便提升并发环境下的mysql服务器的利用率

mysql Innodb参数配置相关推荐

  1. MySQL相关参数配置及性能优化

    MySQL及其优化 文章目录 MySQL及其优化 数据库相关概念 事务的四大特性ACID 影响mysql数据库性能的几个方面 数据库性能优化的重点 CentOS系统参数优化 内核相关参数(/etc/s ...

  2. MySQL服务器参数配置

    本文是笔者整理了慕课网的<全面讲解MySQL架构设计>的第二章内容,提取出来的博客,方便在实际生产用按照属性条目,一条条进行配置和调优. 课程链接:https://coding.imooc ...

  3. mysql连接参数配置

    前言 mysql性能优化涉及到很多方面,在上一篇中通过explain打印出sql的执行计划可以作为指导开发人员进行sql优化是一个方面,另外,mysql自身的参数配置也很多,比如连接参数(connec ...

  4. 27个常见的MySQL服务器参数配置

      充分理解 MySQL 配置文件中各个变量的意义对我们有针对性的优化 MySQL 数据库性能有非常大的意义.通常我们需要根据不同的数据量级,不同的生产环境情况对MySQ配置文件进行优化    Lin ...

  5. mysql数据库参数配置_MySQL数据库配置参数优化及参数对应的解释

    Mysql参数优化对于新手来讲,是比较难懂的东西,其实这个参数优化,是个很复杂的东西,对于不同的网站,及其在线量,访问量,帖子数量,网络情况,以及机器硬件配置都有关系,优化不可能一次性完成,需要不断的 ...

  6. mysql数据库密码安全参数_MySQL 密码参数配置与修改 validate_password

    MySQL 密码参数配置与修改 validate_password 场景 通过root用户创建travel_agency数据库,目标是,新建一个用户然后对仅对该用户开放travel_agency数据库 ...

  7. mysql密码参数_MySQL 密码参数配置与修改 validate_password

    MySQL 密码参数配置与修改 validate_password 场景 通过root用户创建travel_agency数据库,目标是,新建一个用户然后对仅对该用户开放travel_agency数据库 ...

  8. Mysql一些重要配置参数的学习与整理(一)

    2019独角兽企业重金招聘Python工程师标准>>> 原文地址:Mysql一些重要配置参数的学习与整理(一) 最近一直在进行mysql的学习,主要是学习mysql的一些配置参数,了 ...

  9. MySQL 关于性能的参数配置梳理

    以下List是我们常见的MySQL参数配置,这个参数对提高实例的性能大有裨益. 其中 建议设置值,仅供参考,需要根据自己的业务场景和硬件资源仔细推敲. 参数 设置说明 建议设置值 lower_case ...

最新文章

  1. RedisJson 横空出世,性能碾压ES和Mongo!
  2. 个人博客作业week7
  3. 寒假CF- WA了不要怕!
  4. linux禁用页面拷贝粘贴,【Linux基础】VI命令模式下删除拷贝与粘贴
  5. VTK:几何对象之Planes
  6. POJ 3262 Protecting the Flowers 贪心(性价比)
  7. arm linux samba,嵌入式linux系统教你制作samba服务器
  8. 【机器学习-西瓜书】三、线性回归;对数线性回归
  9. .bat以管理员身份运行
  10. 多线程往文件里写数据
  11. 适合 Java 新手的开源项目集合——在 GitHub 学编程
  12. 攻防世界 crypto Railfence
  13. 毕业两年程序员Java学习路线
  14. 解决Win10系统使用暴风激活导致的劫持浏览器主页问题
  15. 实用主义当道——GitHub 热点速览 Vol.48
  16. 单片机加减法C语言,如何利用51单片机实现加减法计算
  17. 一个毕业生的年终总结
  18. 主板各种插针接口与机箱(电源)的接法
  19. java 8 joda time,Joda Time 使用
  20. 【面向对象应用~.~】——项目开发团队分配管理软件

热门文章

  1. Android编译期代码生成之apt实践入门
  2. maven 一个简单项目 —— maven权威指南学习笔记(三)
  3. 菜鸟的成长记录--linux 通配符和特殊字符集合的使用
  4. Java中接口定义成员变量
  5. 将一个包含有2层数据分组的表输出到EXCEL表里,并分组统计
  6. 利用权限禁止QQ的自动升级(QQUpdateCenter)
  7. jquery梳理之常用选择器
  8. apache-commons pool使用
  9. golang ide 升级
  10. 分享无限:偷拍IBM power 720内部外部图片