YCSB工具原理重点内容解读(二)

打印 上一主题 下一主题

主题 921|帖子 921|积分 2763

支持insert和批量insert,待研究怎么设置
一、建表

(1)默认表名为usertable
  1. CREATE TABLE usertable (
  2.     YCSB_KEY VARCHAR(255) PRIMARY KEY,
  3.     FIELD0 TEXT, FIELD1 TEXT,
  4.     FIELD2 TEXT, FIELD3 TEXT,
  5.     FIELD4 TEXT, FIELD5 TEXT,
  6.     FIELD6 TEXT, FIELD7 TEXT,
  7.     FIELD8 TEXT, FIELD9 TEXT,<br>    FIELD10 VARCHAR(100)     #YCSB的默认字段长度是100
复制代码
  1. );
复制代码
关键要点:

  • 主键字段需要命名为YCSB_KEY
  • 其他字段需要以FIELD作为前缀,并从1开始计数
  • 添加与您在YCSB核心属性中指定的相同数量的字段,默认为10。
  • 字段的类型并不那么重要,只要它们可以接受你在YCSB核心属性中指定的长度的字符串,默认值是100;
  • prepare测试时会优先判断是否存在usertable表,存在则执行truncate清空表数据,若不存在则新建usertable表;
(2)如果自己另起了表名,如student,则运行时增加 -p table=student即可,此时运行脚本就会读取student的表
  1. ./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<br> -p recordcount=1000 -p threads=5 -p operationcount=1000 -p table=usertable2
复制代码
二、JDBC连接的重要默认值
  1. #直接从源码中可查内容
  2. private static final String TABLE_NAME = "USERTABLE";
  3. private static final int FIELD_LENGTH = 32;
  4. private static final String FIELD_PREFIX = "FIELD";
  5. private static final String KEY_PREFIX = "user";
  6. private static final String KEY_FIELD = "YCSB_KEY";
  7. private static final int NUM_FIELDS = 3;
复制代码
三、配置参数(db.properties)

若是MySQL,则从jdbc-binding--->conf--->则可看到配置文件
  1. db.driver=com.mysql.jdbc.Driver                # The JDBC driver class to use.
  2. db.url=jdbc:mysql://127.0.0.1:3306/ycsb        # The Database connection URL.
  3. db.user=admin                                # User name for the connection.
  4. db.passwd=admin                                # Password for the connection.
  5. db.batchsize=1000             # The batch size for doing batched inserts. Defaults to 0. Set to >0 to use batching.
  6. jdbc.fetchsize=10                            # The JDBC fetch size hinted to the driver.
  7. jdbc.autocommit=true                        # The JDBC connection auto-commit property for the driver.
  8. jdbc.batchupdateapi=false     # Use addBatch()/executeBatch() JDBC methods instead of executeUpdate() for writes (default: false)
  9. db.batchsize=1000             # The number of rows to be batched before commit (or executeBatch() when jdbc.batchupdateapi=true)
复制代码
四、workload支持的配置参数详解
  1. Fieldcount:记录中字段的数量(默认值:10)
  2. Fieldlength:每个字段的大小(默认:100)
  3. Minfieldlength:每个字段的最小大小(默认值:1)
  4. Readallfields:应该读取所有字段(true)或只读取一个字段(false)(默认值:true)
  5. Writeallfields:应该更新和读取/修改/写入更新所有字段(true)或只是一个(false)(默认:false)
  6. Readproportion:应该读取的操作的比例(默认:0.95)
  7. Updateproportion:操作的更新比例(默认值:0.05)
  8. Insertproportion:应该插入的操作的比例(默认:0)
  9. Scanproportion:应该扫描的操作的比例(默认值:0)
  10. Readmodifywriteproportion:读取记录、修改记录、写回记录的操作比例(默认:0)
  11. Requestdistribution:应该使用什么分布来选择要操作的记录-uniform(均匀分布), zipfian, hotspot, sequential, exponential or latest(数据越新访问概率越高)(默认:uniform)
  12. Minscanlength:扫描的最小范围(默认值:1)
  13. Maxscanlength:扫描的最大范围(默认:1000)
  14. Scanlengthdistribution:对于扫描,应该使用什么分布来选择要扫描的记录数量,对于每次扫描,在1和maxscanlength之间(默认:uniform)
  15. insertstart:用于并行加载和运行,为这个YCSB实例定义起始记录(默认值:0)
  16. insertcount:对于并行加载和运行,定义这个YCSB实例的记录数量(默认:recordcount)
  17. 零填充:用于生成与字符串排序顺序兼容的记录序列,以0填充记录号。控制用于填充的0的数量。(默认值:1)
  18. 例如,对于第5行,如果zeropadding=1,则得到' user5 '键,如果zeropading=8,则得到' user00000005 '键。为了看到它的影响,零加法需要大于记录数中的位数。
  19. Insertorder:记录是按键顺序插入(" ordered "),还是按散列顺序插入(" hashed ")(默认值:hashed)
  20. Fieldnameprefix:字段名的前缀,较短的可能会减少所需的存储大小(默认:" field ")<br>core_workload_insertion_retry_limit:插入失败重试次数,默认 0<br><em id="__mceDel">core_workload_insertion_retry_interval:重试间隔(秒),默认 3</em>
复制代码
 五、相关SQL语法

insert
  1. INSERT IGNORE INTO table ([columns]) VALUES(...)
  2. INSERT IGNORE INTO table ([columns]) VALUES (?, ?, ?...), (?, ?, ?), ...
复制代码
read
  1. SELECT * FROM %s %s WHERE YCSB_KEY = ?
  2. SELECT * FROM %s %s WHERE YCSB_KEY IN (.....)
复制代码
scan
  1. SELECT * FROM %s %s WHERE YCSB_KEY >= ? LIMIT ?
复制代码
update
  1. update tablename set Field[x]=? where YCSB_KEY = ?
复制代码
delete
  1. DELETE FROM %s WHERE YCSB_KEY = ?
  2. DELETE FROM %s WHERE YCSB_KEY IN (....)
复制代码
 
[/td][/tr][/table]
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

卖不甜枣

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表