📄 benchc.java
字号:
String middle = "OE";
String last;
if (cId < 1000) {
last = random.getLastname(cId);
} else {
last = random.getLastname(random.getNonUniform(255, 0, 999));
}
String[] address = random.getAddress();
String street1 = address[0];
String street2 = address[1];
String city = address[2];
String state = address[3];
String zip = address[4];
String phone = random.getNumberString(16, 16);
String credit;
if (random.getInt(0, 1) == 0) {
credit = "GC";
} else {
credit = "BC";
}
BigDecimal discount = random.getBigDecimal(random.getInt(0, 5000), 4);
BigDecimal balance = new BigDecimal("-10.00");
BigDecimal creditLim = new BigDecimal("50000.00");
String data = random.getString(300, 500);
BigDecimal ytdPayment = new BigDecimal("10.00");
int paymentCnt = 1;
int deliveryCnt = 1;
prepCustomer.setInt(1, cId);
prepCustomer.setInt(2, dId);
prepCustomer.setInt(3, wId);
prepCustomer.setString(4, first);
prepCustomer.setString(5, middle);
prepCustomer.setString(6, last);
prepCustomer.setString(7, street1);
prepCustomer.setString(8, street2);
prepCustomer.setString(9, city);
prepCustomer.setString(10, state);
prepCustomer.setString(11, zip);
prepCustomer.setString(12, phone);
prepCustomer.setTimestamp(13, timestamp);
prepCustomer.setString(14, credit);
prepCustomer.setBigDecimal(15, creditLim);
prepCustomer.setBigDecimal(16, discount);
prepCustomer.setBigDecimal(17, balance);
prepCustomer.setString(18, data);
prepCustomer.setBigDecimal(19, ytdPayment);
prepCustomer.setInt(20, paymentCnt);
prepCustomer.setInt(21, deliveryCnt);
db.update(prepCustomer, "insertCustomer");
BigDecimal amount = new BigDecimal("10.00");
String hData = random.getString(12, 24);
prepHistory.setInt(1, cId);
prepHistory.setInt(2, dId);
prepHistory.setInt(3, wId);
prepHistory.setInt(4, wId);
prepHistory.setInt(5, dId);
prepHistory.setTimestamp(6, timestamp);
prepHistory.setBigDecimal(7, amount);
prepHistory.setString(8, hData);
db.update(prepHistory, "insertHistory");
}
}
private void loadOrder() throws Exception {
trace("load orders");
int max = warehouses * districtsPerWarehouse;
int i = 0;
for (int wId = 1; wId <= warehouses; wId++) {
for (int dId = 1; dId <= districtsPerWarehouse; dId++) {
loadOrderSub(dId, wId);
trace(i++, max);
}
}
}
private void loadOrderSub(int dId, int wId) throws Exception {
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
int[] orderid = random.getPermutation(ordersPerDistrict);
PreparedStatement prepOrder = db.prepare("INSERT INTO ORDERS(O_ID, O_C_ID, O_D_ID, O_W_ID, "
+ "O_ENTRY_D, O_CARRIER_ID, O_OL_CNT, O_ALL_LOCAL) " + "VALUES(?, ?, ?, ?, ?, ?, ?, 1)");
PreparedStatement prepNewOrder = db.prepare("INSERT INTO NEW_ORDER (NO_O_ID, NO_D_ID, NO_W_ID) "
+ "VALUES (?, ?, ?)");
PreparedStatement prepLine = db.prepare("INSERT INTO ORDER_LINE(" + "OL_O_ID, OL_D_ID, OL_W_ID, OL_NUMBER, "
+ "OL_I_ID, OL_SUPPLY_W_ID, OL_QUANTITY, OL_AMOUNT, " + "OL_DIST_INFO, OL_DELIVERY_D)"
+ "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, NULL)");
for (int oId = 1, i = 0; oId <= ordersPerDistrict; oId++) {
int cId = orderid[oId - 1];
int carrierId = random.getInt(1, 10);
int olCnt = random.getInt(5, 15);
prepOrder.setInt(1, oId);
prepOrder.setInt(2, cId);
prepOrder.setInt(3, dId);
prepOrder.setInt(4, wId);
prepOrder.setTimestamp(5, timestamp);
prepOrder.setInt(7, olCnt);
if (oId <= 2100) {
prepOrder.setInt(6, carrierId);
} else {
// the last 900 orders have not been delivered
prepOrder.setNull(6, Types.INTEGER);
prepNewOrder.setInt(1, oId);
prepNewOrder.setInt(2, dId);
prepNewOrder.setInt(3, wId);
db.update(prepNewOrder, "newNewOrder");
}
db.update(prepOrder, "insertOrder");
for (int ol = 1; ol <= olCnt; ol++) {
int id = random.getInt(1, items);
int supplyId = wId;
int quantity = 5;
String distInfo = random.getString(24);
BigDecimal amount;
if (oId < 2101) {
amount = random.getBigDecimal(0, 2);
} else {
amount = random.getBigDecimal(random.getInt(0, 1000000), 2);
}
prepLine.setInt(1, oId);
prepLine.setInt(2, dId);
prepLine.setInt(3, wId);
prepLine.setInt(4, ol);
prepLine.setInt(5, id);
prepLine.setInt(6, supplyId);
prepLine.setInt(7, quantity);
prepLine.setBigDecimal(8, amount);
prepLine.setString(9, distInfo);
db.update(prepLine, "insertOrderLine");
if (i++ % commitEvery == 0) {
db.commit();
}
}
}
}
private void loadStock(int wId) throws Exception {
trace("load stock (warehouse " + wId + ")");
boolean[] original = random.getBoolean(items, items / 10);
PreparedStatement prep = db.prepare("INSERT INTO STOCK(S_I_ID, S_W_ID, S_QUANTITY, "
+ "S_DIST_01, S_DIST_02, S_DIST_03, S_DIST_04, S_DIST_05, "
+ "S_DIST_06, S_DIST_07, S_DIST_08, S_DIST_09, S_DIST_10, "
+ "S_DATA, S_YTD, S_ORDER_CNT, S_REMOTE_CNT) "
+ "VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
for (int id = 1; id <= items; id++) {
int quantity = random.getInt(10, 100);
String dist01 = random.getString(24);
String dist02 = random.getString(24);
String dist03 = random.getString(24);
String dist04 = random.getString(24);
String dist05 = random.getString(24);
String dist06 = random.getString(24);
String dist07 = random.getString(24);
String dist08 = random.getString(24);
String dist09 = random.getString(24);
String dist10 = random.getString(24);
String data = random.getString(26, 50);
if (original[id - 1]) {
data = random.replace(data, "original");
}
prep.setInt(1, id);
prep.setInt(2, wId);
prep.setInt(3, quantity);
prep.setString(4, dist01);
prep.setString(5, dist02);
prep.setString(6, dist03);
prep.setString(7, dist04);
prep.setString(8, dist05);
prep.setString(9, dist06);
prep.setString(10, dist07);
prep.setString(11, dist08);
prep.setString(12, dist09);
prep.setString(13, dist10);
prep.setString(14, data);
prep.setInt(15, 0);
prep.setInt(16, 0);
prep.setInt(17, 0);
db.update(prep, "insertStock");
if (id % commitEvery == 0) {
db.commit();
}
trace(id, items);
}
}
private void loadDistrict(int wId) throws Exception {
BigDecimal ytd = new BigDecimal("300000.00");
int nextId = 3001;
PreparedStatement prep = db.prepare("INSERT INTO DISTRICT(D_ID, D_W_ID, D_NAME, "
+ "D_STREET_1, D_STREET_2, D_CITY, D_STATE, D_ZIP, " + "D_TAX, D_YTD, D_NEXT_O_ID) "
+ "VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
for (int dId = 1; dId <= districtsPerWarehouse; dId++) {
String name = random.getString(6, 10);
String[] address = random.getAddress();
String street1 = address[0];
String street2 = address[1];
String city = address[2];
String state = address[3];
String zip = address[4];
BigDecimal tax = random.getBigDecimal(random.getInt(0, 2000), 4);
prep.setInt(1, dId);
prep.setInt(2, wId);
prep.setString(3, name);
prep.setString(4, street1);
prep.setString(5, street2);
prep.setString(6, city);
prep.setString(7, state);
prep.setString(8, zip);
prep.setBigDecimal(9, tax);
prep.setBigDecimal(10, ytd);
prep.setInt(11, nextId);
db.update(prep, "insertDistrict");
trace(dId, districtsPerWarehouse);
}
}
public void runTest() throws Exception {
db.start(this, "Transactions");
db.openConnection();
for (int i = 0; i < 70; i++) {
BenchCThread process = new BenchCThread(db, this, random, i);
process.process();
}
db.closeConnection();
db.end();
db.openConnection();
BenchCThread process = new BenchCThread(db, this, random, 0);
process.process();
db.logMemory(this, "Memory Usage");
db.closeConnection();
}
public String getName() {
return "BenchC";
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -