RocksDB 想必大家并不陌生,它是一款高性能的嵌入式KV数据库,是众多自研数据库背后的男人。
现在我们可以利用 EmbeddedRocksDB 表引擎,直接在 ClickHouse 中使用 RocksDB,非常适用 KV 查询的场景。
使用的方法非常简单,接下来就用一个简短示例说明,创建一张测试表,使用 EmbeddedRocksDB 引擎:
CREATE TABLE test_rocksDB
(
`A` UInt64,
`B` String
)
ENGINE = EmbeddedRocksDB
PRIMARY KEY A
必须指定 PRIMARY KEY , 它表示 RocksDB Key
接着写入 1亿 测试数据:
INSERT INTO test_rocksDB
SELECT
number,
toString(cityHash64(number))
FROM numbers(100000000)
查看表文件,会发现直接是 RocksDB 的存储文件:
接着就可以查询了:
SELECT count()
FROM
(
SELECT *
FROM test_rocksDB
WHERE A IN (
SELECT toUInt64(rand64() % 100000000)
FROM numbers(10000)
)
)
Query id: 96f56029-9201-4985-bf9f-8d714a3bc1bd
┌─count()─┐
│ 10000 │
└─────────┘
1 rows in set. Elapsed: 0.221 sec. Processed 10.00 thousand rows, 364.02 KB (45.23 thousand rows/s., 1.65 MB/s.)
我用 MergeTree 做同样的查询,查询的实效差距不大(RocksDB适用默认参数),但是MergeTree扫描的数据是 RocksDB 表引擎的5000倍
# RocksDB
1 rows in set. Elapsed: 0.221 sec. Processed 10.00 thousand rows, 364.02 KB (45.23 thousand rows/s., 1.65 MB/s.)
#MergeTree
1 rows in set. Elapsed: 0.213 sec. Processed 56.58 million rows, 452.67 MB (265.18 million rows/s., 2.12 GB/s.)
本文分享自 ClickHouse的秘密基地 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!