BenchmarksqlMySQLのTPC-Cテスト



Benchmarksql Mysqls Tpc C Test



BenchmarkSQLのインストール構成
BenchmarkSQL postgresqlTPC-Cテスト
TPC-CテストのBenchmarkSQLオラクル
BenchmarksqlMySQLのTPC-Cテスト

I.はじめに



BenchmarkSQL自体はMySQLTPC-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、データをプリロードするようにスクリプトを変更します

extraHistIDのファイルrun / runDatabaseBuild.shのAFTER_LOADを削除し、スクリプトを実行させます。

18 BEFORE_LOAD='tableCreates'

19 #AFTER_LOAD='indexCreates foreignKeys extraHistID buildFinish'

20 AFTER_LOAD='indexCreates foreignKeys buildFinish'

2.6、mysqljdbcを追加します

mysqljdbcをダウンロードします。ここでは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コンパイラ

antコマンド、コンパイラを直接実行します

$アリ

第三に、MySQLデータベースを構成します

データベースを作成し、ユーザーが許可を与える

mysql>データベースbenchmarksqlを作成します

mysql> create user'benchmarksql '@'% 'は' benchmarksql 'で識別されます

mysql> benchmarksql。*のすべての権限を「benchmarksql」で識別される「benchmarksql」@「%」に付与します

MySQLパスワード強度が失敗を検出する可能性があります。プロセスは次のとおりです。

mysql> select @@ validate_password_policy

mysql> SHOW VARIABLES LIKE'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> set global validate_password_mixed_case_count = 0

mysql> set global validate_password_number_count = 3

mysql> set global validate_password_special_char_count = 0

mysql> set global validate_password_length = 3

mysql> SHOW VARIABLES LIKE'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または強い

長さ数値、小文字/大文字、および特殊文字辞書ファイル

デフォルトは1、つまりMEDIUMであるため、パスワードの設定を開始するだけで長さが満たされ、数字、大文字または小文字、特殊文字が含まれている必要があります。

  • validate_password_special_char_count:少なくとも含めたいパスワードの特殊文字の数。

4、BenchmarkSQLテスト

実行ディレクトリのコマンド

4.1、プリロードされたデータベース

$ ./runDatabaseBuild.sh props.mysql

真ん中は少し遅いかもしれません、辛抱強く

4.2テスト

$ ./runBenchmark.sh props.mysql

4.3、空のデータベース

$ ./runDatabaseDestroy.sh props.mysql

V.参考文献

ベンチマークSQL5.0は、MySQLのTPC-Cテストをサポートしています

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