Skip to content

Commit c11a581

Browse files
committed
added JDBC benchmarks
1 parent 6d06aad commit c11a581

File tree

4 files changed

+34
-12
lines changed

4 files changed

+34
-12
lines changed

performance/README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,5 @@ Other options:
4343
- "writer" - Serializer - serialization only logic benchmarks
4444
- "reader" - DeSerilalizer - deserialization only logic benchmarks
4545
- "mixed" - MixedWorkload
46-
46+
- "jq" - JDBCQuery - query operations using JDBC
47+
- "ji" - JDBCInsert - insert operation using JDBC

performance/src/main/java/com/clickhouse/benchmark/BenchmarkRunner.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,8 @@ private static Map<String, String> buildBenchmarkFlags() {
9595
map.put("reader", Deserializers.class.getName());
9696
map.put("writer", Serializers.class.getName());
9797
map.put("mixed", MixedWorkload.class.getName());
98+
map.put("jq", JDBCQuery.class.getName());
99+
map.put("ji", JDBCInsert.class.getName());
98100
return map;
99101
}
100102

performance/src/main/java/com/clickhouse/benchmark/clients/BenchmarkBase.java

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,31 @@
44
import com.clickhouse.benchmark.data.FileDataSet;
55
import com.clickhouse.benchmark.data.SimpleDataSet;
66
import com.clickhouse.benchmark.data.SyntheticDataSet;
7-
import com.clickhouse.client.*;
7+
import com.clickhouse.client.ClickHouseClient;
8+
import com.clickhouse.client.ClickHouseCredentials;
9+
import com.clickhouse.client.ClickHouseNode;
10+
import com.clickhouse.client.ClickHouseNodeSelector;
11+
import com.clickhouse.client.ClickHouseProtocol;
12+
import com.clickhouse.client.ClickHouseResponse;
813
import com.clickhouse.client.api.Client;
14+
import com.clickhouse.client.api.ClientConfigProperties;
915
import com.clickhouse.client.api.enums.Protocol;
1016
import com.clickhouse.client.api.insert.InsertResponse;
1117
import com.clickhouse.client.api.query.GenericRecord;
18+
import com.clickhouse.client.config.ClickHouseDefaults;
1219
import com.clickhouse.data.ClickHouseDataProcessor;
1320
import com.clickhouse.data.ClickHouseFormat;
1421
import com.clickhouse.data.ClickHouseOutputStream;
1522
import com.clickhouse.data.ClickHouseRecord;
1623
import com.clickhouse.data.format.ClickHouseRowBinaryProcessor;
1724
import com.clickhouse.jdbc.ClickHouseDriver;
18-
import org.openjdk.jmh.annotations.*;
25+
import com.clickhouse.jdbc.internal.DriverProperties;
26+
import org.openjdk.jmh.annotations.Level;
27+
import org.openjdk.jmh.annotations.Param;
28+
import org.openjdk.jmh.annotations.Scope;
29+
import org.openjdk.jmh.annotations.Setup;
30+
import org.openjdk.jmh.annotations.State;
31+
import org.openjdk.jmh.annotations.TearDown;
1932
import org.slf4j.Logger;
2033
import org.slf4j.LoggerFactory;
2134

@@ -30,7 +43,13 @@
3043
import java.util.List;
3144
import java.util.Properties;
3245

33-
import static com.clickhouse.benchmark.TestEnvironment.*;
46+
import static com.clickhouse.benchmark.TestEnvironment.DB_NAME;
47+
import static com.clickhouse.benchmark.TestEnvironment.cleanupEnvironment;
48+
import static com.clickhouse.benchmark.TestEnvironment.getPassword;
49+
import static com.clickhouse.benchmark.TestEnvironment.getServer;
50+
import static com.clickhouse.benchmark.TestEnvironment.getUsername;
51+
import static com.clickhouse.benchmark.TestEnvironment.isCloud;
52+
import static com.clickhouse.benchmark.TestEnvironment.setupEnvironment;
3453

3554
@State(Scope.Benchmark)
3655
public class BenchmarkBase {
@@ -264,8 +283,9 @@ private static String jdbcURLV2(boolean isCloud) {
264283

265284
protected static Connection getJdbcV1() {
266285
Properties properties = new Properties();
267-
properties.put("user", getUsername());
268-
properties.put("password", getPassword());
286+
properties.put(ClickHouseDefaults.USER.getKey(), getUsername());
287+
properties.put(ClickHouseDefaults.PASSWORD.getKey(), getPassword());
288+
properties.put(ClickHouseDefaults.DATABASE.getKey(), DB_NAME);
269289

270290
Connection jdbcV1 = null;
271291
String jdbcURL = jdbcURLV1(isCloud());
@@ -280,8 +300,10 @@ protected static Connection getJdbcV1() {
280300

281301
protected static Connection getJdbcV2() {
282302
Properties properties = new Properties();
283-
properties.put("user", getUsername());
284-
properties.put("password", getPassword());
303+
properties.put(ClientConfigProperties.USER.getKey(), getUsername());
304+
properties.put(ClientConfigProperties.PASSWORD.getKey(), getPassword());
305+
properties.put(DriverProperties.BETA_ROW_BINARY_WRITER.getKey(), "true");
306+
properties.put(ClientConfigProperties.DATABASE.getKey(), DB_NAME);
285307

286308
Connection jdbcV2 = null;
287309
String jdbcURL = jdbcURLV2(isCloud());

performance/src/main/java/com/clickhouse/benchmark/clients/JDBCInsert.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@
1212
import java.util.List;
1313
import java.util.stream.Collectors;
1414

15-
import static com.clickhouse.benchmark.TestEnvironment.DB_NAME;
16-
1715
public class JDBCInsert extends BenchmarkBase {
1816
private static final Logger LOGGER = LoggerFactory.getLogger(JDBCInsert.class);
1917
@TearDown(Level.Invocation)
@@ -39,9 +37,8 @@ public void verifyRowsInsertedAndCleanup(DataState dataState) {
3937
}
4038
void insetData(Connection connection, DataState dataState) throws SQLException {
4139
int size = dataState.dataSet.getSchema().getColumns().size();
42-
String names = dataState.dataSet.getSchema().getColumns().stream().map(column -> column.getColumnName()).collect(Collectors.joining(","));
4340
String values = dataState.dataSet.getSchema().getColumns().stream().map(column -> "?").collect(Collectors.joining(","));
44-
String sql = String.format("INSERT INTO `%s`.`%s` (%s) VALUES (%s)", DB_NAME ,dataState.tableNameEmpty, names, values);
41+
String sql = String.format("INSERT INTO `%s` VALUES (%s)", dataState.tableNameEmpty, values);
4542
LOGGER.info("SQL: " + sql);
4643
PreparedStatement preparedStatement = connection.prepareStatement(sql);
4744
for (List<Object> data : dataState.dataSet.getRowsOrdered()) {

0 commit comments

Comments
 (0)