【背景】

之前我们碰到一些MySQL的性能问题,比如服务器日志备份时可能会导致慢查询增多,一句简单的select或insert语句可能执行几秒,IO负载较高的服务器更容易出现并发线程数升高,CPU上升等问题。

最近学习了MySQL InnoDB IO相关的部分内核原理,可以帮我们了解服务器IO瓶颈对MySQL性能的影响,下面以MySQL5.7.23的源码为例

【原理】

1、InnoDB实现了同步IO和异步IO两种文件读写方式

(1、)对于读操作,通常用户线程触发的数据请求都是同步读,其他后台线程触发的是异步读。

(2、)对于写操作,InnoDB是WAL模式,先写日志,延迟写数据页;

redo log的写操作大部分是异步写,主要在下面场景下触发

<1、>redo log buffer空间不足时;

<2、>当参数innodb_flush_log_at_trx_commit设置为1时,每次事务提交都会做一次fsync,相当于是同步写;

<3、>master线程每秒做一次redo fsync;

<4、>checkpoint

<5、>实例shutdown时

<.6>binlog切换时

Page cleaner线程负责脏页的刷新操作,其中double write buffer的写磁盘是同步写,数据文件的写入是异步写。

2、同步读写操作通常由用户线程来完成,下面先分析同步读

当用户线程执行一句SQL时,如果请求的数据页不在buffer pool中,就需要将文件中的数据页加载到buffer pool中,

从函数buf_read_page可以看到这里是同步读操作,如果IO有瓶颈,响应延迟,那么该线程就会被阻塞。

从函数buf_page_init_for_read可以看到,在读数据页时会加X锁

这时如果有其他用户线程请求相同的数据页时,从函数buf_wait_for_read看到,尝试获取X锁,就会处于阻塞状态。

当服务器IO成为瓶颈,发生上面的问题时,就会出现SQL执行变慢

问题进一步恶化,大量慢查询,运行中的线程处于等待状态,占用了Innodb线程(innodb_thread_concurrency我们的配置大部分是0或64,实际上通常是CPU的逻辑核数40)

对于并发较高的系统,会导致其他大量的线程处于等待队列中,并发线程过高又会导致上下文切换频繁,CPU上升。

3、一个同步写的例子

前面做过一个测试,执行500W条insert语句

用source执行insert脚本,TPS大约在每秒700,后面并行同时执行3个insert脚本,TPS达到每秒2000左右,IO %util已经接近100%

由于此时参数innodb_flush_log_at_trx_commit设置为1时,每次事务提交都会做一次fsync,相当于是同步写,IO已达到瓶颈,TPS处理能力无法提高。

当将参数innodb_flush_log_at_trx_commit临时调整为2,改为后台进程进行异步写,并行执行8个insert脚本,TPS达到每秒约1W左右,IO %util约在8%。

实现逻辑可以关注log_write_up_to函数

【应用场景】

1、当服务器IO出现瓶颈,会导致MySQL性能大幅下降,因此建议尽可能的利用服务器内存资源,将实例的innodb_buffer_pool_size设置为物理内存的70%左右;

2、合理的拆分,尽可能的让一个实例的热点数据都可以缓存在innodb buffer pool中

3、对于某些场景下执行脚本,或初始化数据时,可以将innodb_flush_log_at_trx_commit临时设置为2,能大幅提升导入性能。

参考资料:

