崖山从0到1系列02-如何使用TPCC测试yashandb性能

第2章 如何使用TPCC测试yashandb性能

TPC-C测试工具下载
请自行于BenchmarkSQL官网下载BenchmarkSQL5 (opens new window)。
请确保服务器中已有JDK1.8及以上版本的JDK。
#TPC-C测试准备
对YashanDB进行TPC-C测试前需对Benchmark SQL5进行配置,使之支持YashanDB数据库:

#修改jTPCC.java文件
在操作系统终端执行如下命令并输入密码,切换至root用户。

$mkdir  tpc-c
$ cd tpc-c
rz
unzip benchmarksql-5.0.zip
执行如下命令,在vi编辑器中打开/home/yashan/tpc-c/benchmarksql-5.0/src/client/jTPCC.java文件,请注意区分大小写:
$ vi benchmarksql-5.0/src/client/jTPCC.java

在文件中查找下面内容:
        if (iDB.equals("firebird"))
            dbType = DB_FIREBIRD;
        else if (iDB.equals("oracle"))
            dbType = DB_ORACLE;
        else if (iDB.equals("postgres"))
            dbType = DB_POSTGRES;
        else
        {
            log.error("unknown database type '" + iDB + "'");
            return;
        }
按i进入编辑模式,在dbType = DB_POSTGRES后新增如下内容:
        else if (iDB.equals("yashandb"))
            dbType = DB_YASHANDB;
修改完成后,按Esc,输入:wq保存并退出文件编辑。

#修改jTPCCConfig.java文件
执行如下命令,在vi编辑器中打开jTPCCConfig.java文件:
$ vi benchmarksql-5.0/src/client/jTPCCConfig.java
在文件中查找下面内容:
    public final static int     DB_UNKNOWN = 0,
                                DB_FIREBIRD = 1,
                                DB_ORACLE = 2,
                                DB_POSTGRES = 3;


按i进入编辑模式,将该部分内容修改为如下内容:
    public final static int     DB_UNKNOWN = 0,
                                DB_FIREBIRD = 1,
                                DB_ORACLE = 2,
                                DB_POSTGRES = 3,
                                DB_YASHANDB = 4;

修改完成后,按Esc,输入:wq保存并退出文件编辑。

#编译源码
执行如下命令进入benchmarksql-5.0目录,并执行ant命令进行编译:

yum 本地配置
cd /etc/yum.repos.d
mkdir bk
mv *.repo bk/

echo “[EL7-1]” > /etc/yum.repos.d/itpux.repo
echo “name =Linux-7” >> /etc/yum.repos.d/itpux.repo
echo “baseurl=file:///mnt” >> /etc/yum.repos.d/itpux.repo
echo “gpgcheck=0” >> /etc/yum.repos.d/itpux.repo
echo “enabled=1” >> /etc/yum.repos.d/itpux.repo

#yum install ant
$ cd benchmarksql-5.0

$ ant

如此时返回ant:command not found,可通过执行yum install ant安装ant编译工具。

#创建文件props.yashandb
$ cd /home/yashan/tpc-c/benchmarksql-5.0/run
执行如下命令,通过vi编辑器创建文件props.yashandb:

$ vi props.yashandb
按i进入编辑模式,将如下内容新增至文件中(可根据实际环境进行修改):
db=yashandb
driver=com.yashandb.jdbc.Driver
conn=jdbc:yasdb://192.168.127.39:1688/yashandb
user=sys
password=yashan_123  --根据环境换密码
warehouses=10
loadWorkers=2
terminals=10
runTxnsPerTerminal=0
runMins=5
limitTxnsPerMin=0
terminalWarehouseFixed=true
newOrderWeight=45
paymentWeight=43
orderStatusWeight=4
deliveryWeight=4
stockLevelWeight=4
resultDirectory=my_result_%tY-%tm-%td_%tH%tM%tS
osCollectorScript=./misc/os_collector_linux.py
osCollectorInterval=1

