10.Benchmark SQL 数据库测试工具代码——事务Payment

10.Benchmark SQL 数据库测试工具代码——事务Payment

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

事务Payment是轻量级的读写交易。

1.  输入数据

每个终端对应一个WAREHOUSE的ID

一个随机区域(1~10)

85%的时间,客户在本地的仓库和区域活动

15%的事件,在远程的仓库和区域活动。

此外60%的概率通过用户名字进行查找

         40%的概率通过用户ID进行查找。

         付款数额随机从1~5000

         入参包括:终端仓库ID,客户仓库ID,付款数额,区域ID,客户区域ID,客户ID,客户名字,是否通过名字查找。

         其中85%概率 终端仓库ID=客户仓库ID,区域ID=客户区域ID。

2.  步骤一

更新WAREHOUSE中的w_ytd变量(年度余额)

设置为输入的参数付款数额随机从1~5000

"UPDATE benchmarksql.warehouse SET w_ytd = w_ytd +?  WHERE w_id = ? "

 

 

3.  步骤二

从warehouse总获得终端仓库ID所对应的属性。

"SELECT w_street_1,w_street_2, w_city, w_state, w_zip, w_name"+

                  " FROM benchmarksql.warehouse WHERE w_id = ?"

 

4.  步骤三

更新district表中的d_ytd,如下:

"UPDATE benchmarksql.district SETd_ytd = d_ytd + ? WHERE d_w_id = ? AND d_id = ?"

 

 

 

5.  步骤四

从district中获得区域的属性,如下:

"SELECT d_street_1,d_street_2, d_city, d_state, d_zip, d_name"+

                  " FROM benchmarksql.district WHERE d_w_id = ? AND d_id = ?"

 

6.  步骤五

如果通过名字查找:

从customer中获取客户仓库ID,客户区域ID,客户名字对应的数量namecnt。

"SELECT count(*) AS namecntFROM benchmarksql.customer " +

                      " WHERE c_last = ?  AND c_d_id= ? AND c_w_id = ?"

再从customer表中,获取客户仓库ID,客户区域ID,客户名字对应的相关属性。

使用namecnt对应数量的中间一条记录。

"SELECT c_first, c_middle,c_id, c_street_1, c_street_2, c_city, c_state, c_zip," +

                    "       c_phone, c_credit,c_credit_lim, c_discount, c_balance, c_since "+

                    "  FROM benchmarksql.customerWHERE c_w_id = ? AND c_d_id = ? AND c_last = ? "+

                    "ORDER BY c_w_id, c_d_id, c_last, c_first "

获取相关属性。

如果是通过ID查找,则

直接通过c_w_id,c_d_id,c_id来获取,客户相关属性。

"SELECT c_first, c_middle,c_last, c_street_1, c_street_2, c_city, c_state, c_zip," +

                    "       c_phone, c_credit,c_credit_lim, c_discount, c_balance, c_since "+

                    "  FROM benchmarksql.customerWHERE c_w_id = ? AND c_d_id = ? AND c_id = ?"

 

 

 

 

 

 

7.  步骤六

将客户的列c_balance上加上随机的额度

根据客户的c_credit来执行:

如果为BC(bad credit)

         则从customer表中选择c_data列

"SELECT c_data FROMbenchmarksql.customer WHERE c_w_id = ? AND c_d_id = ? AND c_id = ?"

         修改原来的c_data,并更新customer中的c_data.如下:

"UPDATE benchmarksql.customerSET c_balance = ?, c_data = ? " +

                    " WHERE c_w_id = ? AND c_d_id = ? AND c_id = ?"

不更新客户的c_balance(余额)

如果为GC(good credit)

         直接更新客户的c_balance.

"UPDATE benchmarksql.customerSET c_balance = ? WHERE c_w_id = ? AND c_d_id = ? AND c_id = ?"

8.  步骤七

获取w_name和d_name 各取10个字符。

通过4个空格连接。

然后插入到HISTORY表中如下:

"INSERT INTObenchmarksql.history (h_c_d_id, h_c_w_id, h_c_id, h_d_id, h_w_id, h_date,h_amount, h_data) " +

                " VALUES (?,?,?,?,?,?,?,?)"

 

 

 

9.  步骤八print message

输出付款事务相关信息:

         时间

         仓库ID

         仓库街道1

         仓库街道2

         城市

         区域ID

         区域街道1

         区域寄到2

         区域城市、区域状态、区域右边

         客户ID

         客户姓名

         客户街道1

         客户街道2

         客户城市、状态、邮编

         客户信誉

         客户折扣

         客户手机

         总共付款

         客户信誉限制

         客户余额

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值