EmbeddedRocksDB 引擎
Not supported in ClickHouse Cloud
此引擎允许将 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
值。 - 使用键
equals
或in
过滤的查询将优化为从rocksdb
进行多重键查找。
引擎设置:
optimize_for_bulk_insert
– 表为批量插入优化(插入管道将创建 SST 文件并导入到 rocksdb 数据库,而不是写入内存表);默认值:1
。bulk_insert_block_size
- 批量插入创建的 SST 文件的最小大小(以行数计算);默认值:1048449
。
示例:
指标
还有一个 system.rocksdb
表,公开 RocksDB 统计信息:
配置
您还可以使用配置更改任何 rocksdb 选项:
默认情况下,简单近似计数优化已关闭,这可能会影响 count()
查询的性能。要启用此优化,请设置 optimize_trivial_approximate_count_query = 1
。此外,该设置会影响 EmbeddedRocksDB 引擎的 system.tables
,启用该设置以查看 total_rows
和 total_bytes
的近似值。
支持的操作
插入
当新行插入到 EmbeddedRocksDB
时,如果键已存在,则值将被更新;否则,将创建一个新键。
示例:
删除
可以使用 DELETE
查询或 TRUNCATE
删除行。
更新
可以使用 ALTER TABLE
查询更新值。主键不能被更新。
连接
支持与 EmbeddedRocksDB 表的特殊 direct
连接。此直接连接避免在内存中形成哈希表,而是直接从 EmbeddedRocksDB 中访问数据。
对于大型连接,您可能会看到直接连接的内存使用量大大降低,因为不会创建哈希表。
要启用直接连接:
提示
当 join_algorithm
设置为 direct, hash
时,将尽可能使用直接连接,否则使用哈希连接。