----注释 其中: 参数含义 db 数据库,须与上述修改文件中添加的数据库名称相同 driver 驱动程序文件,须使用YashanDB的JDBC驱动
conn 连接描述符,格式为:conn=jdbc:yasdb://ip:port/database_name user 数据库用户
password 数据库用户的密码 warehouses 用于指定测试中商品仓库的数量,通常测试场景为100~1000仓
loadWorkers 数据导入的并发数,通常设置为CPU线程总数的2~4倍
terminals 业务运行的并发数,通常设置为CPU线程总数的2~4倍
runTxnsPerTerminal 每个会话运行的固定事务数量,通常配置为0,以runMins限制测试时间
runMins 用于指定测试运行的时间,通常建议压测时间为10~30分钟
limitTxnsPerMin 每秒事务数上限,压测场景下通常设置为0
terminalWarehouseFixed 会话和仓库的绑定模式,通常设置为true newOrderWeight
paymentWeight orderStatusWeight deliveryWeight
stockLevelWeight 五种事务的占比,所有值的和须为100
–标准的业务比率配置为45:43:4:4:4 resultDirectory 指定存储测试结果的目录。%tY、%tm、%td、%tH、%tM和%tS是时间格式化参数
osCollectorScript 指定操作系统收集器的脚本路径。通常用于收集操作系统资源使用情况的统计信息,例如CPU使用率、内存使用情况、磁盘I/O等
osCollectorInterval 指定操作系统收集器脚本运行间隔(单位:秒)


修改完成后,按Esc,输入:wq保存并退出文件编辑。

#修改文件funcs.sh
执行如下命令,在vi编辑器中打开funcs.sh文件:
$ vi /home/yashan/tpc-c/benchmarksql-5.0/run/funcs.sh
按i进入编辑模式,将文档内容替换为如下内容:
-------------------
# ----
# $1 is the properties file
# ----
PROPS=$1
if [ ! -f ${PROPS} ] ; then
    echo "${PROPS}: no such file" >&2
    exit 1
fi

# ----
# getProp()
#
#   Get a config value from the properties file.
# ----
function getProp()
{
    grep "^${1}=" ${PROPS} | sed -e "s/^${1}=//"
}

# ----
# getCP()
#
#   Determine the CLASSPATH based on the database system.
# ----
function setCP()
{
    case "$(getProp db)" in
        firebird)
            cp="../lib/firebird/*:../lib/*"
            ;;
        oracle)
            cp="../lib/oracle/*"
            if [ ! -z "${ORACLE_HOME}" -a -d ${ORACLE_HOME}/lib ] ; then
                cp="${cp}:${ORACLE_HOME}/lib/*"
            fi
            cp="${cp}:../lib/*"
            ;;
        postgres)
            cp="../lib/postgres/*:../lib/*"
            ;;
        yashandb)
            cp="../lib/yashandb/*:../lib/*"
            ;;
    esac
    myCP=".:${cp}:../dist/*"
    export myCP
}

# ----
# Make sure that the properties file does have db= and the value
# is a database, we support.
# ----
case "$(getProp db)" in
    firebird|oracle|postgres|yashandb)
        ;;
    "") echo "ERROR: missing db= config option in ${PROPS}" >&2
        exit 1
        ;;
    *)  echo "ERROR: unsupported database type 'db=$(getProp db)' in ${PROPS}" >&2
        exit 1
        ;;
esac
------------------------------
修改完成后,按Esc,输入:wq保存并退出文件编辑。

#添加yashandb java connector驱动
执行此步骤前须确保已安装YashanDB JDBC驱动,本例中驱动包所在路径为/home/yashan/yashandb_jdbc/。

执行如下命令添加驱动:
$ mkdir -p /home/yashan/yashandb_jdbc/
$ cd /home/yashan/yashandb_jdbc/
[yashan@localhost yashandb_jdbc]$ rz
<-yashandb-jdbc-1.6.9.jar: 438932/438932(100%)

$ mkdir -p /home/yashan/tpc-c/benchmarksql-5.0/lib/yashandb/
$ cp /home/yashan/yashandb_jdbc/yashandb-jdbc-1.6.9.jar /home/yashan/tpc-c/benchmarksql-5.0/lib/yashandb/

#修改runDatabaseBuild.sh文件
执行如下命令,在vi编辑器中打开runDatabaseBuild.sh文件:
$ vi /home/yashan/tpc-c/benchmarksql-5.0/run/runDatabaseBuild.sh
在文件中查找下面内容:
AFTER_LOAD=“indexCreates foreignKeys extraHistID buildFinish”

