一般硬盘分为机械硬盘和固态硬盘,在mysql的服务器中,强烈建议使用固态硬盘,因为固态硬盘的IOPS, 主要是固态硬盘的随机读取的速度比较高。

IOPS (Input/Output Per Second)即每秒的输入输出量(或读写次数),是衡量磁盘性能的主要指标之一。IOPS是指单位时间内系统能处理的I/O请求数量,一般以每秒处理的I/O请求数量为单位,I/O请求通常为读或写数据操作请求。
随机读写频繁的应用,如小文件存储(图片)、OLTP数据库、邮件服务器,关注随机读写性能,IOPS是关键衡量指标。
顺序读写频繁的应用,传输大量连续数据,如电视台的视频编辑,视频点播VOD(Video On Demand),关注连续读写性能。数据吞吐量是关键衡量指标。

简单理解就是:

磁盘的 IOPS,也就是在一秒内,磁盘进行多少次 I/O 读写。

磁盘的吞吐量,也就是每秒磁盘 I/O 的流量,即磁盘写入加上读出的数据的大小。

有些硬盘的厂商有时候给的是吞吐量,也就是带宽。怎么计算IOPS

例如第一个Intel x25-E 64GB 的这个盘的iops = 1M / 4kb * 48 = 1024 / 4 * 48 = 12288

① 1M中有多少个块, 上面是以4kb为一个块,

② 48M/s 的吞吐量, 那么IO就是 1M / 4kb * 48 = 1024 / 4 * 48 = 12288

跟硬盘相关的mysql配置

innodb_flush_neighbors = 0  ##硬盘刷新比较平缓,效率高,

innodb_log_file_size = 4G     ##如果硬盘比较大的话,可以设置8G

Linux查看磁盘的性能

① iostat -xm 3

avg-cpu:  %user   %nice %system %iowait  %steal   %idle1.02    0.00    1.02    0.00    0.00   97.95Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
vda               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.0

  • rrqm/s: 每秒对该设备的读请求被合并次数,文件系统会对读取同块(block)的请求进行合并
  • wrqm/s: 每秒对该设备的写请求被合并次数
  • r/s: 每秒完成的读次数
  • w/s: 每秒完成的写次数
  • rkB/s: 每秒读数据量(kB为单位) 读的吞吐量
  • wkB/s: 每秒写数据量(kB为单位) 写的吞吐量
  • avgrq-sz:平均每次IO操作的数据量(扇区数为单位)
  • avgqu-sz: 平均等待处理的IO请求队列长度
  • await: 平均每次IO请求等待时间(包括等待时间和处理时间,毫秒为单位)
  • svctm: 平均每次IO请求的处理时间(毫秒为单位)
  • %util: 采用周期内用于IO操作的时间比率,即IO队列非空的时间比率

我们上面的IOPS = r/s + w/s 的值

② 使用 sysbench  命令测试硬盘性能

-file-num=N    创建文件的数量,默认值:128。由N个文件组成。
--file-block-size=N    每次IO操作的block大小,默认值:16K。
--file-total-size=SIZE    所有文件大小总和,默认值:2G。
--file-test-mode=STRING    测试模式:seqwr(顺序写), seqrewr(顺序读写), seqrd(顺序读), rndrd(随机读), rndwr(随机写), rndrw(随机读写)。
--file-io-mode=STRING    文件操作模式:sync(同步),async(异步),mmap(快速map映射),默认值:sync。
--file-async-backlog=N    每个线程排队的异步操作数,默认值[128]。
--file-extra-flags=[LIST,...]    使用额外的标志符来打开文件{sync,dsync,direct}。默认值空
--file-fsync-freq=N    在完成N次请求之后,执行fsync(),0表示不使用fsync,默认值:100。
--file-fsync-all[=on|off]    每次写操作后执行fsync(),默认值:off。
--file-fsync-end[=on|off]        测试结束后执行fsync(),默认值:on。
--file-fsync-mode=STRING    使用fsync或fdatasync方法进行同步,默认值:fsync。
--file-merged-requests=N    尽可能的合并N个IO请求数,0表示不合并,默认值:0。
--file-rw-ratio=N                测试时候的读写比例,默认值:1.5(即3:2)。
--max-time=300  ##最大的测试时间 300S, 如果设置5s那么5s就测试完成

--max-requests=0 ## 最大的请求,随便请求

--num-threads=128 ## 多少个线程数进行测试

--report-interval=1 ## 每秒中输出结果

A)准备4块硬盘测试

sysbench --test=fileio --file-num=4 --file-block-size=16384 --file-total-size=4G prepare

B) 刚刚申请的4块硬盘开始测试  这里测试的是 rndrd  随机读的模式

sysbench --test=fileio --file-num=4 --file-block-size=16384 --file-total-size=4G --file-test-mode=rndrd --file-extra-flags=direct --max-time=300 --max-requests=0 --file-fsync-freq=1 --num-threads=128 --report-interval=1 run

用sysbench测试的硬盘结果是吞吐量: reads: 33.45 M/s, 我们这里测试的是块是--file-block-size=16384(16kb) 那么iops = 1M / 16kb * 33.45 = 2112 (需要注意的是我们这里测试的是 16KB的块,我们一般指标是4K) 我这里测试的阿里云的服务器。

这个时候也可以看 iostat -xm 3 的数据

读的吞吐量差不多的都是32/s 33M/s

读的iopss是2089跟我们算的 2112也差不多

如果我们把上面的 --max-time=5 改成5 则跑完之后就会出来测试报告

C) 测试完成后 需要把刚刚分配的空间释放掉

