今天主要介绍所有数据库的三个关键性能指标:
qps 每秒处理的查询数
tps 每秒处理的事务数
IOPS 每秒磁盘进行的I/O操作次数
一、TPS
1、概念
Transactions Per Second(每秒传输的事物处理个数),即服务器每秒处理的事务数。
TPS包括一条消息入和一条消息出,加上一次用户数据库访问。(业务TPS = CAPS × 每个呼叫平均TPS)
TPS是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。
一般的,评价系统性能均以每秒钟完成的技术交易的数量来衡量。系统整体处理能力取决于处理能力最低模块的TPS值。
二、QPS(同时适用与InnoDB和MyISAM 引擎 )
1、概念
每秒查询率QPS是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准,在因特网上,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。
对应fetches/sec,即每秒的响应请求数,也即是最大吞吐能力。
三、IOPS
1、概念
IOPS (Input/Output Per Second)即每秒的输入输出量(或读写次数),是衡量磁盘性能的主要指标之一。IOPS是指单位时间内系统能处理的I/O请求数量,一般以每秒处理的I/O请求数量为单位,I/O请求通常为读或写数据操作请求。随机读写频繁的应用,如OLTP(Online Transaction Processing),IOPS是关键衡量指标。另一个重要指标是数据吞吐量(Throughput),指单位时间内可以成功传输的数据数量。对于大量顺序读写的应用,如VOD(Video On Demand),则更关注吞吐量指标。
传统磁盘本质上一种机械装置,如FC,SAS,SATA磁盘,转速通常为5400/7200/10K/15K rpm不等。影响磁盘的关键因素是磁盘服务时间,即磁盘完成一个I/O请求所花费的时间,它由寻道时间、旋转延迟和数据传输时间三部分构成。
寻道时间Tseek是指将读写磁头移动至正确的磁道上所需要的时间。寻道时间越短,I/O操作越快,目前磁盘的平均寻道时间一般在3-15ms。
旋转延迟Trotation是指盘片旋转将请求数据所在扇区移至读写磁头下方所需要的时间。旋转延迟取决于磁盘转速,通常使用磁盘旋转一周所需时间的1/2表示。比如,7200 rpm的磁盘平均旋转延迟大约为60*1000/7200/2 = 4.17ms,而转速为15000 rpm的磁盘其平均旋转延迟约为2ms。
数据传输时间Ttransfer是指完成传输所请求的数据所需要的时间,它取决于数据传输率,其值等于数据大小除以数据传输率。目前IDE/ATA能达到133MB/s,SATA II可达到300MB/s的接口数据传输率,数据传输时间通常远小于前两部分时间。
IOPS可细分为如下几个指标:
Toatal IOPS,混合读写和顺序随机I/O负载情况下的磁盘IOPS,这个与实际I/O情况最为相符,大多数应用关注此指标。
Random Read IOPS,100%随机读负载情况下的IOPS。
Random Write IOPS,100%随机写负载情况下的IOPS。
Sequential Read IOPS,100%顺序负载读情况下的IOPS。
Sequential Write IOPS,100%顺序写负载情况下的IOPS。
IOPS的测试benchmark工具主要有Iometer, IoZone, FIO等,可以综合用于测试磁盘在不同情形下的IOPS。对于应用系统,需要首先确定数据的负载特征,然后选择合理的IOPS指标进行测量和对比分析,据此选择合适的存储介质和软件系统。
-----------------------------------------------------------------------------------------------------------------------------------------------------
TPS指系统每秒处理的事务数,是衡量一个区块链系统性能最重要的指标之一。随着区块链发展日趋活跃,一些主流区块链项目网络阻塞问题也愈加严重,导致区块链在高并发业务领域无法落地。目前不少的技术方案与项目都在着力解决此类问题,以达到更高的TPS。
区块链系统TPS的计算公式为:
TPS= 事务处理数量 / 花费的时间
其中,测试数据需要在系统稳定运行状态下获取,否则会影响测试结果的准确性。
03影响因素分析
在区块链系统的生命周期中,影响其TPS的因素大致可以分成内在和外在两大类。内在因素包括系统共识机制、区块参数设置、事务过程优化、节点配置、加密算法等。外在因素包括资源配置、测试验证环境等。
内在因素
内在因素是基于区块链系统在设计时底层技术的选择,如共识机制、数据结构、加密算法等,以及开发时区块大小和出块时间等参数设置、系统运维中的系统优化和升级等。本节主要分析共识机制、区块参数配置、事务过程优化对区块链系统TPS的影响。
共识机制
共识机制是指以去中心化的方式就网络的状态达成统一协议的过程,是区块链最核心技术之一。下表列出了四种主流的区块链共识机制,并对比了基于这些共识机制的区块链项目特点。基于PoW共识的比特币和基于PoW+PoS的以太坊,TPS均在40以下;基于DPoS共识的EOS,TPS达到了3600;基于kalka的超级账本项目,TPS能达到万级。可以看出,基于不同共识机制的区块链系统TPS可能存在数量级的差距。
主流共识机制对比
区块链网络中存在“不可能的三角”,即无论采用何种共识机制,皆无法同时兼顾扩展性、安全性、去中心这三项要求。当系统追求高TPS的时候,必然会牺牲掉一部分安全性或是导致系统过于中心化。以联盟链为例,虽然其实现了低能耗和高性能,却导致了系统过于中心化。而比特币虽然效率较低,TPS数量级为个位数,但其实现了高度去中心化,项目稳定运行11年,安全性受到市场的高度认可。总的来说,共识机制对区块链系统TPS起着决定性作用。
区块参数
区块参数包含了区块大小和出块时间。对基于同一底层的区块链系统而言,区块容量和TPS成正比关系,即区块容量越大,系统TPS越高。以基于PoW共识机制的比特币和比特币现金为例,比特币每个区块大小设定为1M,TPS为7,而比特币现金的每个区块为8M,TPS在24-224之间。反观出块时间对TPS的影响,出块时间与TPS成反比关系,出块需要的时间越长,系统TPS越低。以比特币和莱特币为例,相较于比特币,莱特币出块时间缩短了7.5分钟,但TPS提高了近4倍。可以看出,区块参数对系统TPS有显著的影响。
交易验证
区块链系统中,一笔交易的生命周期包括交易请求、交易广播、交易验证、交易打包、交易上链、交易完成等步骤,其中交易验证机制是影响区块链系统TPS的因素之一。当前,闪电网络、状态通道、分片处理是几种常用的优化交易验证方法,其中闪电网络和状态通道保持了底层区块链协议不变,将交易放到链下执行,即通过改变协议用法的方式来解决扩展性问题。分片处理通过将交易引流到不同片区并在片区内执行交易,使得全网的交易数据被均匀分配,提升了区块链数据的处理效率,从而减轻节点的计算和存储负担。但也要看到,通过交易验证优化手段只能小幅度提高系统TPS。
外在因素
影响区块链系统TPS的外在因素包括区块链系统部署服务器的资源配置和测试环境。资源配置如CPU性能、内存和硬盘容量、网络带宽等。测试环境包括测试依据、测试方法、测试工具等。
资源配置
区块链系统一般部署在物理服务器或云服务器上,服务器的资源配置直接影响区块链系统整体性能。对于区块链系统而言,其所在服务器的硬件性能越高,能够产生的TPS数值也就越高。服务器硬件资源包括CPU、内存、硬盘等,其中,CPU的两个重要评价指标为频率和缓存容量,CPU频率越高,缓存容量越大,系统数据处理速度也会越快。同样,内存较大的计算机设备能够在短时间内缓存大量数据,在区块链系统产生较大数据处理量的前提下,高内存的服务器具备的优势更加明显。
下表展示了同一个区块链系统部署在不同配置的服务器上时测试出的TPS差异。
硬件配置对系统TPS的影响
测试环境
同一个区块链系统在不同的测试环境下会产生差异较大的测试结果。测试环境包括测试设备、测试工具、操作方法等。当前主流的区块链性能测试工具LoadRunner、Benchmark、Caliper等。下表展示了在使用不同测试工具的情形下,同一基于超级账本技术区块链系统TPS测试结果。
不同测试工具下的TPS对比
04差异分析
当前,产业中出现了百万、十万及万级TPS的区块链系统,本章重点分析这三种级别TPS的实现特点。
万级TPS
万级TPS区块链系统可以通过优化节点服务器的硬件配置和交易验证过程来达到,如许多基于超级账本技术的联盟链系统。优化硬件配置可以通过增加CPU性能和内存容量来实现,其中CPU的增加可以使系统具备更强大的逻辑计算能力,内存的增加可以使系统具备较大的数据处理空间,以在相同的时间内处理大批量数据。交易验证的优化可以通过闪电网络、分片处理等技术实现。
十万级TPS
面对日益复杂的计算需求,区块链系统在单位时间内需要处理的数据量大幅度提升,对区块链系统TPS提出了更高的要求。运用多链并行计算和DAG(有向无环图)技术能够进一步提升系统的TPS。十万数量级TPS区块链系统一般可采用多链并行计算的方式处理数据,以DAG的形式传输数据。
百万级TPS