按i进入编辑模式,将该部分内容修改为如下内容:
AFTER_LOAD=“indexCreates foreignKeys buildFinish”
修改完成后,按Esc,输入:wq保存并退出文件编辑。

#TPC-C测试运行

参数调优-略
---------------------------------------- 以1000仓、256并发的测试场景为例,推荐配置以下性能调优参数:

#Data buffer用于数据块的缓存,其大小会影响数据访问的缓存命中率。建议将规划内存的80%配置为数据缓存区,如果缓存区的大小大于总数据大小可取得最佳性能。
DATA_BUFFER_SIZE=200G
#Data buffer的分区数,在大并发的测试场景下,将Data buffer分区可以降低缓存区的锁冲突。
_DATA_BUFFER_PARTS=8
#VM Buffer用于保存例如order/group by等数据运算的中间结果,当VM空间不足时会产生内存与SWAP表空间的换入换入,影响数据库性能表现。
#因此需要配置合理的VM Buffer大小以避免换入换入的产生。通过视图V$VM中的SWAPPED_OUT_BLOCKS字段可以获取SWAP的次数,当为0时可以取到最佳性能。
VM_BUFFER_SIZE=25G
#VM Buffer的分区数,在大并发的测试场景下,将VM buffer可以降低缓存区的锁冲突。 VM_BUFFER_PARTS=8
#全局大页内存区大小,在大并发的测试场景下,需要提高配置以避免资源不足。 LARGE_POOL_SIZE=1G
#全局执行内存区大小,在大并发的测试场景下,需要提高配置以避免资源不足。 WORK_AREA_POOL_SIZE=2G
#undo数据的保留时间,用于一致性读或者数据闪回。对于类似TPC-C小事务的场景下,降低undo数据的保留时间可以提高undo分配效率,提升数据库性能。
UNDO_RETENTION=15
#会话级CURSOR的数量,在大并发的测试场景下提高配置可以消除全局CURSOR的竞争。
_SESSION_RESERVED_CURSORS=64
#增量Checkpoint的时间间隔,后台脏块刷盘会与redo刷盘产生IO争用,在DATA和redo同盘部署的场景下,降低Checkpoint频率可以提升数据库性能。
CHECKPOINT_TIMEOUT=900
#指定触发checkpoint的从恢复点到当前redo日志刷盘点的redo大小间隔,通常配置为redo文件总大小的一半。 CHECKPOINT_INTERVAL=10G
#共享内存池的大小,提高配置以避免SQL缓存或者元数据缓存的频繁失效。 SHARE_POOL_SIZE=2G
--------------------------- 创建数据库时主要关注以下方面:

redo文件的大小:redo文件配置太小,在压测场景下容易出现redo追尾的情况,严重影响数据库性能。通过V$SYSTEM_EVENT视图中的“checkpoint
completed”的等待事件判断是否出现redo追尾的情况。
DATA文件的大小:预占数据空间可以避免数据库运行过程中空间动态扩展对性能的影响,因此为了最佳性能表现,需要初始化足够大的表空间。
在实际使用过程中,也应及时调整redo文件、DATA文件等相关配置,具体可查阅文件管理。

如果存储条件允许,请将redo文件与数据文件分盘部署,以减少两者间的IO争用,以1000仓、256并发的测试场景为例,推荐的建库语句如下:

CREATE DATABASE tpcc LOGFILE( ‘/data1/redo1’ size 20G BLOCKSIZE 512,
‘/data1/redo2’ size 20G BLOCKSIZE 512, ‘/data1/redo3’ size 20G
BLOCKSIZE 512, ‘/data1/redo4’ size 20G BLOCKSIZE 512, ‘/data1/redo5’
size 20G BLOCKSIZE 512, ‘/data1/redo6’ size 20G BLOCKSIZE 512,
‘/data1/redo7’ size 20G BLOCKSIZE 512, ‘/data1/redo8’ size 20G
BLOCKSIZE 512, ‘/data1/redo9’ size 20G BLOCKSIZE 512, ‘/data1/redo10’
size 20G BLOCKSIZE 512) UNDO TABLESPACE DATAFILE ‘/data2/undo’ size
10G SWAP TABLESPACE TEMPFILE ‘/data2/swap’ size 10G SYSTEM TABLESPACE
DATAFILE ‘/data2/system’ size 5G SYSAUX TABLESPACE DATAFILE
‘/data2/sysaux’ size 5G DEFAULT TABLESPACE DATAFILE ‘/data2/users’
size 300G;

