BenchmarkSQL使用教程

1. TPC-C介绍

    Transaction Processing Performance Council (TPC) 事务处理性能委员会,是一家非盈利IT组织,他们的目的是定义数据库基准并且向产业界推广可验证的数据库性能测试。而TPC-C最后一个C代表的是压测模型的版本,在这之前还有TPC-A、TPC-B。A / B 两个版本模拟的是银行转账业务,相对业务模型比较简单。TPC-C自92年初发布,在过去20多年,不管是在业界还是学术界都是应用最为广泛的OLTP压测工具。

    TPC-C测试用到的模型是一个大型的商品批发销售公司,它拥有若干个分布在不同区域的商品仓库。当业务扩展的时候,公司将添加新的仓库。每个仓库负责为10个销售点供货,其中每个销售点为3000个客户提供服务,每个客户提交的订单中,平均每个订单有10项产品,所有订单中约1%的产品在其直接所属的仓库中没有存货,必须由其他区域的仓库来供货。同时,每个仓库都要维护公司销售的100000种商品的库存记录。

1.1 TPC-C表结构

    TPC-C测试系统数据库由9张表组成,它们的关系如下图所示,表框里的数字表示该表将要存放多少条记录,仓库数W的调整在测试中能够体现数据库所能够支持的数据规模的能力:

  •     Warehouse(仓库表,W表示仓数,能够体现数据库所能够支持的数据规模)
  •     District(区域表,W*10表每个仓为10个销售点供货)
  •     Customer(用户表,W*30k表示每个供货点为3000个客户提供服务)
  •     Stock(库存表,W*100k表示每个仓库维护10w种商品库存记录)
  •     Order(订单表)
  •     New-Order(新订单表)
  •     Item(商品表,表固定大小为10w)
  •     Order-Line(订单行)
  •     History(历史表)
1.2 TPC-C事务模型 

TPC-C需要处理的交易事务主要为以下几种:

  1. 新订单(New-Order,占比45%) :客户输入一笔新的订货交易;
  2. 支付操作(Payment,占比43%) :更新客户帐户余额以反映其支付状况;
  3. 发货(Delivery,占比4%) :发货(模拟批处理交易);
  4. 订单状态查询(Order-Status,占比4%) :查询客户最近交易的状态;
  5. 库存状态查询(Stock-Level,占比4%) :查询仓库库存状况,以便能够及时补货。

    TPC-C五种交易类型中StockLevel和OrderStatus这两种交易属于只读事务,NewOrder 、Payment、Delivery属于读写事务,这五种请求是互相独立运行的,在交易组合中读写操作占92%,只读操作占8%。TPC-C通过tpmC值(Transactions per Minute)来衡量系统最大有效吞吐量(MQTh,Max Qualified Throughput),其中Transactions以NewOrder Transaction为准,即最终衡量单位为每分钟处理的新订单数,这就说明了:如果一台机器有 1000 tpmc (Transactions per Minute),那么它实际上处理的交易(请求)为 1000/45% = 2222。 

2. BenchmarkSQL使用教程

    目前做TPC-C压测的开源工具很多,如mysql-tpcc、HammerDB、Benchmarksql等。这三种是在做TPC-C压测使用最多的,也是资料比较丰富的工具。由于我们在工作使用的数据库种类会比较多,mysql-tpcc只能用在MySQL或者兼容MySQL的数据库。HammerDB使用方便,图形化界面可测DB2、PG、Oracle、MySQL等但是对于NewSQL类数据库兼容不是很友好。因为BenchmarkSQL支持多种TPC模型,并且支持不同的数据库类型(如Oracle, PG, MySQL), 本篇文章介绍BenchmarkSQL的使用教程。

2.1 安装BenchmarSQL

下载安装包:https://sourceforge.net/projects/benchmarksql/?source=typ_redirect

上传到服务器解压:

unzip benchmarksql-5.0.zip

安装编译工具ant:

apt install ant

 使用ant编译BenchmarkSQL:

> cd benchmarksql-5.0
> ant
init:[mkdir] Created dir: /root/code/benchmark/benchmarksql-5.0/buildcompile:[javac] Compiling 11 source files to /root/code/benchmark/benchmarksql-5.0/builddist:[mkdir] Created dir: /root/code/benchmark/benchmarksql-5.0/dist[jar] Building jar: /root/code/benchmark/benchmarksql-5.0/dist/BenchmarkSQL-5.0.jarBUILD SUCCESSFUL
Total time: 1 second

修改配置文件:

