EmbeddedRocksDB 引擎

这个引擎允许 ClickHouse 与 rocksdb 进行集成。

创建一张表

  1. CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
  2. (
  3. name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1],
  4. name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2],
  5. ...
  6. ) ENGINE = EmbeddedRocksDB PRIMARY KEY(primary_key_name)

必要参数:

  • primary_key_name – any column name in the column list.
  • 必须指定 primary key, 仅支持主键中的一个列. 主键将被序列化为二进制的rocksdb key.
  • 主键以外的列将以相应的顺序在二进制中序列化为rocksdb值.
  • 带有键 equalsin 过滤的查询将被优化为从 rocksdb 进行多键查询.

示例:

  1. CREATE TABLE test
  2. (
  3. `key` String,
  4. `v1` UInt32,
  5. `v2` String,
  6. `v3` Float32,
  7. )
  8. ENGINE = EmbeddedRocksDB
  9. PRIMARY KEY key

指标

还有一个system.rocksdb 表, 公开rocksdb的统计信息:

  1. SELECT
  2. name,
  3. value
  4. FROM system.rocksdb
  5. ┌─name──────────────────────┬─value─┐
  6. no.file.opens 1
  7. number.block.decompressed 1
  8. └───────────────────────────┴───────┘

配置

你能修改任何rocksdb options 配置,使用配置文件:

  1. <rocksdb>
  2. <options>
  3. <max_background_jobs>8</max_background_jobs>
  4. </options>
  5. <column_family_options>
  6. <num_levels>2</num_levels>
  7. </column_family_options>
  8. <tables>
  9. <table>
  10. <name>TABLE</name>
  11. <options>
  12. <max_background_jobs>8</max_background_jobs>
  13. </options>
  14. <column_family_options>
  15. <num_levels>2</num_levels>
  16. </column_family_options>
  17. </table>
  18. </tables>
  19. </rocksdb>

原始文章