欢迎您访问高等教育自学考试信息服务网平台!

TPCC性能测试

更新时间:2024-09-15 18:10:22作者:匿名

1. 概要

TPC(事务处理性能委员会)是一个由10 家成员公司创建的非盈利组织,总部位于美国。 TPC的主要成员是计算机软硬件制造商,包括IBM、HP、Oracle、Microsoft等。TPC的职能是制定商业应用标准程序(Benchmark)、性能和价格测量的标准规范,并管理发布测试结果。 TPC不给出基准程序的代码,只给出基准程序的标准规范。任何制造商或其他测试人员都可以根据规范优化构建自己的系统。 TPC推出的基准测试程序包括:TPC-A、TPC-B、TPC-C、TPC-D、TPC-E、TPC-W。在

TPC-C 是在线事务处理(OLTP)的基准程序。 TPC-D 是决策支持的基准程序。 TPC-E是大型企业信息服务的标杆计划。

2. TPC-C 介绍

TPC-C 是衡量OLTP 系统性能和可扩展性的基准。它由一系列OLTP工作流程组成,包括查询、更新和排队小批量事务,包括广泛的数据库功能。它模拟典型OLTP 应用程序环境中的活动,其中包含一系列复杂的事务。 TPC-C工作流程应具有以下特点:

适当复杂的OLTP 事务联机和延迟事务执行模型多个用户适当的系统和应用程序执行时间大量磁盘输入和输出事务完整性(ACID) 随机数据访问数据库由各种大小、属性和关系的表组成。

2.1. TPC-C 商业模型(E-R 模型)

TPC-C模拟了一个比较有代表性的OLTP应用环境:在线订单处理系统。假设有一个大型商品批发商,有N个仓库分布在不同地区。每个仓库负责向10个销售点供货。每个销售点有3000名顾客。每个客户平均订购10 种产品。由于不可能将公司的所有货物都存放在一个仓库中,因此某些请求必须发送到其他仓库,因此数据库在逻辑上是分布式的。 N为可变参数,测试人员可以随意改变N以获得最佳测试效果。

2.2. TPC-C 输入数据流

TPC-C 系统需要处理五种类型的事务:

New-Order:客户输入新的订单交易Payment:更新客户的账户余额以反映其付款状态Delivery:交货(批量交易) Order-Status:查询客户最近的交易状态Stock-Level:查询仓库库存状态,以便我们及时补货。

系统中各类交易占比:

新订单:45% 付款:43% 交货:4% 订单状态:4% 库存水平:4%

TPCC性能测试

对于前四类交易,响应时间要求在5秒以内;库存状态查询交易,响应时间要求在20秒以内。

这五种类型的事务对图1所示的九张表进行操作。事务操作类型包括更新、插入、删除和取消操作。

2.2 TPC-C 输出指标

TPC-C的测试结果主要包括两个指标:

流量指标(tpmC):描述系统在执行付款、订单状态、交货和库存四种交易时每分钟可以处理的新订单交易数量。流量指示值越大越好。

tpm是每分钟交易数的缩写; C指的是TPC中的C基准程序。它的定义是系统每分钟处理的新订单数量。需要注意的是,系统在处理新订单的同时,还必须处理如图1所示的其他四类交易请求。从图1可以看出,新订单请求不能超过所有交易请求的45%。因此,当一个系统的性能为1000tpmC时,它每分钟实际处理的请求数在2000以上。

成本效益(Price/tpmC):测试系统价格与流量指标的比值。性价比越小越好。

2.3. TPC-C 实现

TPC-C是OLTP系统的测试标准程序。有许多商业或免费软件都实现了该标准。下面我们介绍几款知名的实现软件。

HammerOra:负载测试工具,目前支持Oracle、MySQL和Web应用程序。基于Tcl语言,内嵌TPC-C和TPC-H两套标准测试脚本。 Hammerora(以Oracle为例)的设计原理是解析Oracle的Trace文件,将其转换为Oratcl程序,然后使用多个用户在Oracle数据库中并发“回放”用户的事务。我们知道Oracle的Trace文件可以详细记录用户对数据库的操作。这样Hammerora 可以确保对用户环境的真实模拟。

Orabm:Oracle服务器的CPU和内存性能测试工具。是由Geoff Ingram 构建的一个包,其中包含一组SQL 脚本和几个命令行程序。 Orabm加载器(Orabmload)构造一组符合TPC-C标准的数据进行测试。 Orabm 交易基于TPC-C 中的库存级别和订单状态交易。其运行机制简述如下。 Orabm 的工作原理是在每个用户指定的并发数据库会话中运行用户执行的多个数据库事务。事务在ORABM 模式下通过ORABM_SERVERSIDE_STRESS 存储过程运行。对于每个并发会话,ORABM_SERVERSIDE_STRESS 运行在orabm 命令行上指定的事务数,并在采样间隔完成时返回该会话的TPS 值。为了保证采样间隔内所有并发会话都在处理事务,TPS值只包含中间80%的事务,即忽略最初的10%和最后的10%。

Benchmark Factory for Databases 是一款专为数据库性能测试和容量规划而设计的工具。支持的数据库包括Oracle、DB2、SQL Server、MySQL等主流数据库。它可以模拟数千个用户访问应用系统中的数据库、文件、互联网和消息服务器。无论是服务器还是服务器集群,Benchmark Factory都是成熟、可靠、高度可扩展且易于使用的测试工具。支持的性能测试标准包括TPC-C、TPC-B、TPC-D、TPC-H等。Benchmark Factory的工作原理是Benchmark Factory控制台控制几个模拟的Agent场景,对目标数据库进行事务操作,记录操作过程中的目标数据库数据。 Benchmark Factory控制台处理记录的数据并生成运行结果报告,以轻松确定系统容量,识别系统瓶颈,并隔离用户分布式计算环境中与系统强度相关的问题。

