数据库性能压测之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负载、内存使用等指标综合判断压测系统的性能水平。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/487309.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

力扣438. 找到字符串中所有字母异位词

Problem: 438. 找到字符串中所有字母异位词 文章目录 题目描述思路及解法复杂度Code 题目描述 思路及解法 1.编写辅助函数bool same(vector& need, vector& matched): 1.1 以need为标准,循环对比need和matched的每一个位置的元素值是否相等 2.获…

NAT---网络地址转换技术

Network Address Translation 1、起源:ip地址不够用 2、作用:让私网地址映射成公网地址,进而访问网络。 3、私网Ip地址的范围: A类:10.0.0.0-10.255.255.255 B类:172.16.0.0-172.31.255.255 C类&…

多线程合并练习题,线程安全(售票任务引入)--学习JavaEE的day30

day30 练习(day29) 注意代码注释,里面涉及代码实现遇到问题及解决方案,由于理解方便没有单独出来 1.计算任务 1.计算任务,一个包含了2万个整数的数组,分拆了多个线程来进行并行计算,最后汇总出…

Open CASCADE 用户指南:可视化

文章目录 介绍基本概念呈现(Presentation)Presentation 的结构Presentation 包(package)基本示例:如何显示 3D 对象 选择(Selection)术语和概念算法包和类(Packages and classes)使用示例 应用交互服务(AIS)介绍交互对象呈现(Presentations)隐…

【C语言】【Leetcode】88. 合并两个有序数组

文章目录 一、题目二、思路再思考 一、题目 链接: link 二、思路 这题属于简单题,比较粗暴的做法就是直接比较两个数组,先把第二个数组加到第一个的后面,如何冒泡排序,这种方法简单粗暴但有效,可是不适用于这题&…

Vue3使用v-if指令进行条件渲染

Vue3使用v-if指令进行条件渲染 条件渲染是根据条件的真假来有条件地渲染元素。在Vue.js 3.x中,常见的条件渲染包括使用v-if指令和v-show指令。本文讲解使用v-if指令进行条件渲染。 2.3.1 v-if/v-else-if/v-else 在Vue中使用v-if、v-else-if和v-else指令实现条件…

数据结构·二叉树(1)

目录 1 树的概念及结构 1.1 树的结构 1.2 树的概念 1.3树的表示 2 二叉树的概念及结构 2.1二叉树的概念 2.2 特殊的二叉树 2.3 二叉树的存储结构 1 树的概念及结构 1.1 树的结构 前面所学到的顺序表链表等,都是线性的数据结构,今天介绍的树&am…

第九届蓝桥杯大赛个人赛省赛(软件类)真题C 语言 A 组-第几个幸运数字

幸运数字是可以被3,5,7任一整除的数字&#xff0c;列举小明号码内的所有可能组合并计数。注意别忘了把1占的一位减去。 #include<stdio.h> typedef long long ll; int main(){long long ans 0, n 59084709587505LL;for(ll i 1; i < n; i * 3){//计算小于等于n的数…

代码随想录训练营Day32:● 122.买卖股票的最佳时机II ● 55. 跳跃游戏 ● 45.跳跃游戏II

122.买卖股票的最佳时机II 题目链接 https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/description/ 题目描述 思路 看完视频讲解之后豁然开朗啊简直了&#xff01;&#xff01;&#xff01; 统计后一天减去前一天&#xff0c;差值为正数的&#xff0c;再…

一篇文章带你搞定接单的多种渠道,赶紧码住!!!

相信大家也看到了不少人通过网络接单实现年入30W&#xff0c;彻底财富自由&#xff01;咱看了&#xff0c;真的很难不心痒痒&#xff0c;想加入其中&#xff0c;大干一场&#xff01;毕竟搞钱嘛&#xff01;才是王道。但是呢&#xff0c;也有很多人心向往之&#xff0c;奈何不知…

C++剑指offer与高频面试题源码解答与分析

这是博主在当初秋招刷题时候记录的剑指offer第二版以及一些高频题的C源码和解法分析&#xff0c;可以说把这上面的题练好了面试不虚&#xff0c;最后也顺利帮助我拿下baidu ali meituan等多家大厂offer。整篇文章写了大概5W个字&#xff0c;也是积累了很长一段时间的作品&#…

MYSQL通过substr函数与instr函数截取字符串

mysql通过substr函数与instr函数截取字符串 1.从字段左边开始第三位&#xff0c;截取到结束2.截取字段前三位3.截取字段后三位4.从字段右边开始第三位&#xff0c;往后截取一位5.从字段小数点的位置开始&#xff0c;向后截取两位&#xff08;使用了instr&#xff08;&#xff0…

leetcode刷题日记-外观数组

题目描述 解题思路 初始化字符串 init 为 “1”&#xff0c;作为外观数列的第一项。 通过循环迭代生成外观数列的下一项&#xff0c;循环次数为 n-1&#xff0c;因为已经初始化了第一项。 在每次迭代中&#xff0c;通过两个指针 pos 和 start 来遍历当前项 init&#xff0c;po…

22.保护性暂停扩展(一对一)

如果需要多个类之间使用GuardedObject对象&#xff0c;作为参数传递不是很方便&#xff0c;因此设计一个解耦的中间类&#xff0c;这样不仅能够解耦结果的等待者和结果生产者&#xff0c;还能够支持多个任务的管理。 Futures就好比居民楼一层的信箱&#xff0c;每个信箱有房间的…

大数据面试题 —— Flume

目录 介绍 FlumeFlume 架构请说一下你提到的几种 source 的不同点Flume 传输数据时如何保证数据一致性TailDir 为什么可以断点重传说下Flume事务机制Sink 消费能力弱&#xff0c;Channel 会不会丢失数据数千个Flume要怎么统一配置&#xff0c;修改就分发吗Flume一个节点宕机了怎…

【科研基础】分布式信源编码与中继通信

[1] Bian, Chenghong, et al. “Deep joint source-channel coding over cooperative relay networks.” arXiv preprint arXiv:2211.06705 (2022). [2] Bian, Chenghong, et al. “Process-and-Forward: Deep Joint Source-Channel Coding Over Cooperative Relay Networks.”…

还在用传统知识库?AI知识库才是企业的最优选择

在数字化和信息化日趋严重的时代&#xff0c;企业不仅要处理海量的数据&#xff0c;同时还要有效地管理和利用它们。这就使得知识库&#xff0c;作为一种集中存储、管理和共享知识资源的工具&#xff0c;被越来越多的企业所重视。然而&#xff0c;随着技术的快速迭代&#xff0…

RabbitMQ 安装保姆级教程

目录 1.MQ引言 1.1 什么是MQ 1.2 MQ有哪些 1.3 不同MQ特点 2.RabbitMQ 的引言 2.1 RabbitMQ 2.2 RabbitMQ 的安装 2.2.1 下载 2.2.2 下载的安装包 2.2.3 安装步骤 3. RabiitMQ 配置 3.1RabbitMQ 管理命令行 3.2 web管理界面介绍 3.2.1 overview概览 3.2.2 Admin用…

蓝桥杯物联网遇见的重大BUG及其产生原因和解决方法

BUG列表 1、ADC的RP2显示一直为0&#xff1a;2、LORX_Tx发送数据乱码&#xff1a;3、strcmp比较char a[2] {1, 2}与“12”字符串是否相等板子会死机&#xff1a;4、LORA_Tx和LORA_Rx放一起会接收不到数据&#xff1a;5、RTC获取到静止时间&#xff1a;6、ADC获取RP1和RP2模拟量…