数据库性能压测之TPC-C基准测试

2024-03-25 17:04

本文主要是介绍数据库性能压测之TPC-C基准测试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文链接:https://blog.csdn.net/TIME_1981/article/details/126114797

本文作为学习笔记记录。

TPC

Transaction Processing Performance Council (TPC) 事务处理性能委员会,是一家非盈利IT组织,他们的目的是定义数据库基准并且向产业界推广可验证的数据库性能测试。

TPC-C

-C 代表压测模型的版本

TPC-C具有以下特点:

1)多个复杂类型事务并发执行

2)具有在线和离线交易执行模式

3)多个会话终端模拟多用户访问

4)适中的系统运行时间和应用程序运行时间

5)整个操作有大量的磁盘IO读写操作

6)交易的事务具有完整的ACID特性

7)通过主键和二级索引对分布不均匀的数据进行访问

8)整个TPC-C的库是由许多包含不同字段属性和字段宽度的表组成

9)存在较多数据访问和更新之间的资源争夺

通过模拟批发供应商对客户的销售活动,TPC-C并不仅是体现了某个具体业务,而是代表了大部分销售活动,包含:管理、出售、分发产品和服务。

举个例子:可以模拟汽车租赁、食品批发、零部件供应等具体业务。

TPC-C压测作为一项基准测试,它并不能完整的展现生产上业务的多样性,而是做了很好的抽象只保留了此类活动的基本特征:如系统利用率和操作复杂程度,它的各种操作是成比例的

整个基准测试描述的是一家批发供应商,其分布的多个销售区和相关仓库。

随着公司业务的扩展,需要创建新的仓库和相关销售区。

每个区域仓库覆盖10个销售地区。

每个地区为3,000位客户提供服务。

所有仓库保留公司出售的100,000件商品的库存。

下图说明了TPC-C业务环境的仓库,区域和客户层次结构。

 TPC-C压测交易组合中包含五种交易类型及其比例:

1)NewOrder 45% 属于中量级事务会有1%失败率(由于无效输入)

2)Payment 43% 属于短事务,为已存在的订单做支付动作

3)OrderStatus 4% 属于只读事务用于计算运输装状态和订单line item

4)Delivery 4% 查询每个仓库中没有交付的订单更新为交付状态

5)StockLevel 4% 属于只读事务,加入平均200 Order Line(相当于订单详情)及相应的库存用以生成报告

TPC-C五种交易类型中StockLevel和OrderStatus这两种交易属于只读事务,NewOrder 、Payment、Delivery属于读写事务,这五种请求是互相独立运行的,在交易组合中读写操作占92%,只读操作占8%。

下图显示模拟用户在终端每次发起交易的循环过程:

1)在五种交易类型选择一种

2)在终端显示发起的交易内容,提交文本完成输入

3)模拟用户接收到输出内容的时间这是事务执行的响应时间。

4)继续下一个循环

在③中TPC-C要求每种交易的响应时间必须小于等于5秒,但是StockLevel要求的响应时间则是小于等于20秒,其他measure menu 响应时间(包含选择交易类型时间和模拟屏幕输出时间)、Keying time(模拟用户输入时间)、Thinking time(思考等待时间)都有一定响应时间要求。

TPC-C整个过程保证事务的ACID。

1)原子性:通过验证事务提交或者失败后修改数据的记录

2)一致性:通过12个条件去验证数据的一致性,这里就不再列举所有条件了,有感兴趣的可自行查询官方文档,例如:W_YTD = sum(D_YTD) 仓库表和地区表要满足这个要求

3)隔离性:通过检查订单状态和新订单生成的读写冲突来检验隔离性,用来检测脏写、脏读、不可重复读、幻读等异常情况

4)持久化:在保证一致性的前提下,在系统crash后能够恢复,持久化主要依赖数据库本身的持久化能力
 

表业务意义

TPC-C模型是供应商OLTP场景,包含客户创建订单,派送订单,支付。

TPC-C的库由9张表组成:

