מבחן ה- 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

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

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

מ< https://www.jianshu.com/p/622545cb1341 >