數據庫測試工具dbmonster可以用來測試數據庫的性能,本文以MySQL數據庫為例,測試一下它的INT型主鍵、外鍵以及varchar型數據的生成,接下來我們就開始介紹這一過程。
前期准備:
准備使用MySQL用來做測試,如果你還沒有安裝mysql請先安裝,然後下載mysql jdbc驅動,解壓後將mysql-connector-java-5.1.17-bin.jar 文件拷貝到dbmonster-core-1.0.3\lib目錄下。
創建數據庫test,新建表parent,child
- CREATE DATABASE test;
- CREATE TABLE parent
- (
- id INT NOT NULL,
- PRIMARY KEY (id)
- ) ENGINE=INNODB;
- CREATE TABLE child
- (
- id INT, parent_id INT,
- childname VARCHAR(20) DEFAULT NULL,
- INDEX par_ind (parent_id),
- PRIMARY KEY (id),
- FOREIGN KEY (parent_id) REFERENCES parent(id)
- ON DELETE CASCADE
- ) ENGINE=INNODB;
修改配置文件dbmonster.properties:
- dbmonster.jdbc.driver=com.mysql.jdbc.Driver
- dbmonster.jdbc.url=jdbc:mysql://192.168.159.144:3306?dbmonster?charSet=iso-8859-2
- dbmonster.jdbc.username=root
- dbmonster.jdbc.password=123456
- dbmonster.jdbc.transaction.size=50
- # for Oracle and other schema enabled databases
- dbmonster.jdbc.schema=test
- # maximal number of (re)tries
- dbmonster.max-tries=1000
- # default rows number for SchemaGrabber
- dbmonster.rows=1000
- # progres monitor class
- dbmonster.progress.monitor=pl.kernelpanic.dbmonster.ProgressMonitorAdapter
DBMonster的schema文件
schema 文件描述了產生數據的規則,在DBMonster中,數據的產生是通過Generator生成的,DBMonster中缺省的數據 Generator包括兩個Key Generator用於產生不重復的數據,分別為MaxKeyGenerator和StringKeyGenerator)和 10 個Data Generator。以下簡單說明一下Data Generator的使用。
BinaryGenerator用於從外部文件中獲取二進制數據並插入相應字段,該Generator有兩個屬性,分別為file和nulls,file屬性描述數據來源,而nulls屬性則給出該字段生成null的幾率。
BooleanGenerator用於產生bool型數據,該Generator包括兩個屬性,分別為probability和nulls,probability屬性描述產生true值數據的幾率,nulls屬性給出生成null的幾率。
ConstantGenerator用於產生固定值的數據,該Generator只有一個屬性constant,給出要插入數據庫的值;
DateTimeGenerator 用於產生DateTime型數據,該Generator包括四個屬性,分別是startDate,endDate,returnedType和 nulls, startDate描述開始時間,endDate描述終止時間,格式為“yyyy-mm-dd hh24:MM:ss”;returnedType描述生成數據的類型,可以為date、time或是timestamp;
DirectoryGenerator 用於根據本地文件字典)的條目向數據庫插入數據,該Generator包括兩個屬性,分別為dictFile和unique,dictFile指明字典 文件所在的位置,unique指明產生的數據是unique的還是random的;
ForeignKeyGenerator用於為設置了外鍵的字段生成數據,該Generator包含兩個屬性,分別是tableName和columnName,tableName指明外鍵引用的表名,columnName指明外鍵引用的字段名;
NullGenerator用於產生null類型的數據,該Generator不帶任何參數只產生null);
NumberGenerator 用戶產生數值類型的數據,該Generator包括5個屬性,分別是minValue、maxValue、returnedType、scale和 nulls。其中,minValue和maxValue分別給出產生值的下邊界和上邊界;returnedType給出生成數據的類型,可以是 short、integer、long、float、double和numeric類型;scale指明小數位數;nulls表示產生null的幾率;
StringGenerator 用於產生字符串類型的數據,該Generator包括5個屬性,分別是minLength、maxLength、allowSpaces、 excludeChars和nulls。其中,minLength和maxLength限定了字符串長度;allowSpaces控制字符串中是否包含空 格;excludeChars排除產生字符串時不使用的字符;nulls表示產生null的幾率;
修改dbmonster.properties文件:
注意:
ForeignKeyGenerator中tableName,columnName指的是主表的表名和字段名。
現在就可以使用dbmonster來創建隨機數據了。命令如下:dbmonster.bat -c dbmonster.proprities -s dbmonster-schema.xml
執行成功截圖:
child表部分數據截圖:
關於數據庫測試工具dbmonster的使用就介紹到這裡了,希望本次的介紹能夠對您有所收獲!