mysql hammerdb,[料理佳餚] 用 HammerDB 來執行資料庫 TPC-C 效能量測

TPC-C 模擬的情境

TPC-C 模擬的情境是一個大型的商品批發商,擁有若干個倉庫,每個倉庫擁有 100000 件商品庫存、負責為 10 個地區供貨,每個地區服務 3000 名客戶,每名客戶平均一筆訂單有 10 項商品,所有訂單中約 1% 在其直屬的倉庫中沒有貨,需要從其他倉庫來調貨。

在模擬的情境之中,TPC-C 會測試 5 種典型的 OLTP 交易:

New-Order:User 新增一筆訂單

Payment:User 支付貨款,更新 User 的帳戶餘額。

Order-Status:User 查詢訂單最新的狀態

Delivery:出貨

Stock-Level:查詢庫存

安裝及開啟 HammerDB

HammerDB 我們可以在這裡下載到,選擇欲安裝的版本下載安裝之後,我們切換到安裝目錄底下 。

216b4e59e6a486f9a74165fa485d12b6.png

雙擊 hammerdb.bat 就可以開啟 HammerDB

hwL3hjz.png

確認 C:\Temp 資料夾存在

執行負載測試的過程中需要產生 Output Log,HammerDB 預設儲存 Output Log 的目錄就是 C:\Temp,如果 C:\Temp 不存在則會放在 C:\ 底下,但是這就麻煩了,因為要在 C:\ 建立檔案是需要給予系統管理員權限,所以我們還是確保 C:\Temp 存在比較容易一點。

選擇 SQL Server Benchmark

雙擊 SQL Server 節點

kfyW5fF.png

選擇 MSSQL Server、TPC-C。

onvKvT0.png

Schema Build - 建立資料庫

雙擊 Schema Build/Options

8f712a0facdeb961839bfd91f1051f9c.png

輸入 Build Options

09xJFSX.png

畫面上特別要關注三個參數:

SQL Server Database,資料庫存不存在無所謂,不存在會自動建,但是必須是空的。

Number of Warehouses,官方的 SQL Server Quick Start 建議我們可以先設 10 個倉庫,我乖乖聽話設為 10 個後,它 build 好久,所以我們先設 3 個倉庫就好了。

Virtual Users to Build Schema 可以設成與負責執行負載測試工作的機器核心數一樣的數字,比如說,我是在我的 Notebook 執行負載測試工作,我的 Notebook 核心數是 8,則 Virtual Users to Build Schema 可以設為 8,但是不能大於 Number of Warehouses,不過建議一開始不要設太多,會跑很久,我們先設個 2 就好了。

設定完後就雙擊 Build,畫面的右方就可以看到正在 Build Schema。

012d8c9ea1f66cbf0b91d70d3c0dab13.png

要等個好幾分鐘,完成後畫面上會出現 TPCC SCHEMA COMPLETE 的訊息,中間區塊的 Status 也都會是綠色勾勾,接著按下紅色警示燈號按鈕停止工作。

0416638a4d74675a6a7cf87263f87232.png

Driver Script - 產生負載測試的腳本

雙擊 Driver Script/Options

KKO0DaC.png

輸入 Driver Options

a7423266afb73f042707ad545e3d9c70.png

這裡有三個參數比較特別:

TPC-C Driver Script,如果我們選擇預設值 Standard Driver Script 那 HammerDB 會把每筆 Transaction 鉅細靡遺地記錄下來,訊息非常得多,我們初學是比較難去解讀這樣子的訊息,因此這邊我們選擇 Timed Test Driver Script,它會搭配下面兩個參數去產生測試結果。

Minutes of Rampup Time,這個時間是等待讓負載測試初始化的時間,預設值是 2 分鐘,這邊我們調整為 1 分鐘。

Minutes for Test Duration,這個時間是負載測試的取樣時間,預設值是 5 分鐘,這邊我們調整為 2 分鐘。

這三個參數值搭配起來用的意思就是說,先讓負載測試跑個 1 分鐘之後,HammerDB 會監測接下來 2 分鐘的負載測試執行過程,以取得到的成果去計算平均值,有點類似驗尿取中段的概念。