cd run                   # 这里props.ora和props.pg是针对oracle和pg的配置文件
cp props.pg props.mysql  # 将pg的配置文件复制出来一份为mysql
vim props.mysql          # 修改mysql的连接信息
参数说明
dbtpcc指定数据库类型
drivercom.mysql.cj.jdbc.Driver数据库的驱动类名称
connjdbc:mysql://localhost:3306/tpcc连接字符串
userroot用户名
passwordxxxxx用户密码
warehouses1初始化加载数据时,需要创建多少仓库的数据。每仓库约80MB数据
loadWorkers8表示加载数据时,开启加载数据的进程数。
terminals1终端数量,指同时有多少终端并发执行,表示并发程度。
runTxnsPerTerminal0每分钟每个终端执行的事务数,0表示不限制
runMins10执行多少分钟。
limitTxnsPerMin0限制每分钟执行的事务总数。0表示不限制
terminalWarehouseFixedtrue用于指定终端和仓库的绑定模式,设置为true时可以运行4.x兼容模式,意思为每个终端都有一个固定的仓库。设置为false时可以均匀的使用数据库整体配置。

注意:runMins和runTxnsPerTerminal这两个参数指定了两种运行方式,前者是按照指定运行时间执行,以时间为标准;后者以指定每个终端的事务数为标准执行。两者不能同时生效,必须有一个设定为0。

2.2 创建数据库

登录MySQL数据库:

mysql -u root -p

创建数据库tpcc:

mysql> create database tpcc;
Query OK, 1 row affected (0.04 sec)mysql> use tpcc;
Database changedmysql> show tables;
Empty set (0.01 sec)
2.3 加载数据
cd run
./runDatabaseBuild.sh props.mysql

  创建并初始化表—共9张表(warehouse, Stock, Item, Order-Line, New-Order, History, District, Customer,Order),外加一个配置表。 同时会创建相应的索引、主外键参考。

2.4 开始压测
./runBenchmark.sh props.mysql

 执行结束后,取tpmC和tpmTOTAL作为测试指标。

2.5 删除数据库和数据
./runDatabaseDestroy.sh props.mysql

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

火山引擎发布数据飞轮 2.0,AI 重塑企业数据消费

12 月 18 日,在 2024 冬季火山引擎 FORCE 原动力大会上,火山引擎数智平台(VeDI)正式升级发布数据飞轮 2.0 模式。 延续去年 4 月发布的数据飞轮“以数据消费促资产建设,以数据消费助业务发展”的核心内涵,…

LLaMA-Factory 单卡3080*2 deepspeed zero3 微调Qwen2.5-7B-Instruct

环境安装 git clone https://gitcode.com/gh_mirrors/ll/LLaMA-Factory.git 下载模型 pip install modelscope modelscope download --model Qwen/Qwen2.5-7B-Instruct --local_dir /root/autodl-tmp/models/Qwen/Qwen2.5-7B-Instruct 微调 llamafactory-cli train \--st…

合并比对学习资料

目录 ContractComparison已开源: ContractComparison已开源: GitHub - UnstoppableCurry/ContractComparison: Comparison of General Chinese Contracts with OCR Pytorch

全速下载 50M/S,不限速下载就是香

近几年来虽说各大网盘层出不穷,各有乾坤,而这其中某些网盘对于网速限制非常严重,这也是很多小伙伴一直吐槽的点,并且某些网盘下载文件还需要安装客户端,并且每家的限速方式不同,有的限速取决于文件大小&…

回归预测 | MATLAB实现CNN-BiGRU-Attention卷积神经网络结合双向门控循环单元融合注意力机制多输入单输出回归预测

回归预测 | MATLAB实现CNN-BiGRU-Attention卷积神经网络结合双向门控循环单元融合注意力机制多输入单输出回归预测 目录 回归预测 | MATLAB实现CNN-BiGRU-Attention卷积神经网络结合双向门控循环单元融合注意力机制多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效…

RunCam WiFiLink连接手机图传测试

RunCam WiFiLink中文手册从这里下载 一、摄像头端 1.连接天线(易忘) 2.打开摄像头前面的盖子(易忘) 3.接上直流电源,红线为正,黑线为负 4.直流电源设置电压为14v,电流为3.15A, 通…

AI的进阶之路:从机器学习到深度学习的演变(二)

AI的进阶之路:从机器学习到深度学习的演变(一) 三、机器学习(ML):AI的核心驱动力 3.1 机器学习的核心原理 机器学习(Machine Learning, ML)突破了传统编程的局限,它不再…

