• 影响mysql数据的三个性能指标(TPS\QPS\IOPS)


    一、IOPS

    1)概念介绍

    IOPS (Input/Output Per Second)即每秒的输入输出量(或读写次数),是衡量磁盘性能的主要指标之一。IOPS是指单位时间内系统能处理的I/O请求数量,一般以每秒处理的I/O请求数量为单位,I/O请求通常为读或写数据操作请求。随机读写频繁的应用,如OLTP(Online Transaction Processing),IOPS是关键衡量指标。另一个重要指标是数据吞吐量(Throughput),指单位时间内可以成功传输的数据数量。对于大量顺序读写的应用,如VOD(Video On Demand),则更关注吞吐量指标。

    • 测试工具
      IOPS的测试benchmark工具主要有Iometer, IoZone, FIO等,可以综合用于测试磁盘在不同情形下的IOPS。对于应用系统,需要首先确定数据的负载特征,然后选择合理的IOPS指标进行测量和对比分析,据此选择合适的存储介质和软件系统

    2)IOPS计算

    理论上可以计算出磁盘的最大IOPS,即

    IOPS = 1000 ms/ (Tseek + Troatation)
     	 = 1000/(寻道延迟+平均旋转延迟)
    
    • 1
    • 2
    • 寻道延迟
      寻道时间Tseek是指将读写磁头移动至正确的磁道上所需要的时间。寻道时间越短,I/O操作越快,目前磁盘的平均寻道时间一般在3-15ms。
        7200/分的STAT硬盘平均物理寻道时间是9ms;
        10000/分的STAT硬盘平均物理寻道时间是6ms;
        15000/分的SAS硬盘平均物理寻道时间是4ms。
    
    • 1
    • 2
    • 3
    • 平均旋转延迟
      旋转延迟Trotation是指盘片旋转将请求数据所在扇区移至读写磁头下方所需要的时间。旋转延迟取决于磁盘转速,通常使用磁盘旋转一周所需时间的1/2表示。
       常见硬盘的旋转延迟时间为:
    1)7200 rpm的磁盘平均旋转延迟大约为:
    60*1000/7200/2 = 4.17ms;
    2)10000 rpm的磁盘平均旋转延迟大约为:
    60*1000/10000/2 = 3ms;
    3)15000 rpm的磁盘其平均旋转延迟约为:
    60*1000/15000/2 = 2ms
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    二、TPS(适用innodb)

    1)TPS概念(每秒处理的事务数Transactions Per Second)

    TPS是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。

    2)TPS计算

    • (1) 方法一
    Com_commit = SHOW GLOBAL STATUS LIKE 'Com_commit';
    Com_rollback = SHOW GLOBAL STATUS LIKE 'Com_rollback';
    Uptime = SHOW GLOBAL STATUS LIKE 'Uptime';
    TPS=(Com_commit + Com_rollback)/Uptime
    
    • 1
    • 2
    • 3
    • 4
    • (2) 方法二
    use information_schema;
    select VARIABLE_VALUE into @num_com from GLOBAL_STATUS where VARIABLE_NAME ='COM_COMMIT';
    select VARIABLE_VALUE into @num_roll from GLOBAL_STATUS where VARIABLE_NAME ='COM_ROLLBACK';
    select VARIABLE_VALUE into @uptime from GLOBAL_STATUS where VARIABLE_NAME ='UPTIME';
    select (@num_com+@num_roll)/@uptime;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    三、QPS(同时适用与InnoDB和MyISAM 引擎 )

    1)QPS概念( 每秒处理的查询数)

    每秒查询率QPS是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准,在因特网上,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。

    对应fetches/sec,即每秒的响应请求数,也即是最大吞吐能力。

    2)QPS计算

    • (1) 方法一
    Questions = SHOW GLOBAL STATUS LIKE 'Questions';
    Uptime = SHOW GLOBAL STATUS LIKE 'Uptime';
    QPS=Questions/Uptime
    
    • 1
    • 2
    • 3
    • (2) 方法二
    use information_schema;
    select VARIABLE_VALUE into @num_queries from GLOBAL_STATUS where VARIABLE_NAME ='QUESTIONS';
    select VARIABLE_VALUE into @uptime from GLOBAL_STATUS where VARIABLE_NAME ='UPTIME';
    select @num_queries/@uptime;
    
    • 1
    • 2
    • 3
    • 4

    四、确认磁盘 I/O 存在性能问题

    1)随机负载

    对于随机负载,当遇到余下情况时,我们那通常认为存在 I/O 性能问题:

    1. 平均读时间大于 15ms
    2. 在具有写 cache 的条件下,平均写时间大于 2.5ms

    2)顺序负载

    对于顺序负载,当遇到余下情况时,我们那通常认为存在 I/O 性能问题:
    1、 在一个磁盘上有两个连续的 I/O 流
    2、 吞吐量不足(即远远小于磁盘 I/O 带宽)
    对于一块磁盘来讲,随着 IOPS 数量的增加,I/O service 也会增加,并且会有一个饱和点,即 IOPS 达到某个点以后,IOPS 再增加将会引起 I/O service time 的显著增加。

    五、计算QPS和TPS说明

    1)Questions记录了从mysqld启动以来所有的select,dml次数包括show命令的查询次数(多少有点缺失准确性:很多时候数据库有监控系统在运行,每5秒show一次查询当前数据状态,这样查询就统计到QPS、TPS中,造成数据污染)

    2)数据库中存在较多的myisam表,计算用questions比较合适

    3)如果数据库中存在较多的innodb表,则计算以com_*数据来源比较合适

  • 相关阅读:
    Node.js的入门及模块化
    基础设施即代码(IAC),Zalando Postgres Operator UI 入门
    MYSQL08_子查询的概述、单行、多行、相关子查询
    【matplotlib 实战】--箱型图
    Java数据结构—链表与LinkedList
    antd4 Table实现翻页勾选
    Spring声明式事务
    零基础学Linux内核之设备驱动篇(7)_字符设备_实验篇2
    安卓手机部署分割模型
    【JVM】内存区域划分、类加载机制(双亲委派模型图解)、垃圾回收(可达性分析、分代回收)
  • 原文地址:https://blog.csdn.net/weixin_43679037/article/details/126370442