ClickHouse / ClickHouse/clickhouse-java

Slow deserialization of DateTime values

Đang mở
#715 2 bình luận 0 reaction 0 người được giao Xem trên GitHub
area:data-type performance test
Ngôn ngữ chính
Java
Star
1.6k
Fork
636
Merge trung bình
2 ngày 23 giờ
Pull request đã merge (30 ngày)
29

Mô tả

Deserialization of DateTime value seems very slow comparing to string and number.

Below are benchmarks against ClickHouse 21.8.
```
Benchmark (client) (connection) (statement) Mode Cnt Score Error Units
Query.select10kStringRows clickhouse-jdbc(0.3.1-patch) reuse normal thrpt 20 55.892 ± 3.277 ops/s
Query.select10kTimestampRows clickhouse-jdbc(0.3.1-patch) reuse normal thrpt 20 10.243 ± 0.627 ops/s
Query.select10kUInt64Rows clickhouse-jdbc(0.3.1-patch) reuse normal thrpt 20 54.420 ± 4.530 ops/s
Query.select10kStringRows clickhouse-native-jdbc-shaded(2.5.6) reuse normal thrpt 20 73.846 ± 5.486 ops/s
Query.select10kTimestampRows clickhouse-native-jdbc-shaded(2.5.6) reuse normal thrpt 20 83.446 ± 5.502 ops/s
Query.select10kUInt64Rows clickhouse-native-jdbc-shaded(2.5.6) reuse normal thrpt 20 83.512 ± 4.226 ops/s
```

`clickhouse-grpc-client`(0.3.2) with grpc compression disabled on server:
```
Benchmark (connection) (format) (mode) (protocol) (transport) Mode Cnt Score Error Units
Query.select10kStringRows reuse RowBinaryWithNamesAndTypes sync GRPC netty thrpt 20 82.786 ± 4.334 ops/s
Query.select10kStringRows reuse RowBinaryWithNamesAndTypes sync GRPC okhttp thrpt 20 70.753 ± 4.797 ops/s
Query.select10kStringRows reuse TabSeparatedWithNamesAndTypes sync GRPC netty thrpt 20 60.482 ± 4.466 ops/s
Query.select10kStringRows reuse TabSeparatedWithNamesAndTypes sync GRPC okhttp thrpt 20 52.046 ± 2.540 ops/s
Query.select10kTimestampRows reuse RowBinaryWithNamesAndTypes sync GRPC netty thrpt 20 99.147 ± 5.190 ops/s
Query.select10kTimestampRows reuse RowBinaryWithNamesAndTypes sync GRPC okhttp thrpt 20 86.454 ± 5.485 ops/s
Query.select10kTimestampRows reuse TabSeparatedWithNamesAndTypes sync GRPC netty thrpt 20 48.739 ± 3.207 ops/s
Query.select10kTimestampRows reuse TabSeparatedWithNamesAndTypes sync GRPC okhttp thrpt 20 29.759 ± 1.812 ops/s
Query.select10kUInt64Rows reuse RowBinaryWithNamesAndTypes sync GRPC netty thrpt 20 121.422 ± 6.465 ops/s
Query.select10kUInt64Rows reuse RowBinaryWithNamesAndTypes sync GRPC okhttp thrpt 20 73.226 ± 3.930 ops/s
Query.select10kUInt64Rows reuse TabSeparatedWithNamesAndTypes sync GRPC netty thrpt 20 66.267 ± 4.822 ops/s
Query.select10kUInt64Rows reuse TabSeparatedWithNamesAndTypes sync GRPC okhttp thrpt 20 56.022 ± 4.188 ops/s
```

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Bắt đầu bằng cách tái hiện benchmark Query.select10kTimestampRows và so sánh các kết quả DateTime của nó với các trường hợp string và UInt64 trên RowBinaryWithNamesAndTypes và TabSeparatedWithNamesAndTypes. Xem xét đường dẫn giải tuần tự được các client Java sử dụng và công việc liên quan được thể hiện bởi pull request #736; hoàn thành nghĩa là xác định và xử lý khoảng cách thông lượng của DateTime bằng bằng chứng benchmark.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
grpc, java
Lĩnh vực
performance
Loại issue
Lỗi
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Cần làm rõ
Mức phù hợp với người mới
25/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.