mysql io瓶颈_服务器IO瓶颈对MySQL性能的影响相关推荐

  1. 服务器处理文件的io瓶颈,解决服务器数据传输瓶颈的IO技术

    <解决服务器数据传输瓶颈的IO技术>由会员分享,可在线阅读,更多相关<解决服务器数据传输瓶颈的IO技术(3页珍藏版)>请在人人文库网上搜索. 1.解决服务器数据传输瓶颈的I/O ...

  2. mysql xtrabackup 主从_使用 Xtrabackup 在线对MySQL做主从复制

    说明1.1 xtrabackupmysqldump对于导出10G以下的数据库或几个表,还是适用的,而且更快捷.但一旦数据量达到100-500G,无论是对原库的压力还是导出的性能,mysqldump就力 ...

  3. mysql序列号生成_忘掉 Snowflake,感受一下性能高出587倍的全局唯一ID生成算法

    今天我们来拆解 Snowflake 算法,同时领略百度.美团.腾讯等大厂在全局唯一 ID 服务方面做的设计,接着根据具体需求设计一款全新的全局唯一 ID 生成算法.这还不够,我们会讨论到全局唯一 ID ...

  4. mysql获取时间戳_服了!阿里Mysql三位封神专家总结1200多页性能优化的千金良方...

    MYSQL(关系型数据库管理系统) MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应 ...

  5. 程序连接不上mysql数据库文件_数据库问题(程序连接mysql错误)

    今天服务器遇到了一个很熟悉的问题 输入 #mysql -u root -p ERROR 2002 (HY000):Can't connect to local MySQL server 随即上网找寻答 ...

  6. 新的mysql如何使用_如何使用新的MySQL更新日志

    使用新的MySQL更新日志的方法未必人人都会,下面就教您如何使用新的MySQL更新日志的方法,希望对您能够有所帮助.如果你只使用一 使用新的MySQL更新日志的方法未必人人都会,下面就教您如何使用新的 ...

  7. java mysql安装教_大学java教案之MySQL安装图解

    一.MYSQL的安装 1.打开下载的mysql安装文件mysql-5.0.27-win32.zip,双击解压缩,运行"setup.exe". 2.选择安装类型,有"Typ ...

  8. mysql英文介绍_每日科技英文48: MySQL C API简介

    今日要点: MySQL C API的定义 MySQL C API包含的内容 如何获取MySQL C API 什么是库(library)的解释 windows版外带调试库 JDBC,ODBC,ADO,P ...

  9. 阿里云rds for mysql平台介绍_阿里云RDS for MySQL 快速入门——笔记

    1初始化配置 1.1设置白名单 创建RDS实例后,需要设置RDS实例的白名单,以允许外部设备访问该RDS实例.默认的白名单只包含默认IP地址127.0.0.1,表示任何设备均无法访问该RDS实例. 设 ...

  10. mysql 数据迁移_【AWS 功能】Mysql 数据库迁移至Amazon RDS方案

    今天,我们讲讲如何使用源MySQL数据库执行数据库迁移到MySQL数据库的目标Amazon RDS的方案,同时由于(源和目标数据库引擎是相同的)--模式结构.数据类型和数据库代码在源和目标数据库之间是 ...

最新文章

  1. Tensorflow yolov3 Intel Realsense D435 单摄像头下各模块识别时间测试
  2. 牛逼!Python常用数据类型的基本操作(长文系列第一篇)
  3. 检查您的REST参数!
  4. github上打包的样式为什么在预览的时候,出现404
  5. vue mint-ui 三级地址联动
  6. 全志R40 串口485 控制操作
  7. 2021年葡萄酒酿造及葡萄酒产业发展研究报告
  8. 射极跟随器实验报告数据处理_射极跟随器实验报告 -
  9. 微信小游戏是个人尝试做游戏最好的选择
  10. PS 打开黑屏怎么办?
  11. oracle cdb to no cdb,【CDB】怎样转换non-CDB to CDB
  12. HMGK-being_hacked
  13. 西北大学第四届程序设计竞赛新生赛 J 八意永琳的药房
  14. html5 驾考 答题样式,驾考科目一答题规律
  15. 【SQL基础】SQL常用函数简要解析
  16. java调用其他java项目的Https接口
  17. 安卓 仿联系人索引列表 A到Z排序查询
  18. 土地利用现状分析(城市三维,建筑等级现状)
  19. 12306登录python_Python模拟登录12306
  20. html旋转角度计算,CSS3属性transform详解之(旋转:rotate,缩放:scale,倾斜:skew,移动:translate) | 0101后花园...

热门文章

  1. 台州 OJ 3847 Mowing the Lawn 线性DP 单调队列
  2. 如何把直播嵌入微信公众账号
  3. Xmanager 6 激活
  4. javaScript学习笔记【尚硅谷】
  5. Codeforces Round #459 (Div. 1) B. MADMAX(dp+博弈)
  6. HBase shell删除表失败:ERROR: Table user is enabled. Disable it first.
  7. excel取整数的函数_EXCEL的知识考点
  8. C语言头歌educoder实训作业答案分享 指针(一)
  9. 分数阶微积分学薛定宇电子版_分数阶微积分学与分数阶控制 pdf epub mobi txt 下载...
  10. 华北电力计算机考研,华北电力大学考研必知