支持insert和批量insert,待研究怎麼設置 一、建表 (1)預設表名為usertable CREATE TABLE usertable ( YCSB_KEY VARCHAR(255) PRIMARY KEY, FIELD0 TEXT, FIELD1 TEXT, FIELD2 TEXT, FI ...
支持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.如果文中有什麼錯誤,歡迎指出。以免更多的人被誤導。 |