所以整個負載測試的行程會在 3 分鐘之後結束,也因為這樣,我們必須確保我們的負載測試會執行超過 3 分鐘,這樣取樣的成果才會準確。

設定完後,雙擊 Load 產生負載測試的腳本。

9ywBGB0.png

Virtual User - 設定虛擬使用者

雙擊 Virtual User/Options

pNz75Nq.png

我們就照著下面畫面設定

Ed1kMll.png

這裡其實我想要設定的 Virtual Users 個數其實是 2,那為何設定值是 3 呢?那是因為我們選擇 Timed Test Driver Script 之後,會需要多一個 Virtual User 來監測負載測試的過程,所以設定值會是 N+1。

最後雙擊 Run 就會開始執行負載測試,畫面的右方會顯示執行進度。

6R2Xa6N.png

查看負載測試結果

我們到 C:\Temp 底下,找到 hammerdb*.log 的檔案,打開來看它會長得像下面這個樣子。

e1efa427e7909292611e7ba32c6446d0.png

上面這個 TEST RESULT 是在說「系統完成 13890 NOPM(New Orders Per Minute)的同時, SQL Server TPM 達到了 63568 個。」,TPM 這個數據跟 tpmC 是不一樣的,它無法拿來當做不同資料庫之間的效能比較依據,但是 NOPM 可以,因此我們應該關注的是 NOPM 這個數據。

HammerDB 不只有可以對 SQL Server 做效能測量,還可以對 MySQL、Oracle、PostgreSQL、Redis...etc,如果手邊沒有比較好的資料庫效能量測工具的朋友,Open Source 的 HammerDB 可以考慮一下。

參考資源

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

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

相关文章

使用Linux进行c或c++编程

使用Linux进行C或c语言编程 1.创建名为 HelloWorld 的 c 或者 c 文件 vim HelloWorld.c vim Helloworld.cpp2.然后就进入文本编辑界面 输入i,进入编辑模式。写代码。按esc键,进入命令模式,输入:wq保存并退出文本编辑器。然后可以看见对应位…

如何用php写表单中的年月日,php写的日历程序 - adamboy的个人页面 - OSCHINA - 中文开源技术交流社区...

$weekArr array(Sun,Mon,Tue,Wed,Thu,Fri,Sat);//获取空格://echo date("D",strtotime("2012-02-07"));function getSpace($month,$year){global $weekArr;if(!$year){$year date("Y");}$firstDay date("D",strtotime($…

Java反射 field