–TPC-C数据装载
在/home/yashan/tpc-c/benchmarksql-5.0/run目录中
目录中执行如下命令进行数据导入:

$cd /home/yashan/tpc-c/benchmarksql-5.0/run
./runDatabaseBuild.sh props.yashandb

–运行TPC-C测试
执行如下语句进行TPC-C测试:

$ ./runBenchmark.sh props.yashandb

10:35:56,883 [main] INFO   jTPCC : Term-0Term-00, Running Average tpmT10:41:05,130 [Thread-4] INFO   jTPCC : Term-00, mory Usage: 85MB / 24210:41:05,131 [Thread-4] INFO   jTPCC : Term-00,                       10:41:05,131 [Thread-4] INFO   jTPCC : Term-00, Measured tpmC (NewOrders) = 9588.46                                                         10:41:05,131 [Thread-4] INFO   jTPCC : Term-00, Measured tpmTOTAL = 21327.05
10:41:05,132 [Thread-4] INFO   jTPCC : Term-00, Session Start     = 2024-09-10 10:35:57
10:41:05,132 [Thread-4] INFO   jTPCC : Term-00, Session End       = 2024-09-10 10:41:05
10:41:05,132 [Thread-4] INFO   jTPCC : Term-00, Transaction Count = 109485
测试结果中的tpmC值表示每分钟内系统处理的新订单个数,即系统最大吞吐量。tpmC值常作为性能指标,值越高表示数据库性能越好。

–清理TPC-C数据
在/home/yashan/tpc-c/benchmarksql-5.0/run目录中,执行如下命令进行数据清理:
$cd /home/yashan/tpc-c/benchmarksql-5.0/run
./runDatabaseDestroy.sh props.yashandb

> 也可以和系统命令配合使用 top
> 
> iostat 1 10  --1秒显示一次,一共10次 ystop.sh --原厂监控脚本
> ------ystop.sh快捷键  d - Database overview  D - Database detail  b - Buffer pool  s - Top SQL    z - Select orderby column  l - List Locks
> & Spinlocks  S - List Sessions  t - List Tablespaces  T - List Tables 
> w - List wait events  m - List Memory Pool  q - Quit
> ---------------
  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
以下是在Ubuntu20.04.6 LTS上使用sysbench-tpcc跑tpcc测试,500仓的步骤: 1. 安装sysbench和MySQL ``` sudo apt update sudo apt install sysbench mysql-server ``` 2. 登录MySQL,创建tpcc数据库 ``` mysql -u root -p CREATE DATABASE tpcc; exit ``` 3. 下载sysbench-tpcc工具 ``` cd ~ git clone https://github.com/Percona-Lab/sysbench-tpcc.git ``` 4. 准备测试数据 ``` cd sysbench-tpcc/ sysbench ./tpcc.lua --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=<your_password> --mysql-db=tpcc --table-size=500000 --tables=10 --threads=10 --time=0 --report-interval=10 prepare ``` 在准备测试数据时,我们使用了以下参数: - --table-size:指定每个表包含的记录数。 - --tables:指定需要使用的表的数量。 - --threads:指定测试使用的线程数。 - --time:指定测试运行的时间。 - --report-interval:指定测试输出结果的时间间隔。 根据您的需求,您可以根据上面的参数进行修改。 5. 运行测试 ``` sysbench ./tpcc.lua --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=<your_password> --mysql-db=tpcc --table-size=500000 --tables=10 --threads=10 --time=300 --report-interval=10 run ``` 在运行测试时,我们使用了以下参数: - --table-size:指定每个表包含的记录数。 - --tables:指定需要使用的表的数量。 - --threads:指定测试使用的线程数。 - --time:指定测试运行的时间。 - --report-interval:指定测试输出结果的时间间隔。 根据您的需求,您可以根据上面的参数进行修改。 6. 查看测试结果 测试结束后,sysbench会输出测试结果,包括tps和qps等信息,您可以根据测试结果进行分析和优化。 希望这些步骤能够帮助您完成在Ubuntu20.04.6 LTS上使用sysbench-tpcc跑tpcc测试的过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

king01299

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值