Test TPC-C spoločnosti Benchmarksql MySQL
Benchmarksql Mysqls Tpc C Test
Konfigurácia inštalácie BenchmarkSQL
BenchmarkSQL postgresql test TPC-C
Test BenchmarkSQL testu TPC-C
Test TPC-C spoločnosti Benchmarksql MySQL
I. úvod
Samotný BenchmarkSQL nepodporuje test MySQL TPC-C, ale môžeme upraviť zdrojový kód tak, aby umožňoval testovanie podpory MySQL.
Po druhé, upravte zdrojový kód
2.1, pridajte typ MySQL
Pri úprave zdroja src / client / jTPCC.java bol pridaný typ liečby mysql
117 if (iDB.equals('firebird'))
118 dbType = DB_FIREBIRD
119 else if (iDB.equals('oracle'))
120 dbType = DB_ORACLE
121 else if (iDB.equals('postgres'))
122 dbType = DB_POSTGRES
123 else if (iDB.equals('mysql'))
124 dbType = DB_UNKNOWN
125 else
126 {
127 log.error('unknown database type '' + iDB + ''')
128 return
129 }
2.2, SQL dotaz pridať alias
Upravte zdrojový kód src / client / jTPCCConnection.java, pridajte do výpisu alias, vetvu SQl pridajte alias na rozbitie, po vzore DB_POSTGRES
194 case jTPCCConfig.DB_POSTGRES:
195 stmtStockLevelSelectLow = dbConn.prepareStatement(
196 'SELECT count(*) AS low_stock FROM (' +
197 ' SELECT s_w_id, s_i_id, s_quantity ' +
198 ' FROM bmsql_stock ' +
199 ' WHERE s_w_id = ? AND s_quantity AND s_i_id IN (' +
200 ' SELECT ol_i_id ' +
201 ' FROM bmsql_district ' +
202 ' JOIN bmsql_order_line ON ol_w_id = d_w_id ' +
203 ' AND ol_d_id = d_id ' +
204 ' AND ol_o_id >= d_next_o_id - 20 ' +
205 ' AND ol_o_id
206 ' WHERE d_w_id = ? AND d_id = ? ' +
207 ' ) ' +
208 ' ) AS L')
209 break
210
211 default:
212 stmtStockLevelSelectLow = dbConn.prepareStatement(
213 'SELECT count(*) AS low_stock FROM (' +
214 ' SELECT s_w_id, s_i_id, s_quantity ' +
215 ' FROM bmsql_stock ' +
216 ' WHERE s_w_id = ? AND s_quantity AND s_i_id IN (' +
217 ' SELECT ol_i_id ' +
218 ' FROM bmsql_district ' +
219 ' JOIN bmsql_order_line ON ol_w_id = d_w_id ' +
220 ' AND ol_d_id = d_id ' +
221 ' AND ol_o_id >= d_next_o_id - 20 ' +
222 ' AND ol_o_id
223 ' WHERE d_w_id = ? AND d_id = ? ' +
224 ' ) ' +
225 ' ) AS L')
2.3, mysql vytvára profily prop.mysql
V spustenom adresári skopírujte props.pg ako prop.mysql a upravte súbor prop.mysql
db=mysql
driver=com.mysql.jdbc.Driver
conn=jdbc:mysql://192.168.30.136:3306/benchmarksql?useSSL=false
user=benchmarksql
password=benchmarksql
warehouses=1
loadWorkers=4
terminals=1
//To run specified transactions per terminal- runMins must equal zero
runTxnsPerTerminal=10
//To run for specified minutes- runTxnsPerTerminal must equal zero
runMins=0
//Number of total transactions per minute
limitTxnsPerMin=300
//Set to true to run in 4.x compatible mode. Set to false to use the
//entire configured database evenly.
terminalWarehouseFixed=true
//The following five values must add up to 100
//The default percentages of 45, 43, 4, 4 & 4 match the TPC-C spec
newOrderWeight=45
paymentWeight=43
orderStatusWeight=4
deliveryWeight=4
stockLevelWeight=4
// Directory name to create for collecting detailed result data.
// Comment this out to suppress.
resultDirectory=my_result_%tY-%tm-%td_%tH%tM%tS
osCollectorScript=./misc/os_collector_linux.py
osCollectorInterval=1
//root@xxxxx
osCollectorDevices=net_ens32 blk_sda
2.4, adding mysql type in the script
Úpravy súboru run / funcs.sh,
25 function setCP()
26 {
27 case '$(getProp db)' in
28 firebird)
29 cp='../lib/firebird/*:../lib/*'
30
31 oracle)
32 cp='../lib/oracle/*'
33 if [ ! -z '${ORACLE_HOME}' -a -d ${ORACLE_HOME}/lib ] then
34 cp='${cp}:${ORACLE_HOME}/lib/*'
35 fi
36 cp='${cp}:../lib/*'
37
38 postgres)
39 cp='../lib/postgres/*:../lib/*'
40
41 mysql)
42 cp='../lib/mysql/*:../lib/*'
43
44 esac
45 myCP='.:${cp}:../dist/*'
46 export myCP
47 }
48
49 # ----
50 # Make sure that the properties file does have db= and the value
51 # is a database, we support.
52 # ----
53 case '$(getProp db)' in
54 firebird|oracle|postgres|mysql)
55
56 '') echo 'ERROR: missing db= config option in ${PROPS}' >&2
57 exit 1
58
2.5, upravte skript tak, aby sa údaje vopred načítali
Vymažte AFTER_LOAD v súbore run / runDatabaseBuild.sh v extraHistID, nechajte ho spustiť skript
18 BEFORE_LOAD='tableCreates'
19 #AFTER_LOAD='indexCreates foreignKeys extraHistID buildFinish'
20 AFTER_LOAD='indexCreates foreignKeys buildFinish'
2.6, pridajte mysql jdbc
Stiahnite si mysql jdbc, tu používam mysql-connector-java-5.1.47.jar.
Jdbc do lib / mysql in, mysql adresár neexistuje pod lib, musíte vytvoriť ručne
$ cd lib
$ mkdir mysql
$ cp /path/to/mysql-connector-java-5.1.47.jar mysql /
$ strom
Kompilátor 2.7
Priamo spustite príkaz mravca, kompilátor
$ ant
Po tretie, nakonfigurujte databázu MySQL
Vytvorte databázu, používatelia udeľujú povolenie
mysql> vytvoriť databázu benchmarksql
mysql> vytvoriť používateľa 'benchmarksql' @ '%' identifikovaného podľa 'benchmarksql'
mysql> udeliť všetky privilégiá pre benchmarkyql. * pre 'benchmarkyql' @ '%' označené ako 'benchmarkyql'
Môže sa vyskytnúť chyba zisťujúca silu hesla MySQL, postup je nasledovný:
mysql> vyberte @@ validate_password_policy
mysql> ZOBRAZIŤ PREMENNÉ AKO „validate_password%“
+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| validate_password_dictionary_file | |
| validate_password_length | 8 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | MEDIUM |
| validate_password_special_char_count | 1 |
+--------------------------------------+--------+
6 rows in set (0.08 sec)
mysql> set global validate_password_policy = 0
mysql> nastaviť globálne validate_password_mixed_case_count = 0
mysql> nastav globálne validate_password_number_count = 3
mysql> nastav globálne validate_password_special_char_count = 0
mysql> nastavit global validate_password_length = 3
mysql> ZOBRAZIŤ PREMENNÉ AKO „validate_password%“
Analytické parametre:
- validate_password_dictionary_file: zástrčka používaná na overenie cesty k slovníku so silou hesla.
- validate_password_length: minimálna dĺžka hesla, predvolený parameter je 8, má minimálny limit, minimálna hodnota: validate_password_number_count + validate_password_special_char_count + (2 * validate_password_mixed_case_count)
- validate_password_mixed_case_count: Počet malých a veľkých písmen, minimálne taký počet hesiel, ktoré treba zahrnúť.
- validate_password_number_count: počet číslic, ktoré obsahujú aspoň heslo.
- validate_password_policy: Preskúmajte úrovne sily hesla, 0 / NÍZKE, 1 / STREDNÉ, 2 / SILNÉ. Má nasledujúce hodnoty:
Politika | Vykonané testy |
0 alebo NÍZKY | Dĺžka |
1 alebo STREDNÉ | Číselné znaky dĺžky, malé / veľké písmená a špeciálne znaky |
2 alebo SILNÉ | Slovníkový súbor s číselnými, malými / veľkými písmenami a so špeciálnymi znakmi |
Predvolená hodnota je 1, to znamená STREDNÁ, takže nastavenie hesla musí začať zodpovedať dĺžke a musí obsahovať čísla, malé alebo veľké písmená a špeciálne znaky.
- validate_password_special_char_count: počet špeciálnych znakov v hesle, ktorý chcete zahrnúť.
Štyri, test BenchmarkSQL
Príkaz v spustenom adresári
4.1, predinštalovaná databáza
$ ./runDatabaseBuild.sh props.mysql
Stred môže byť trochu pomalý, buďte trpezliví
4.2 Skúška
$ ./runBenchmark.sh props.mysql
4,3, prázdna databáza
$ ./runDatabaseDestroy.sh props.mysql
V. Odkazy
benchmarksql 5.0 podporuje test TPC-C pre MySQL