8.Benchmark SQL 数据库测试工具代码——会话类

8.Benchmark SQL 数据库测试工具代码——会话类

欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/50357671

会话类就是jTPCCTerminal,继承与jTPCCConfig,Runnable.

         其中jTPCCConfig是配置文件类,Runnable是多线程并发类,具体可以大家自己网上查找之。

         先来看看会话类的主要逻辑。关于5个核心事务,蛤蟆已将其抽取到单独的文档中。

1.  准备工作

设置各种变量,主要有会话名字,对应的WAREHOUSE ID,District ID, 父类,总共交易数量,以及是否停止的布尔型变量stopRunningSignal,还包括SQL执行的PreparedStatement类型。

2.  构造函数

用于实例化一个会话。输入的变量有:会话名字,W_ID,D_ID, 连接CONN,交易的数量,各事务的比重,数据仓库数量,每分钟限制的交易数量,以及父类。

将入参数值赋值给类中的变量。

然后输出一些基本信息,最后获取当前事件为会话开始时间。

3.  run

调用该类的代码中执行start,就会执行run函数启动。

先根据当前事件获取一个随机种子。

然后调用executeTransactions函数,参数为交易数量。进入到executeTransactions函数。等执行结束后调用signalTerminalEnded函数自行结束。

4.  stopRunningWhenPossible

设置变量stopRunningSignal变量为TRUE。

5.  executeTransactions

设置变量stopRunning为FALSE(在执行时间到时,设置为TRUE)。

然后根据是执行方式(执行数次或者执行时间,打印各异)。

随机一个1~100的值,根据不同概率执行不同的事务。

通过调用executeTransaction函数实现。

如果是Delivery事务,就调用signalTerminalEndedTransaction 函数,将事务进行累加。

如果设置了每分钟执行次数的限制,计算每次交易是否超过了该速度,如果超过就需要等待。

最后判断变量stopRunningSignal,如果为TRUE,则设置变量stopRunning为TRUE。如果该变量为TRUE,函数就会调出循环就结束。

stopRunningSignal是通过stopRunningWhenPossible函数设置的,该函数在上级中的signalTerminalsRequestEnd函数中设置。signalTerminalsRequestEnd被signalTerminalEndedTransaction函数调用。signalTerminalEndedTransaction函数在每次delivery事务结束时候会进行调用。

6.  executeTransaction

该函数主要根据事务类型,调用针对的事务处理函数。

其中调用NEW_ORDER事务前,1%的概率要异地供货。

1%的概率,需要回滚。

PAYMENT 事务: 85%的概率本地,15%异地

60%的概率通过last_name访问,40%的概率通过c_id访问。

等等。

事务处理后,变量transactionCount++。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值