Java反射 field 获取字节码文件对象 Class c Class.forName(“fieldtest.Student”); 通过无参构造方法创建对象obj Constructor con c.getConstructor(); Object obj con.newInstance(); 通过成员变量名,获取单个的成员变量 Field nameField c.getField("name"…

mysql5.7循环,python3.4用循环往mysql5.7中写数据并输出的实现方法

python3.4用循环往mysql5.7中写数据并输出的实现方法来源:中文源码网 浏览: 次 日期:2018年9月2日python3.4用循环往mysql5.7中写数据并输出的实现方法 如下所示:#!/usr/bin/env python# -*- coding:utf-8 -*-# __author__ …

java反射 Method

java反射 Method 获取字节码文件对象 Class c Class.forName("fieldtest.Student");通过无参构造方法创建对象obj Constructor con c.getConstructor(); Object obj con.newInstance();Method m1 c.getMethod(“study”);获取study方法 m1.invoke(obj);使用obj对…

axure 鼠标变成手,Axure教程|鼠标移入移出自动显示与隐藏三级菜单

前几天因工作需要做一个鼠标移入显示隐藏菜单,鼠标移出自动隐藏菜单,做的时候觉得没有什么问题,做完后预览就发现一个很严重的问题,就是鼠标移出一级菜单向二级菜单时二级菜单不显示,或者二级菜单显示三级菜单不显示。…

java与平台无关的原因

Java字节码 Java源程序(.java)要先编译成与平台无关的字节码文件(.class),然后字节码文件再解释成机器码运行。解释是通过Java虚拟机来执行的。 java要运行要经过如下步骤 ① Java源文件—->编译器(工具)—->…

php websocket应用实例,php使用websocket示例详解

下面我画了一个图演示 client 和 server 之间建立 websocket 连接时握手部分,这个部分在 node 中可以十分轻松的完成,因为 node 提供的 net 模块已经对 socket 套接字做了封装处理,开发者使用的时候只需要考虑数据的交互而不用处理连接的建立…

Java集合 Collection

Jdk提供了一些特殊的类,用来保存数量不确定的对象,存储任意类型对象,长度可变。这些类统称为集合。 集合类位于Java.util包中,按存储结构分为Collection单列集合和Map双列集合。 Collection是单列集合的根接口,有两个…

java basic data type,java基本数据类型--Basic Datatypes

Variables are nothing but reserved memory locations to store values. This means that when you create a variable you reserve some space in the memory.---说的好有道理Based on the data type of a variable, the operating system allocates memory and decides what…

Java final修饰符的作用,Java中的final修饰符

1.什么时候可以选择final修饰符如果想让一个类不被其他类继承,不允许在有子类,这时候就要考虑用到final来修饰。2.用final修饰的类首先大家要明白,用final修饰的类是不能被继承的,下面来看一个错误案例。eg:final clas…

Java基础 HashMap的添加 修改 遍历 Map.Entry Map.entrySet()的使用及实例

Java Map Map中不能包含相同的键,每个键只能映射一个值。 HashMap:并不能保证它的元素的顺序,元素加入散列映射的顺序并不一定是它们被迭代方法读出的顺序。 Map.Entry Map.Entry 是Map中的一个接口,他的用途是表示一个映射项…

adminer.php下载,Adminer.php

Adminer.php就是原来的phpMinAdmin,这是用PHP编写的数据库管理工具,支持mysql、mariadb、postgresql、sqlite、MS SQL、Oracle等多种数据库,虽然是一个源码,但是可以使用用户们和密码直接连接到数据库的服务器,既可以对…

windows下如何在命令行里切换到任意目录

切换到C盘中的某个文件夹,比如AppData,可以执行命令cd AppData; 但如果想切换到D盘,输入cd d:是不行的; 如果我们要切换盘符的目录,正确的用法是在cd 和路径中间 增加一个“/d”,如cd /d d: 也可以不用cd指令&#x…

Java基础 系统注解 @Override @Deprecated @SuppressWarnings 使用的方法及原因

Java 系统注解 为什么用?: 好处:使用系统定义的注解,可以在编译时对程序进行检查。 注解用在包、类、字段、方法、局部变量、方法参数等的前面,对这些元素进行说明和注释。 Override Override用来修饰一个方法&am…

java二维数组排序先行后列,数组知识点归纳

◆◆◆一、理解一维数组的定义和应用,了解二维数组和控件数组;1、数组的概念:数组并不是一种数据类型,而是一组相同类型数据的集合。用一个统一的名字(数组名)代表逻辑上相关的一批数据,每个元素用下标变量来区分&…

Java 使用反射处理注解

Java 使用反射处理注解 自定义注解的格式: [public|final] interface 注解名//interface 表明:这是一个自定义注解 {注解元素//注解元素 是无参数的方法 }// 注解元素的格式: 数据类型 注解元素名() [default 默认值]例子: //自…

php面试宝典1000题,【PHP面试宝典1000题】HTTP中的请求头(深圳小美网络科技)

(1)通作一新求抖直微圈用信息头即址工框按都不他移据流。果原箭近第作架量是能用于请求消息中,也能用于响应信息中,但与被传输的实体内容没有关系的信息头,如Data,Pra分浏代刚的学过互解久点维数数请曾房总题屏断果如以气。泉公一实切式时带近享览码开时会进。,后,护…

java基础 通过继承Thread类和实现Runnable接口创建线程

java 创建线程 Java中,线程也是一种对象,但不是任何对象都可以成为线程。 只有实现了Runnable接口或继承了Thread类的对象才能成为线程。 继承Thread类 //格式: class 类名 extends Thread//从Thread类扩展出子类 {属性方法修饰符 run(){…

php求链表中位数,先给伸手党的php链表遍历求和

问题给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字…