其架构如图2所示:

TPCC性能测试

读者还可以基于TPC-C规范中的模型以及输入和输出工作流程来设计自己的TPC-C测试系统。 github上也可以找到很多开源实现:

Percona-Lab tpcc-mysql、sysbench-tpcc:percona开发的基于mysql tpcc规范的测试工具,用于压力测试。请参考MySQL 测试工具- tpcc、tpcc-mysql 压力测试akopytov sysbench:强大的sysbench 工具,可用于postgresql 测试(参考PostgreSQL 11 tpcc 测试(ECS 上103 万tpmC) - 使用Percona 的sysbench-tpcc- Lab) benchmarksql: 5.0 去掉了对mysql 的支持,pingcap 在5.0 的基础上增加了对mysql 和tidb 的支持。使用可见的benchmarksql 5.0支持MySQL的TPC-C测试、TPC-C测试说明、BenchmarkSQL介绍

以下是使用akopytov sysbench 和tpcc-mysql MySQL 基准测试脚本的示例:基于sysbench 和tpcc-mysql

3. NewSql的tpcc测试

使用percona的sysbench-tpcc测试CRDB和TiDB,可以参考NewSQL数据库压力测试工具系列——TPCC。

使用percona sysbench测试CRDB,可以参考cockroachdb的初始压力测试。

此外,CRDB 和TiDB 都有自己的TPCC 修改版本。

3.1. TiDB的TPCC

TiDB 基于Benchmark 5.0 修改,适配TiDB 和Mysql。结果报告请参见TiDB TPC-C 性能对比测试报告- v3.0 vs. v2.1。测试方法请参见如何对TiDB 进行TPC-C 测试。

TiDB 还使用akopytov sysbench 进行基准测试。测试方法请参见如何使用Sysbench 测试TiDB。

3.2. CRDB的TPCC

CRDB 未使用数据库行业中已实施TPC-C 标准的公认工具进行测试。相反,它使用自己实现的一组TPC-C 工具进行了测试。其规格水平尚未得到认可。在其官方白皮书中,也提到这套TPC-C无法与TPC-C标准进行比较。使用Benchmarksql 5.0进行测试,请参考如何使用Benchmarksql测试CockroachDB性能

用户评论

那伤。眞美

这TPCC性能测试的文章写得真不错,我终于明白为什么我们的系统总是卡顿了!希望这篇能帮到更多朋友。

    有17位网友表示赞同!

追忆思域。

TPCC性能测试这个话题太实用了,我刚刚开始研究数据库性能优化,这篇文章给了我很多启发。

    有6位网友表示赞同!

剑已封鞘

看了这篇文章,我对TPCC测试有了更深入的了解,不过感觉代码部分有点复杂,能详细解释一下吗?

    有14位网友表示赞同!

白恍

TPCC性能测试是数据库调优的重要环节,这篇文章对新手来说有点难度,希望能有更基础的介绍。

    有20位网友表示赞同!

摩天轮的依恋

TPCC性能测试确实是个技术活,不过我觉得文章中的一些观点有点过于理想化,实际操作中会遇到很多问题。

    有14位网友表示赞同!

殃樾晨

TPCC测试听起来很专业,但我感觉这篇文章里很多专业术语我都不懂,能简化一下吗?

    有5位网友表示赞同!

敬情

这篇文章让我对TPCC性能测试有了全新的认识,尤其是那个优化策略,太实用了!

    有13位网友表示赞同!

伤离别

TPCC性能测试是个挑战,但也是提升数据库性能的关键。这篇文章让我看到了希望。

    有8位网友表示赞同!

北朽暖栀

TPCC测试的文章很多,但像这样深入浅出的真的不多见,感谢作者分享!

    有8位网友表示赞同!

爱你的小笨蛋

TPCC性能测试的文章看多了,这篇文章算是让我眼前一亮,分析得很有深度。

    有18位网友表示赞同!

志平

TPCC测试是个复杂的过程,这篇文章里提到的工具和技巧很有用,我会好好研究一下。

    有6位网友表示赞同!

闷骚闷出味道了

感觉这篇文章对TPCC性能测试的讲解有点片面,希望作者能补充一些实际操作的经验。

    有11位网友表示赞同!

罪歌

TPCC测试对于数据库性能提升至关重要,这篇文章让我对测试方法有了更清晰的认识。

    有9位网友表示赞同!

万象皆为过客

TPCC性能测试的文章很多,但这篇文章的案例分析让我受益匪浅,点赞!

    有17位网友表示赞同!

情字何解ヘ

TPCC测试的文章看多了,但像这样结合实际案例讲解的还是第一次见,太棒了!

    有12位网友表示赞同!

半世晨晓。

TPCC性能测试是个技术活,不过我觉得这篇文章对新手来说有点难度,希望能有更多简化版的内容。

    有12位网友表示赞同!

冷月花魂

这篇文章对TPCC性能测试的讲解很到位,尤其是关于性能瓶颈的分析,让我茅塞顿开。

    有11位网友表示赞同!

挽手余生ら

TPCC测试的文章看多了,但这篇文章让我对测试结果分析有了新的认识,太有价值了!

    有13位网友表示赞同!

瑾澜

TPCC性能测试是个技术活,这篇文章让我对数据库优化有了更深入的理解,谢谢作者!

    有17位网友表示赞同!

大王派我来巡山!

感觉这篇文章对TPCC测试的讲解还不够全面,希望作者能继续深入探讨一些细节问题。

    有7位网友表示赞同!

为您推荐

....