sysbench --test=fileio --file-num=4 --file-block-size=16384 --file-total-size=4G cleanup

③ innodb_io_capacity 的设置

当我们用上面的工具测试出了硬盘的iops,我们就需要在mysql中设置,mysql读写硬盘的iops,

一般来说就用硬盘的 iopo / 2的值, mysql默认是200,这就是为什么有时候我们的服务器买了固态硬盘后,感觉磁盘的读写还是比较慢的原因。

这里还需要介绍一个变量innodb_flush_method = O_DIRECT

意思是说,当我们的mysql在写入磁盘的时候,不经过操作系统层的空间缓存,而是直接写入磁盘。

Mysql 硬盘性能测试相关推荐

  1. 使用Jmeter对mysql进行性能测试入门

    使用Jmeter对mysql进行性能测试入门 第一步:测试环境准备: 1).mysql> select version(); +-----------+ | version() | +----- ...

  2. 测试m.2固态的软件,Ryzen新平台下M.2固态硬盘性能测试

    原标题:Ryzen新平台下M.2固态硬盘性能测试 自AMD Ryzen处理器上市后,针对它的各种性能测试内容层出不穷.大家一开始对它的CPU性能感兴趣,接着蔓延到首次支持DDR4的内存性能纠结了很久, ...

  3. Mybatis与JDBC批量插入MySQL数据库性能测试及解决方案

    Mybatis与JDBC批量插入MySQL数据库性能测试及解决方案 参考文章: (1)Mybatis与JDBC批量插入MySQL数据库性能测试及解决方案 (2)https://www.cnblogs. ...

  4. as ssd测试软件得分分析,固态硬盘性能测试软件AS SSD benchmark详解

    固态硬盘性能测试软件AS SSD benchmark详解? 能够带来极速开关机体验,另外电脑也要更为顺畅不少,不过,如果要看固态硬盘的性能,一般大家还需要用到AS SSD工具检查固态硬盘读取速度.是不 ...

  5. mac linux 性能测试工具下载,8款SSD固态硬盘性能测试软件,适用于Windows、Linux、MacOS、安卓系统等不同操作系统的...

    虽然各存储厂商对SSD的读写参数都有说明,但通常是不太准确的.唯一值得相信的就是自己测试,用自己的真实环境得到真正的数据. 警告 - 请不要不必要地重复读/写测试你的SSD固态盘,重复读/写测试可能会 ...

  6. CENTOS 7 踢用户_CentOS服务器及MySQL数据库性能测试-乐搏软件测试

    这期小编和大家分享使用Sysbench,进行CentOS服务器及MySQL数据库的性能测试. Sysbench是一个跨平台的基准测试工具. 基准测试是对数据库的性能指标进行定量的.可复现的.可对比的测 ...

  7. [杂记] 新年物语关于Mysql引擎性能测试

    顺便看到一个Mysql的测试文章,感觉还满有参考价值的,于是记录下来以便参考. 以下是一个MySQL中MyISAM引擎与InnoDB引擎性能简单性能测试: [硬件配置] CPU : AMD2500+ ...

  8. SSD硬盘性能测试比较

    由于公司最近需要上SSD,用于 MySQL 数据库服务器,以下针对单块480G SSD.接RAID卡240G SSD* 2 RAID0,以及与普通硬盘SATA硬盘以及SAS(raid10)做个比较: ...

  9. mysql 硬盘写入速度_MySQL存储写入速度慢分析

    原标题:MySQL存储写入速度慢分析 一.存储结构分析 MySQL存储结构图: 解析: 1.读操作:内存读-->cache缓存读-->磁盘物理读 读取到的数据会按上述顺序往回送. 2.写操 ...

最新文章

  1. Javascript 检查一组 radio 中的哪一个被勾选
  2. mysql 随机选择数据_从MySQL随机选取数据
  3. 使用C语言和i2c-dev驱动
  4. 给大家提炼几个产品经理的核心点
  5. linux命令行总结
  6. HDU 2242 考研路茫茫——空调教室
  7. UVa 12169 - Disgruntled Judge(拓展欧几里德)
  8. Sqoop 数据增量导出,--update-key添加多个字段
  9. php对象数字属性,PHP获取对象的纯数字属性
  10. 操作系统课程设计 Kernel编译和WinDbg启动 批处理文件
  11. vue 下载插件downloadjs
  12. 英语学习之‘加减乘除’
  13. MYSQL Error:You must SET PASSWORD before execut...
  14. DDD(领域驱动设计)系列主题:基础概念对象介绍(实体,值对象,仓储等)
  15. 2022年全球与中国磁阻随机存储器(MRAM)市场现状及未来发展趋势
  16. hello ,酷狗音乐产品体验报告
  17. html基础之块元素、行内元素、行内块元素
  18. Mac下如何输入全角空格
  19. 【读书笔记->统计学】04-01 利用概率理论预测和决策-概率与事件、维恩图、互斥与相交事件、交集与并集概念简介
  20. 浏览器自动重复执行任务 iMacros

热门文章

  1. keep-alive 的应用
  2. 好客租房移动web项目(2)
  3. 【无标题】2023第十五届上海国际智慧城市、物联网、大数据博览会
  4. [初学笔记]matlab的具体类型图形命令函, bar条形图
  5. php 错误32767,Mymps error: Duplicate entry '32767' for key 'PRIMARY'报错怎么办
  6. 推荐系统- 评分预测问题
  7. 在Adobe Reader里添加书签功能
  8. 亚马逊云科技Amazon CodePipeline上线
  9. 【ppt入门教程】如何让ppt与Excel工作表结合 实现数据的录入与计算
  10. 最有效的大脑休息方法