WordPress 去除?v= 动态后缀

Wordpress url后面带有?vxxx的参数符,这种现象出现在安装了Woocommerce插件的店铺类型站点上,参数的作用是帮助系统根据用户的geographic定位计算 tax and shipping fee。 如何删除? 后台进入WooCommerce Settings ,将根据IP定…

Spring Cloud Gateway 源码

Spring Cloud Gateway 架构图 按照以上架构图,请求的处理流程: 1.客户端请求发送到网关 DispatcherHandler 2.网关通过 HandlerMapping 找到相应的 WebHandler 3.WebHandler生成FilterChain过滤器链执行所有的过滤器 4.返回Response结果 自动装配类Gat…

数据结构漫游记:初识vector

​ 嘿,各位技术潮人!好久不见甚是想念。生活就像一场奇妙冒险,而编程就是那把超酷的万能钥匙。此刻,阳光洒在键盘上,灵感在指尖跳跃,让我们抛开一切束缚,给平淡日子加点料,注入满满的…

go-zero负载均衡实现原理

1. 什么是负载均衡 关于微服务分布式及集群的概念即定义,在业界中这些往往会同时在同一个项目中,而集群在微服务中主要为服务的运行保障高可用。 比如:在当前的项目情况下,我们可能针对用户服务部署两台服务以保障用户服务的高可用…

【Rust自学】4.4. 引用与借用

4.4.0 写在正文之前 这一节的内容其实就相当于C的智能指针移动语义在编译器层面做了一些约束。Rust中引用的写法通过编译器的约束写成了C中最理想、最规范的指针写法。所以学过C的人对这一章肯定会非常熟悉。 喜欢的话别忘了点赞、收藏加关注哦(加关注即可阅读全文…

Apache Solr RCE(CVE-2017-12629)--vulhub

Apache Solr 远程命令执行漏洞(CVE-2017-12629) Apache Solr 是一个开源的搜索服务器。Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现。原理大致是文档通过Http利用XML加到一个搜索集合中。查询该集合也是通过 http收到一个…

OpenGL ES 01 渲染一个四边形

项目架构 着色器封装 vertex #version 300 es // 接收顶点数据 layout (location 0) in vec3 aPos; // 位置变量的属性位置值为0 layout (location 1) in vec4 aColors; // 位置变量的属性位置值为1 out vec4 vertexColor; // 为片段着色器指定一个颜色输出void main() {gl…

游戏渠道假量解决方案

某推广公司在推广过程中被查出“短期内点击量激增”“存在同一地址多次访问”“已注册用户重复注册”等数据作弊行为,法院判罚退还服务费200余万元,并赔偿违约金约350万元。 某公司为提升其游戏在应用商店榜单排名,委托某网络公司进行下载、注…

物联网:全面概述、架构、应用、仿真工具、挑战和未来方向

中文论文标题:物联网:全面概述、架构、应用、仿真工具、挑战和未来方向 英文论文标题:Internet of Things: a comprehensive overview, architectures, applications, simulation tools, challenges and future directions 作者信息&#x…

29、基于springboot的网上购物商城系统研发

本课题是根据用户的需要以及网络的优势建立的一个基于Spring Boot的网上购物商城系统,来满足用户网络购物的需求。 本网上购物商城系统应用Java技术,MYSQL数据库存储数据,基于Spring Boot框架开发。在网站的整个开发过程中,首先对…

Spring Boot--06--整合Swagger

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 Swagger一、简介官网:https://swagger.io/ Swagger 的优势 二、基本使用1. 导入相关依赖2. 编写配置文件2.1 配置基本信息2.2 配置接口信息2.3 配置分组…

写SQL太麻烦?免费搭建 Text2SQL 应用,智能写 SQL | OceanBase AI 实践

自OceanBase 4.3.3版本推出以来,向量检索的能力受到了很多客户的关注,也纷纷表达希望OB能拓展更多 多模数据库大模型 的AI应用实践。 在上篇文章 👉 OceanBase LLM,免费构建你的专属 AI 助手 ,我们介绍了如何去搭建一…

题海拾贝:力扣 86.分隔链表

Hello大家好&#xff01;很高兴我们又见面啦&#xff01;给生活添点passion&#xff0c;开始今天的编程之路&#xff01; 我的博客&#xff1a;<但凡. 我的专栏&#xff1a;《编程之路》、《数据结构与算法之美》、《题海拾贝》 欢迎点赞&#xff0c;关注&#xff01; 1、题…