Prepare table: usertable
Configure your database and table.
sqlite /home/dpuser/hello.db
建立一張新的表 名為 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 );
Step
- Need Python2!
- Need SQLite JDBC
Add your JDBC Driver to the classpath
There are several ways to do this, but a couple easy methods are to put a copy of your Driver jar in YCSBHOME/jdbc-binding/lib/ or just specify the path to your Driver jar with -cp in your ycsb command.
0.8.0 Getting Started
- obtain ycsb
curl -O --location https://github.com/brianfrankcooper/YCSB/releases/download/0.8.0/ycsb-0.8.0.tar.gz
tar xfvz ycsb-0.8.0.tar.gz
cd ycsb-0.8.0
You will be using the ycsb command to interact with YCSB. Run:
./bin/ycsb
to see the usage.
- load data
./bin/ycsb load jdbc -P workloads/workloada -p db.driver=org.sqlite.JDBC -p db.url=jdbc:sqlite://home/dpuser/hello.db
- run the stress test
./bin/ycsb run jdbc -P workloads/workloada -p db.driver=org.sqlite.JDBC -p db.url=jdbc:sqlite://home/dpuser/hello.db
Example
# Load data ./bin/ycsb load jdbc -P workloads/workloada -p db.driver=org.sqlite.JDBC -p db.url=jdbc:sqlite://home/dpuser/hello.db # Run ./bin/ycsb load jdbc -P workloads/workloada -p db.driver=org.sqlite.JDBC -p db.url=jdbc:sqlite://home/dpuser/hello.db
Loading
(py2)[dpuser@ue03 ycsb-0.8.0]$ /usr/java/latest/bin/java -cp /home/dpuser/YCSB/ycsb-0.8.0/jdbc-binding/conf:/home/dpuser/YCSB/ycsb-0.8.0/conf:/home/dpuser/YCSB/ycsb-0.8.0/lib/core-0.8.0.jar:/home/dpuser/YCSB/ycsb-0.8.0/lib/jackson-core-asl-1.9.4.jar:/home/dpuser/YCSB/ycsb-0.8.0/lib/HdrHistogram-2.1.4.jar:/home/dpuser/YCSB/ycsb-0.8.0/lib/jackson-mapper-asl-1.9.4.jar:/home/dpuser/YCSB/ycsb-0.8.0/jdbc-binding/lib/serp-1.13.1.jar:/home/dpuser/YCSB/ycsb-0.8.0/jdbc-binding/lib/openjpa-lib-2.1.1.jar:/home/dpuser/YCSB/ycsb-0.8.0/jdbc-binding/lib/postgresql-9.4.1208.jre7.jar:/home/dpuser/YCSB/ycsb-0.8.0/jdbc-binding/lib/geronimo-jms_1.1_spec-1.1.1.jar:/home/dpuser/YCSB/ycsb-0.8.0/jdbc-binding/lib/commons-collections-3.2.1.jar:/home/dpuser/YCSB/ycsb-0.8.0/jdbc-binding/lib/openjpa-jdbc-2.1.1.jar:/home/dpuser/YCSB/ycsb-0.8.0/jdbc-binding/lib/sqlite-jdbc-3.8.11.2.jar:/home/dpuser/YCSB/ycsb-0.8.0/jdbc-binding/lib/jdbc-binding-0.8.0.jar:/home/dpuser/YCSB/ycsb-0.8.0/jdbc-binding/lib/openjpa-kernel-2.1.1.jar:/home/dpuser/YCSB/ycsb-0.8.0/jdbc-binding/lib/geronimo-jta_1.1_spec-1.1.1.jar:/home/dpuser/YCSB/ycsb-0.8.0/jdbc-binding/lib/commons-lang-2.4.jar:/home/dpuser/YCSB/ycsb-0.8.0/jdbc-binding/lib/commons-pool-1.5.4.jar com.yahoo.ycsb.Client -db com.yahoo.ycsb.db.JdbcDBClient -P workloads/workloada -p db.driver=org.sqlite.JDBC -p db.url=jdbc:sqlite://home/dpuser/hello.db -load [CLEANUP], MinLatency(us), 348.0 [CLEANUP], MaxLatency(us), 348.0 [CLEANUP], 95thPercentileLatency(us), 348.0 [CLEANUP], 99thPercentileLatency(us), 348.0 [INSERT], Operations, 1000.0 YCSB Client 0.8.0 Command line: -db com.yahoo.ycsb.db.JdbcDBClient -P workloads/workloada -p db.driver=org.sqlite.JDBC -p db.url=jdbc:sqlite://home/dpuser/hello.db -load Loading workload... [INSERT], AverageLatency(us), 95178.688 Starting test. [INSERT], MinLatency(us), 84544.0 [INSERT], MaxLatency(us), 251135.0 Adding shard node URL: jdbc:sqlite://home/dpuser/hello.db [INSERT], 95thPercentileLatency(us), 133503.0 [INSERT], 99thPercentileLatency(us), 165631.0 [INSERT], Return=OK, 1000 Using 1 shards DBWrapper: report latency for each error is false and specific error codes to track for latency are: [] Error in processing insert to table: usertablejava.sql.SQLException: [SQLITE_CONSTRAINT] Abort due to constraint violation (UNIQUE constraint failed: usertable.YCSB_KEY) Error inserting, not retrying any more. number of attempts: 1Insertion Retry Limit: 0 [OVERALL], RunTime(ms), 126.0 [OVERALL], Throughput(ops/sec), 0.0 [CLEANUP], Operations, 1.0 [CLEANUP], AverageLatency(us), 86.0 [CLEANUP], MinLatency(us), 86.0 [CLEANUP], MaxLatency(us), 86.0 [CLEANUP], 95thPercentileLatency(us), 86.0 [CLEANUP], 99thPercentileLatency(us), 86.0 [INSERT-FAILED], Operations, 1.0 [INSERT-FAILED], AverageLatency(us), 4710.0 [INSERT-FAILED], MinLatency(us), 4708.0 [INSERT-FAILED], MaxLatency(us), 4711.0 [INSERT-FAILED], 95thPercentileLatency(us), 4711.0 [INSERT-FAILED], 99thPercentileLatency(us), 4711.0 [INSERT], Operations, 0.0 [INSERT], AverageLatency(us), NaN [INSERT], MinLatency(us), 9.223372036854776E18 [INSERT], MaxLatency(us), 0.0 [INSERT], 95thPercentileLatency(us), 0.0 [INSERT], 99thPercentileLatency(us), 0.0 [INSERT], Return=ERROR, 1
SQLite Output
(py2)[dpuser@ue03 ycsb-0.8.0]$ ./bin/ycsb run jdbc -P workloads/workloada -p db.driver=org.sqlite.JDBC -p db.url=jdbc:sqlite://home/dpuser/hello.db /usr/java/latest/bin/java -cp /home/dpuser/YCSB/ycsb-0.8.0/jdbc-binding/conf:/home/dpuser/YCSB/ycsb-0.8.0/conf:/home/dpuser/YCSB/ycsb-0.8.0/lib/core-0.8.0.jar:/home/dpuser/YCSB/ycsb-0.8.0/lib/jackson-core-asl-1.9.4.jar:/home/dpuser/YCSB/ycsb-0.8.0/lib/HdrHistogram-2.1.4.jar:/home/dpuser/YCSB/ycsb-0.8.0/lib/jackson-mapper-asl-1.9.4.jar:/home/dpuser/YCSB/ycsb-0.8.0/jdbc-binding/lib/serp-1.13.1.jar:/home/dpuser/YCSB/ycsb-0.8.0/jdbc-binding/lib/openjpa-lib-2.1.1.jar:/home/dpuser/YCSB/ycsb-0.8.0/jdbc-binding/lib/postgresql-9.4.1208.jre7.jar:/home/dpuser/YCSB/ycsb-0.8.0/jdbc-binding/lib/geronimo-jms_1.1_spec-1.1.1.jar:/home/dpuser/YCSB/ycsb-0.8.0/jdbc-binding/lib/commons-collections-3.2.1.jar:/home/dpuser/YCSB/ycsb-0.8.0/jdbc-binding/lib/openjpa-jdbc-2.1.1.jar:/home/dpuser/YCSB/ycsb-0.8.0/jdbc-binding/lib/sqlite-jdbc-3.8.11.2.jar:/home/dpuser/YCSB/ycsb-0.8.0/jdbc-binding/lib/jdbc-binding-0.8.0.jar:/home/dpuser/YCSB/ycsb-0.8.0/jdbc-binding/lib/openjpa-kernel-2.1.1.jar:/home/dpuser/YCSB/ycsb-0.8.0/jdbc-binding/lib/geronimo-jta_1.1_spec-1.1.1.jar:/home/dpuser/YCSB/ycsb-0.8.0/jdbc-binding/lib/commons-lang-2.4.jar:/home/dpuser/YCSB/ycsb-0.8.0/jdbc-binding/lib/commons-pool-1.5.4.jar com.yahoo.ycsb.Client -db com.yahoo.ycsb.db.JdbcDBClient -P workloads/workloada -p db.driver=org.sqlite.JDBC -p db.url=jdbc:sqlite://home/dpuser/hello.db -t YCSB Client 0.8.0 Command line: -db com.yahoo.ycsb.db.JdbcDBClient -P workloads/workloada -p db.driver=org.sqlite.JDBC -p db.url=jdbc:sqlite://home/dpuser/hello.db -t Loading workload... Starting test. Adding shard node URL: jdbc:sqlite://home/dpuser/hello.db Using 1 shards DBWrapper: report latency for each error is false and specific error codes to track for latency are: [] [OVERALL], RunTime(ms), 49851.0 [OVERALL], Throughput(ops/sec), 20.059778138853783 [CLEANUP], Operations, 1.0 [CLEANUP], AverageLatency(us), 270.0 [CLEANUP], MinLatency(us), 270.0 [CLEANUP], MaxLatency(us), 270.0 [CLEANUP], 95thPercentileLatency(us), 270.0 [CLEANUP], 99thPercentileLatency(us), 270.0 [READ], Operations, 473.0 [READ], AverageLatency(us), 40.92177589852008 [READ], MinLatency(us), 20.0 [READ], MaxLatency(us), 2947.0 [READ], 95thPercentileLatency(us), 51.0 [READ], 99thPercentileLatency(us), 66.0 [READ], Return=OK, 473 [UPDATE], Operations, 527.0 [UPDATE], AverageLatency(us), 94234.59582542695 [UPDATE], MinLatency(us), 87808.0 [UPDATE], MaxLatency(us), 186111.0 [UPDATE], 95thPercentileLatency(us), 98815.0 [UPDATE], 99thPercentileLatency(us), 161407.0 [UPDATE], Return=OK, 527