מבחן ה- TPC-C של Benchmarksql MySQL
Benchmarksql Mysqls Tpc C Test
תצורת ההתקנה של BenchmarkSQL
BenchmarkSQL postgresql מבחן TPC-C
אורקל BenchmarkSQL של מבחן TPC-C
מבחן ה- TPC-C של Benchmarksql MySQL
הקדמה
BenchmarkSQL עצמו אינו תומך במבחן MySQL TPC-C, אך אנו יכולים לשנות את קוד המקור כדי שיוכל לבדוק את תמיכת MySQL.
שנית, שנה את קוד המקור
2.1, הוסף את סוג MySQL
שינוי מקור src / client / jTPCC.java, סוג הטיפול נוסף 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 להוסיף כינוי
שנה את קוד המקור src / client / jTPCCConnection.java, הוסף כינוי להצהרה, סניף SQl הוסף כינוי לשבירה, על פי 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 ליצור פרופילים prop.mysql
בספריית ההפעלה, העתק את props.pg כ- prop.mysql, ערוך את הקובץ 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
עריכת 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, שנה את הסקריפט לטעינת נתונים מראש
מחק את AFTER_LOAD בקובץ run / runDatabaseBuild.sh ב- extraHistID, תן לו לבצע את הסקריפט
18 BEFORE_LOAD='tableCreates'
19 #AFTER_LOAD='indexCreates foreignKeys extraHistID buildFinish'
20 AFTER_LOAD='indexCreates foreignKeys buildFinish'
2.6, הוסף את mysql jdbc
הורד את mysql jdbc, כאן אני משתמש ב- mysql-connector-java-5.1.47.jar.
ה- jdbc לתוך lib / mysql ב, mysql ספרייה לא קיים תחת lib, עליך ליצור ידנית
$ cd lib
$ mkdir mysql
$ cp /path/to/mysql-connector-java-5.1.47.jar mysql /
עץ $
2.7 מהדר
בצע ישירות את פקודת הנמלים, המהדר
נמלה
שלישית, הגדר את מסד הנתונים של MySQL
צור מסד נתונים, המשתמשים נותנים הרשאה
mysql> צור benchmarksql עבור מסדי נתונים
mysql> צור משתמש 'benchmarksql' @ '%' שזוהה על ידי 'benchmarksql'
mysql> הענק את כל ההרשאות ב- benchmarksql. * ל- 'benchmarksql' @ '%' שזוהו על ידי 'benchmarksql'
יתכן ועוצמת הסיסמה של MySQL מגלה כשלים, התהליך הוא כדלקמן:
mysql> בחר @@ validate_password_policy
mysql> הראה משתנים כמו '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> הגדר validate_password_policy גלובלי = 0
mysql> הגדר validate_password_mixed_case_count גלובלי = 0
mysql> הגדר validate_password_number_count גלובלי = 3
mysql> הגדר validate_password_special_char_count גלובלי = 0
mysql> הגדר validate_password_length גלובלי = 3
mysql> הראה משתנים כמו 'validate_password%'
פרמטרים אנליטיים:
- validate_password_dictionary_file: תקע המשמש לאימות נתיבי קובץ מילון חוזק בסיסמה.
- validate_password_length: אורך סיסמא מינימלי, פרמטר ברירת מחדל הוא 8, יש לו מגבלה מינימלית, ערך מינימלי: validate_password_number_count + validate_password_special_char_count + (2 * validate_password_mixed_case_count)
- validate_password_mixed_case_count: מספר האותיות הקטנות והאותיות לפחות מספר הסיסמאות שיש לכלול.
- validate_password_number_count: מספר הספרות לכלול לפחות סיסמה.
- validate_password_policy: בחן את רמות חוזק הסיסמה, 0 / LOW, 1 / MEDIUM, 2 / STRONG. יש לו את הערכים הבאים:
מְדִינִיוּת | בדיקות שבוצעו |
0 או LOW | אורך |
1 או MEDIUM | מספר אורך, אותיות קטנות / אותיות ותווים מיוחדים |
2 או STRONG | קובץ מילון אורך, אותיות קטנות / אותיות ותווים מיוחדים |
ברירת המחדל היא 1, כלומר MEDIUM, אז פשוט התחל בהגדרת הסיסמה חייב לעמוד באורך ועליו להכיל מספרים, אותיות קטנות או קטנות, תווים מיוחדים.
- validate_password_special_char_count: מספר התווים המיוחדים בסיסמה שאתה לפחות רוצה לכלול.
ארבע, מבחן BenchmarkSQL
פקודה בספריית ההפעלה
4.1, בסיס נתונים נטען מראש
$ ./runDatabaseBuild.sh props.mysql
האמצע עשוי להיות איטי, היה סבלני
4.2 מבחן
$ ./runBenchmark.sh props.mysql
4.3, בסיס נתונים ריק
$ ./runDatabaseDestroy.sh props.mysql
V. הפניות
benchmarksql 5.0 תומך במבחן TPC-C עבור MySQL