嵌入式RocksDB引擎
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 value
。 - 使用key
equals
或in
过滤的查询将优化为从rocksdb
进行多key查找。
引擎设置:
optimize_for_bulk_insert
– 表被优化用于批量插入(插入管道将创建SST文件并导入到rocksdb数据库,而不是写入memtables);默认值: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
时,将在可能的情况下使用直接连接,否则使用哈希连接。