支持insert和批量insert,待研究怎么設定
一、建表
(1)默認表名為usertable
CREATE TABLE usertable ( YCSB_KEY VARCHAR(255) PRIMARY KEY, FIELD0 TEXT, FIELD1 TEXT, FIELD2 TEXT, FIELD3 TEXT, FIELD4 TEXT, FIELD5 TEXT, FIELD6 TEXT, FIELD7 TEXT, FIELD8 TEXT, FIELD9 TEXT,
FIELD10 VARCHAR(100) #YCSB的默認欄位長度是100
);
關鍵要點:
- 主鍵欄位需要命名為YCSB_KEY
- 其他欄位需要以FIELD作為前綴,并從1開始計數
- 添加與您在YCSB核心屬性中指定的相同數量的欄位,默認為10,
- 欄位的型別并不那么重要,只要它們可以接受你在YCSB核心屬性中指定的長度的字串,默認值是100;
- prepare測驗時會優先判斷是否存在usertable表,存在則執行truncate清空表資料,若不存在則新建usertable表;
(2)如果自己另起了表名,如student,則運行時增加 -p table=student即可,此時運行腳本就會讀取student的表
./bin/ycsb load jdbc -s -P workloads/workloadd -cp /syw_test/ycsb-0.17.0/jdbc-binding/lib/mysql-connector-java-5.1.46.jar
-p recordcount=1000 -p threads=5 -p operationcount=1000 -p table=usertable2
二、JDBC連接的重要默認值
#直接從原始碼中可查內容 private static final String TABLE_NAME = "USERTABLE"; private static final int FIELD_LENGTH = 32; private static final String FIELD_PREFIX = "FIELD"; private static final String KEY_PREFIX = "user"; private static final String KEY_FIELD = "YCSB_KEY"; private static final int NUM_FIELDS = 3;
三、配置引數(db.properties)
若是MySQL,則從jdbc-binding--->conf--->則可看到組態檔
db.driver=com.mysql.jdbc.Driver # The JDBC driver class to use. db.url=jdbc:mysql://127.0.0.1:3306/ycsb # The Database connection URL. db.user=admin # User name for the connection. db.passwd=admin # Password for the connection. db.batchsize=1000 # The batch size for doing batched inserts. Defaults to 0. Set to >0 to use batching. jdbc.fetchsize=10 # The JDBC fetch size hinted to the driver. jdbc.autocommit=true # The JDBC connection auto-commit property for the driver. jdbc.batchupdateapi=false # Use addBatch()/executeBatch() JDBC methods instead of executeUpdate() for writes (default: false) db.batchsize=1000 # The number of rows to be batched before commit (or executeBatch() when jdbc.batchupdateapi=true)
四、workload支持的配置引數詳解
Fieldcount:記錄中欄位的數量(默認值:10) Fieldlength:每個欄位的大小(默認:100) Minfieldlength:每個欄位的最小大小(默認值:1) Readallfields:應該讀取所有欄位(true)或只讀取一個欄位(false)(默認值:true) Writeallfields:應該更新和讀取/修改/寫入更新所有欄位(true)或只是一個(false)(默認:false) Readproportion:應該讀取的操作的比例(默認:0.95) Updateproportion:操作的更新比例(默認值:0.05) Insertproportion:應該插入的操作的比例(默認:0) Scanproportion:應該掃描的操作的比例(默認值:0) Readmodifywriteproportion:讀取記錄、修改記錄、寫回記錄的操作比例(默認:0) Requestdistribution:應該使用什么分布來選擇要操作的記錄-uniform(均勻分布), zipfian, hotspot, sequential, exponential or latest(資料越新訪問概率越高)(默認:uniform) Minscanlength:掃描的最小范圍(默認值:1) Maxscanlength:掃描的最大范圍(默認:1000) Scanlengthdistribution:對于掃描,應該使用什么分布來選擇要掃描的記錄數量,對于每次掃描,在1和maxscanlength之間(默認:uniform) insertstart:用于并行加載和運行,為這個YCSB實體定義起始記錄(默認值:0) insertcount:對于并行加載和運行,定義這個YCSB實體的記錄數量(默認:recordcount) 零填充:用于生成與字串排序順序兼容的記錄序列,以0填充記錄號,控制用于填充的0的數量,(默認值:1) 例如,對于第5行,如果zeropadding=1,則得到' user5 '鍵,如果zeropading=8,則得到' user00000005 '鍵,為了看到它的影響,零加法需要大于記錄數中的位數, Insertorder:記錄是按鍵順序插入(" ordered "),還是按散列順序插入(" hashed ")(默認值:hashed) Fieldnameprefix:欄位名的前綴,較短的可能會減少所需的存盤大小(默認:" field ")
core_workload_insertion_retry_limit:插入失敗重試次數,默認 0
core_workload_insertion_retry_interval:重試間隔(秒),默認 3
五、相關SQL語法
insert
INSERT IGNORE INTO table ([columns]) VALUES(...)
INSERT IGNORE INTO table ([columns]) VALUES (?, ?, ?...), (?, ?, ?), ...
read
SELECT * FROM %s %s WHERE YCSB_KEY = ?
SELECT * FROM %s %s WHERE YCSB_KEY IN (.....)
scan
SELECT * FROM %s %s WHERE YCSB_KEY >= ? LIMIT ?
update
update tablename set Field[x]=? where YCSB_KEY = ?
delete
DELETE FROM %s WHERE YCSB_KEY = ?
DELETE FROM %s WHERE YCSB_KEY IN (....)
|
1.作者:Syw 2.出處:http://www.cnblogs.com/syw20170419/ 3.本文著作權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利, 4.如果文中有什么錯誤,歡迎指出,以免更多的人被誤導, |
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/548192.html
標籤:其他
下一篇:P2 MySQL三層結構
