跳转到主要内容
该引擎可将 ClickHouse 与 RocksDB 集成。

创建表

引擎参数:
  • ttl - 值的生存时间。TTL 以秒为单位。如果 TTL 为 0,则使用常规的 RocksDB 实例 (不启用 TTL) 。
  • rocksdb_dir - 已存在的 RocksDB 的目录路径,或新创建的 RocksDB 的目标路径。使用指定的 rocksdb_dir 打开表。
  • read_only - 当 read_only 设置为 true 时,将使用只读模式。对于启用了 TTL 的存储,不会触发合并整理 (无论手动还是自动) ,因此不会移除任何已过期条目。
  • primary_key_name – 列列表中的任意列名。
  • primary key 为必填项,并且主键只支持一列。主键会以二进制形式序列化为 rocksdb key
  • 除主键外的列会按对应顺序以二进制形式序列化为 rocksdb 值。
  • 对 key 使用 equalsin 过滤的查询将被优化为从 rocksdb 进行多键查找。
引擎设置:
  • optimize_for_bulk_insert – 表已针对批量插入进行优化 (插入管道会创建 SST 文件并将其导入 rocksdb 数据库,而不是写入 memtables) ;默认值:1
  • bulk_insert_block_size - 通过批量插入创建的 SST 文件的最小大小 (以行数计) ;默认值:1048449
示例:

指标

还有一个 system.rocksdb 表,用于提供 RocksDB 统计信息:

配置

你也可以通过 config 更改任意 RocksDB 选项
默认情况下,简单近似计数优化是关闭的,这可能会影响 count() 查询的性能。要启用此优化, 请将 optimize_trivial_approximate_count_query = 1。此外,此设置还会影响 EmbeddedRocksDB engine 的 system.tables; 启用后,可查看 total_rowstotal_bytes 的近似值。

支持的操作

插入

当向 EmbeddedRocksDB 插入新行时,如果键已存在,则会更新对应的值;否则会创建新键。 示例:

删除

可以使用 DELETE 查询或 TRUNCATE 来删除行。

更新

可以使用 ALTER TABLE 查询来更新值。主键不能更新。

Joins

支持一种适用于 EmbeddedRocksDB 表的特殊 direct join。 这种 direct join 无需在内存中构建哈希表,而是直接从 EmbeddedRocksDB 读取数据。 对于大型 joins,direct joins 的内存使用量可能会显著降低, 因为不需要创建哈希表。 要启用 direct joins:
join_algorithm 设置为 direct, hash 时,会尽可能使用直接 JOIN, 否则使用哈希 JOIN。

示例

创建并向 EmbeddedRocksDB 表插入数据
创建并填充一个可与表 rdb join 的表
将 join 算法设置为 direct
INNER JOIN

JOIN 的更多信息

最后修改于 2026年7月3日