1)item(商品表)表是固定大小不变为10万warehouse(仓库表)、district(区域表)、customer(用户表)、stock(库存表)表和仓库数量大小而按比增加或者减小order(订单表)、new-order(新订单表)、order-line(订单行)、history(历史表)表会由于运行表的记录数会不断地增长。
 

客户会致电公司下达新订单或请求现有订单的状态。

订单由平均10个订单行(即订单项order-line)。

所有订单行中有百分之一是针对该地区没有库存的商品仓库,并且必须由另一个仓库提供。

下图箭头上所标注的数字为以仓库数为基数其他表数据量扩展关系。

关注测试指标

每分钟完成的事务数(tpmC)与完成每个tpmC的硬件价格price/tpmC

TPC-C用于去衡量业务吞吐量的性能指标是每分钟处理的订单数即tpmC

按照官方手册定义,是指系统执行其它四种事务如类型支付、订单状态、库存、派送的同时每分钟生成新增订单数据量。

所有交易的90%以上满足响应时间时,tpmC越大,系统性能越强。

在通过调整Terminal终端数量(并发线程数)观察tpmC和操作系统的IO、网卡流量、CPU负载、内存使用等指标综合判断压测系统的性能水平。

这篇关于数据库性能压测之TPC-C基准测试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/845659

相关文章

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

如何通过try-catch判断数据库唯一键字段是否重复

《如何通过try-catch判断数据库唯一键字段是否重复》在MyBatis+MySQL中,通过try-catch捕获唯一约束异常可避免重复数据查询,优点是减少数据库交互、提升并发安全,缺点是异常处理开... 目录1、原理2、怎么理解“异常走的是数据库错误路径,开销比普通逻辑分支稍高”?1. 普通逻辑分支 v

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1

从原理到实战解析Java Stream 的并行流性能优化

《从原理到实战解析JavaStream的并行流性能优化》本文给大家介绍JavaStream的并行流性能优化:从原理到实战的全攻略,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的... 目录一、并行流的核心原理与适用场景二、性能优化的核心策略1. 合理设置并行度:打破默认阈值2. 避免装箱

使用shardingsphere实现mysql数据库分片方式

《使用shardingsphere实现mysql数据库分片方式》本文介绍如何使用ShardingSphere-JDBC在SpringBoot中实现MySQL水平分库,涵盖分片策略、路由算法及零侵入配置... 目录一、ShardingSphere 简介1.1 对比1.2 核心概念1.3 Sharding-Sp

深度剖析SpringBoot日志性能提升的原因与解决

《深度剖析SpringBoot日志性能提升的原因与解决》日志记录本该是辅助工具,却为何成了性能瓶颈,SpringBoot如何用代码彻底破解日志导致的高延迟问题,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言第一章:日志性能陷阱的底层原理1.1 日志级别的“双刃剑”效应1.2 同步日志的“吞吐量杀手”

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

MySQL 数据库表操作完全指南:创建、读取、更新与删除实战

《MySQL数据库表操作完全指南:创建、读取、更新与删除实战》本文系统讲解MySQL表的增删查改(CURD)操作,涵盖创建、更新、查询、删除及插入查询结果,也是贯穿各类项目开发全流程的基础数据交互原... 目录mysql系列前言一、Create(创建)并插入数据1.1 单行数据 + 全列插入1.2 多行数据

MySQL 数据库表与查询操作实战案例

《MySQL数据库表与查询操作实战案例》本文将通过实际案例,详细介绍MySQL中数据库表的设计、数据插入以及常用的查询操作,帮助初学者快速上手,感兴趣的朋友跟随小编一起看看吧... 目录mysql 数据库表操作与查询实战案例项目一:产品相关数据库设计与创建一、数据库及表结构设计二、数据库与表的创建项目二:员

Java慢查询排查与性能调优完整实战指南

《Java慢查询排查与性能调优完整实战指南》Java调优是一个广泛的话题,它涵盖了代码优化、内存管理、并发处理等多个方面,:本文主要介绍Java慢查询排查与性能调优的相关资料,文中通过代码介绍的非... 目录1. 事故全景:从告警到定位1.1 事故时间线1.2 关键指标异常1.3 排查工具链2. 深度剖析: