【达梦数据库】数据库测试-程序员宅基地

技术标签: database  压力测试  测试工具  数据库  centos  


前言

数据库测试是依据数据库设计规范对软件系统的数据库结构、数据表及其之间的数据调用关系进行的测试。本文主要介绍了两项常用的测试基准 TPC-C 和 TPC-H ,并通过达梦数据库 DM8 分别进行了数据库测试。


1 数据库测试

1.1 测试流程

制定测试大纲,编写测试用例,测试执行,形成测试报告。

1.2 测试内容

功能、性能、可靠性、安全性、易用性、维护性、可扩展性、兼容性。

1.3 测试标准

针对数据库不同的使用场景 TPC 组织发布了多项测试标准。其中被业界广泛接受和使用的有 TPC-C 、TPC-H 和 TPC-DS。

TPC-C、TPC-H 和 TPC-DS 三者最大的一个区别是,TPC-C 是针对 OLTP 数据库进行性能测试,而 TPC-H 和 TPC-DS 是针对 OLAP 数据库进行测试的。本文主要讲解和实践 TPC-C 和 TPC-H 基准测试。


2 TPC-C基准测试

2.1 概念介绍

TPC(transaction processing performance council)被称为事务处理性能委员会,负责定义诸如 TPC-C、TPC-H & TPC-R 和 TPC-W 基准测试之类的事务处理与数据库性能基准测试,并依据这些基准测试项目发布客观性能数据。

TPC-C 是衡量联机事务处理(OLTP,Online Transaction Processing)系统的工业标准,是行业中公认的权威和最为复杂的在线事务处理基准测试。它通过模拟仓库和订单管理系统,测试广泛的数据库功能,包括查询、更新和 mini-batch 事务(队列式小批量事务)。TPC-C基准测试针对一种模拟订单录入与销售环境测量每分钟商业事务(tpmC)吞吐量。

2.2 模型介绍

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

在这里插入图片描述

表名 意义 数量级
C_ITEM 商品种类:固定值 100K
C_WAREHOUSE 仓库数 W
C_STOCK 库存数=仓库数*商品种类 W*100K
C_DISTRICT 分区数=仓库数*10 W*10
C_CUSTOMER 客户数=分区数*3000 W*30K
C_ORDER 订单数=客户数 W*30K+
C_HISTORY 历史订单数=客户数 W*30K+
C_NEW_ORDER 新订单数=订单数*900/3000 W*9K+
C_ORDER_LINE 订单行数=订单数100.99… W*300K+
事务类型 混合的最小百分比 最小按键时间 第90个百分比响应时间约束 最小平均时间分布思考
新订单 n/a 18 秒 5 秒 12 秒
支付 43 3 秒 5 秒 12 秒
订单状态 4 2 秒 5 秒 10 秒
发货 4 2 秒 5 秒 5 秒
库存级别 4 2 秒 20 秒 5 秒
  • TPC-C 有 9 张表和 5 种事务。
  • TPC-C 最大的有效的吞吐量(MQTh)的度量是每分钟处理的新订单数量,单位是 tpmC 。
  • MQTh 正常的范围为(active-warehouse*terminals-per-warehouse)的0.9倍至1.2倍之间。
  • 为了得到较高的 MQTh ,可以根据实际测试结果预估,来调整 Active-warehouse 再次测试。

2.3 测试流程

(1) 初始化数据库
(2) 建表、装载数据
(3) 扩库及日志和创建索引
(4) 数据冷备份
(5) 性能调优
(6) 配置TPCC工具进行测试

2.4 工具介绍

BenchmarkSQL 是一款经典的开源数据库测试工具,其包含 TPCC 测试脚本,应用范围广泛。支持达梦数据库、MySQL、Oracle、EnterpriseDB、PostgreSQL 以及 SQL Server 等数据库的性能压力测试。

BenchmarkSQL 是基于 Java 语言开发的,可以跨平台运行。在安装压测工具之前,必须先安装 JDK(要求 JDK1.7 及以上)并且配置 JAVA 环境变量。

BenchmarkSQL 是非标准TPC-C模型,纯压力测试

2.5 操作步骤

(1) 执行SQL工具建表

./runSQL.sh props.pg sqlTableCreates

(2) 执行数据装载工具装载数据

./runLoader.sh props.pg numWarehouses 100

(3) 执行测试工具

./runBenchmark.sh props.pg

(4) 为提高性能,通常采用后台运行的方式

nohup ./runBenchmark.sh props.pg > /dev/null 2>&1 &

(5) 测试报告打印在run/log文件下

Benchmarksql.log

2.6 测试结果的验证方式

(1) TPCC基准测试一致性验证语句

(Select w_id, w_ytd from warehouse) except (select d_w_id, sum(d_ytd) from district group by d_w_id); 
(Select d_w_id, d_id, D_NEXT_O_ID - 1 from district) except (select o_w_id, o_d_id, max(o_id) from oorder group by o_w_id, o_d_id);
(Select d_w_id, d_id, D_NEXT_O_ID - 1 from district) except (select no_w_id, no_d_id, max(no_o_id) from new_order group by no_w_id, no_d_id);
select * from (select (count(no_o_id)-(max(no_o_id)-min(no_o_id)+1)) as diff from new_order group by no_w_id, no_d_id) where diff != 0;
(select o_w_id, o_d_id, sum(o_ol_cnt) from oorder  group by o_w_id, o_d_id) except (select ol_w_id, ol_d_id, count(ol_o_id) from order_line group by ol_w_id, ol_d_id);
(select d_w_id, sum(d_ytd) from district group by d_w_id) except (Select w_id, w_ytd from warehouse);

连接到数据库做以上查询,如果结果全为0行,则说明tpcc库是一致的,否则说明此库在运行过程中数据出现混乱。

(2) 验证 bmsql_history 表新增的记录数
transaction count * 43% 约等于 bmsql_history 表增加的数据量,不能存在数量级的偏差。


3 TPC-H基准测试

3.1 概念介绍

TPC-H 是一个决策支持的基准,它由一系列面向商务应用的查询和并行数据修改组成。基准里选择的查询和组成数据库的数据在商业上都具有广泛的代表性并且易于实现。主要针对OLAP数据库进行测试的。
TPC-H 数据库由八个单独的表(基本表)组成和22个查询语句。
TPCH 标准包含执行功能测试和吞吐率测试。

3.2 模型介绍

TPC-H是一款面向商品零售业的决策支持系统测试基准,它定义了 8 张表,22 个查询,遵循 SQL92;
请添加图片描述

在这里插入图片描述

表名 行数
SUPPLIER SF*10000
PART SF*200000
PARTSUPP SF*800000
CUSTOMER SF*150000
ORDERS SF*1500000
LINEITEM SF*6000000
NATION 25
REGION 5

3.3 测试流程

(1)使用 dbgen 工具生成数据
(2)使用 dmfldr 工具 加载数据
(3)通过 Q22 查询验证


4 TPCC测试实战

利用 TPCC 测试工具 BENCHMARKSQL,测试单机 10 warehouse 的性能。

环境准备:

  • 操作系统:CentOS 7
  • 服务器配置:2核 4G
  • 磁盘容量:20G
  • 数据库版本:dm8_20220304_x86_rh6_64
  • BenchmarkSQL 工具版本:benchmarksql-5.0rc2-westone-v1.2
  • JAVA 版本:JDK 1.8

具体步骤:

(1) 切换为 root,在 opt 目录下创建 tpcc 文件夹,移动安装包到 /opt/tpcc 并解压,添加 dmdba:dinstall 权限,得到如下文件。

在这里插入图片描述

(2) 进入 run 文件夹,查看 props.dm 文件。

在这里插入图片描述

(3) 修改配置。

在这里插入图片描述

需要关注的参数:

  • user:工具写死了必须用benchmarksql模式,所以user必须为benchmarksql用户。
  • warehouses:被测仓库数。
  • loadworkers:数据装载并发数。
  • terminals:数据库连接并发数。
  • runMins:测试时间(分钟)。

(4) 在DM管理工具里创建表空间、用户和表。

在这里插入图片描述

(5) 查看表中数据量,均为0。

在这里插入图片描述

(6) 执行./runLoader.sh 装载数据。

在这里插入图片描述
在这里插入图片描述

偶尔因为网络原因导致加载仓库顺序有变化,属于正常现象。

(7) 查看当前数据量。

在这里插入图片描述

(8) 创建序列。

在这里插入图片描述

(9) 执行测试工具。

在这里插入图片描述
在这里插入图片描述

225.23÷496.42≈45.37% ,与 43%相比偏高了。

结果参数说明:

  • Running Average tpmTOTAL:每分钟平均执行事务数(所有事务)
  • Memory Usage:客户端内存使用情况
  • Measured tpmC (NewOrders) :每分钟执行的事务数(只统计 NewOrders 事务)
  • Transaction Count:执行的交易总数量

(10) 执行TPCC基准测试一致性验证语句,结果都为空。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

(11) 验证 bmsql_history 表新增的记录数。

在这里插入图片描述

transaction count * 43% 约等于 bmsql_history 表增加的数据量。


5 TPCH测试实战

利用TPCH测试工具简单进行1G规模测试 。

具体步骤:

(1) 使用dbgen生成数据。

在这里插入图片描述

(2) 在数据库中创建表结构。

在这里插入图片描述

(3) 利用 degen 工具模拟生成1G的数据。会在当前目录下生成数据源文件,用来之后 dmfldr 导入的元数据。

在这里插入图片描述

在这里插入图片描述

(4) 返回 linux 目录,修改每个表的 dmfldr 控制文件。

在这里插入图片描述

主要是修改两个路径,如下图所示。

在这里插入图片描述

(5) 使用 dmfldr 工具加载数据。( dmfldr 的路径在 /dm/dmdba/dmdbms/bin )
依次执行:

./dmfldr userid=SYSDBA/SYSDBA:5236 control=\'/opt/tpch/linux/customer.ctrl\'
./dmfldr userid=SYSDBA/SYSDBA:5236 control=\'/opt/tpch/linux/lineitem.ctrl\'
./dmfldr userid=SYSDBA/SYSDBA:5236 control=\'/opt/tpch/linux/nation.ctrl\'
./dmfldr userid=SYSDBA/SYSDBA:5236 control=\'/opt/tpch/linux/orders.ctrl\'
./dmfldr userid=SYSDBA/SYSDBA:5236 control=\'/opt/tpch/linux/part.ctrl\'
./dmfldr userid=SYSDBA/SYSDBA:5236 control=\'/opt/tpch/linux/partsupp.ctrl\'
./dmfldr userid=SYSDBA/SYSDBA:5236 control=\'/opt/tpch/linux/region.ctrl\'
./dmfldr userid=SYSDBA/SYSDBA:5236 control=\'/opt/tpch/linux/supplier.ctrl\'

在这里插入图片描述
在这里插入图片描述

(此处只列举了一个 customer 的导入进程。)

(6) 更新统计信息。

在这里插入图片描述

(7) 通过 Q22 查询验证。(此处为Q20)

在这里插入图片描述


总结

本文介绍了数据库测试中的 TPCC 和 TPCH 两项测试基准,并完成实践 DM8 数据库测试。

如果文中有误,欢迎指出,大家共同交流进步!

更多达梦技术资讯,请访问达梦技术社区:
达梦数据库 - 新一代大型通用关系型数据库 | 达梦云适配中心
https://eco.dameng.com/

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44559140/article/details/125752654

智能推荐

攻防世界_难度8_happy_puzzle_攻防世界困难模式攻略图文-程序员宅基地

文章浏览阅读645次。这个肯定是末尾的IDAT了,因为IDAT必须要满了才会开始一下个IDAT,这个明显就是末尾的IDAT了。,对应下面的create_head()代码。,对应下面的create_tail()代码。不要考虑爆破,我已经试了一下,太多情况了。题目来源:UNCTF。_攻防世界困难模式攻略图文

达梦数据库的导出(备份)、导入_达梦数据库导入导出-程序员宅基地

文章浏览阅读2.9k次,点赞3次,收藏10次。偶尔会用到,记录、分享。1. 数据库导出1.1 切换到dmdba用户su - dmdba1.2 进入达梦数据库安装路径的bin目录,执行导库操作  导出语句:./dexp cwy_init/[email protected]:5236 file=cwy_init.dmp log=cwy_init_exp.log 注释:   cwy_init/init_123..._达梦数据库导入导出

js引入kindeditor富文本编辑器的使用_kindeditor.js-程序员宅基地

文章浏览阅读1.9k次。1. 在官网上下载KindEditor文件,可以删掉不需要要到的jsp,asp,asp.net和php文件夹。接着把文件夹放到项目文件目录下。2. 修改html文件,在页面引入js文件:<script type="text/javascript" src="./kindeditor/kindeditor-all.js"></script><script type="text/javascript" src="./kindeditor/lang/zh-CN.js"_kindeditor.js

STM32学习过程记录11——基于STM32G431CBU6硬件SPI+DMA的高效WS2812B控制方法-程序员宅基地

文章浏览阅读2.3k次,点赞6次,收藏14次。SPI的详情简介不必赘述。假设我们通过SPI发送0xAA,我们的数据线就会变为10101010,通过修改不同的内容,即可修改SPI中0和1的持续时间。比如0xF0即为前半周期为高电平,后半周期为低电平的状态。在SPI的通信模式中,CPHA配置会影响该实验,下图展示了不同采样位置的SPI时序图[1]。CPOL = 0,CPHA = 1:CLK空闲状态 = 低电平,数据在下降沿采样,并在上升沿移出CPOL = 0,CPHA = 0:CLK空闲状态 = 低电平,数据在上升沿采样,并在下降沿移出。_stm32g431cbu6

计算机网络-数据链路层_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏8次。数据链路层习题自测问题1.数据链路(即逻辑链路)与链路(即物理链路)有何区别?“电路接通了”与”数据链路接通了”的区别何在?2.数据链路层中的链路控制包括哪些功能?试讨论数据链路层做成可靠的链路层有哪些优点和缺点。3.网络适配器的作用是什么?网络适配器工作在哪一层?4.数据链路层的三个基本问题(帧定界、透明传输和差错检测)为什么都必须加以解决?5.如果在数据链路层不进行帧定界,会发生什么问题?6.PPP协议的主要特点是什么?为什么PPP不使用帧的编号?PPP适用于什么情况?为什么PPP协议不_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输

软件测试工程师移民加拿大_无证移民,未受过软件工程师的教育(第1部分)-程序员宅基地

文章浏览阅读587次。软件测试工程师移民加拿大 无证移民,未受过软件工程师的教育(第1部分) (Undocumented Immigrant With No Education to Software Engineer(Part 1))Before I start, I want you to please bear with me on the way I write, I have very little gen...

随便推点

Thinkpad X250 secure boot failed 启动失败问题解决_安装完系统提示secureboot failure-程序员宅基地

文章浏览阅读304次。Thinkpad X250笔记本电脑,装的是FreeBSD,进入BIOS修改虚拟化配置(其后可能是误设置了安全开机),保存退出后系统无法启动,显示:secure boot failed ,把自己惊出一身冷汗,因为这台笔记本刚好还没开始做备份.....根据错误提示,到bios里面去找相关配置,在Security里面找到了Secure Boot选项,发现果然被设置为Enabled,将其修改为Disabled ,再开机,终于正常启动了。_安装完系统提示secureboot failure

C++如何做字符串分割(5种方法)_c++ 字符串分割-程序员宅基地

文章浏览阅读10w+次,点赞93次,收藏352次。1、用strtok函数进行字符串分割原型: char *strtok(char *str, const char *delim);功能:分解字符串为一组字符串。参数说明:str为要分解的字符串,delim为分隔符字符串。返回值:从str开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。其它:strtok函数线程不安全,可以使用strtok_r替代。示例://借助strtok实现split#include <string.h>#include <stdio.h&_c++ 字符串分割

2013第四届蓝桥杯 C/C++本科A组 真题答案解析_2013年第四届c a组蓝桥杯省赛真题解答-程序员宅基地

文章浏览阅读2.3k次。1 .高斯日记 大数学家高斯有个好习惯:无论如何都要记日记。他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?高斯出生于:1777年4月30日。在高斯发现的一个重要定理的日记_2013年第四届c a组蓝桥杯省赛真题解答

基于供需算法优化的核极限学习机(KELM)分类算法-程序员宅基地

文章浏览阅读851次,点赞17次,收藏22次。摘要:本文利用供需算法对核极限学习机(KELM)进行优化,并用于分类。

metasploitable2渗透测试_metasploitable2怎么进入-程序员宅基地

文章浏览阅读1.1k次。一、系统弱密码登录1、在kali上执行命令行telnet 192.168.26.1292、Login和password都输入msfadmin3、登录成功,进入系统4、测试如下:二、MySQL弱密码登录:1、在kali上执行mysql –h 192.168.26.129 –u root2、登录成功,进入MySQL系统3、测试效果:三、PostgreSQL弱密码登录1、在Kali上执行psql -h 192.168.26.129 –U post..._metasploitable2怎么进入

Python学习之路:从入门到精通的指南_python人工智能开发从入门到精通pdf-程序员宅基地

文章浏览阅读257次。本文将为初学者提供Python学习的详细指南,从Python的历史、基础语法和数据类型到面向对象编程、模块和库的使用。通过本文,您将能够掌握Python编程的核心概念,为今后的编程学习和实践打下坚实基础。_python人工智能开发从入门到精通pdf

推荐文章

热门文章

相关标签