前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >如何在ClickHouse中使用EmbeddedRocksDB表引擎

如何在ClickHouse中使用EmbeddedRocksDB表引擎

作者头像
Nauu
发布2022-03-29 15:51:15
发布2022-03-29 15:51:15
1.1K00
代码可运行
举报
运行总次数:0
代码可运行

RocksDB 想必大家并不陌生,它是一款高性能的嵌入式KV数据库,是众多自研数据库背后的男人。

现在我们可以利用 EmbeddedRocksDB 表引擎,直接在 ClickHouse 中使用 RocksDB,非常适用 KV 查询的场景。

使用的方法非常简单,接下来就用一个简短示例说明,创建一张测试表,使用 EmbeddedRocksDB 引擎:

代码语言:javascript
代码运行次数:0
复制
CREATE TABLE test_rocksDB
(
    `A` UInt64,
    `B` String
)
ENGINE = EmbeddedRocksDB
PRIMARY KEY A

必须指定 PRIMARY KEY , 它表示 RocksDB Key

接着写入 1亿 测试数据:

代码语言:javascript
代码运行次数:0
复制
INSERT INTO test_rocksDB 
SELECT
    number,
    toString(cityHash64(number))
FROM numbers(100000000)

查看表文件,会发现直接是 RocksDB 的存储文件:

接着就可以查询了:

代码语言:javascript
代码运行次数:0
复制
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倍

代码语言:javascript
代码运行次数:0
复制
# 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.)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ClickHouse的秘密基地 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档