Pular para o conteúdo principal
Este motor permite integrar o ClickHouse ao RocksDB.

Criando uma tabela

Parâmetros do motor:
  • ttl - tempo de vida dos valores. O TTL é aceito em segundos. Se o TTL for 0, uma instância regular do RocksDB será usada (sem TTL).
  • rocksdb_dir - caminho para o diretório de um RocksDB existente ou caminho de destino do RocksDB criado. Abre a tabela com o rocksdb_dir especificado.
  • read_only - quando read_only é definido como true, o modo somente leitura é usado. Para armazenamento com TTL, a compactação não será acionada (nem manual nem automaticamente), portanto nenhuma entrada expirada será removida.
  • primary_key_name – qualquer nome de coluna na lista de colunas.
  • a primary key deve ser especificada; ela oferece suporte a apenas uma coluna na chave primária. A chave primária será serializada em formato binário como uma rocksdb key.
  • colunas diferentes da chave primária serão serializadas em formato binário como valor rocksdb, na ordem correspondente.
  • consultas com filtragem por chave equals ou in serão otimizadas para busca de várias chaves no rocksdb.
Configurações do motor:
  • optimize_for_bulk_insert – A tabela é otimizada para inserções em massa (o pipeline de insert criará arquivos SST e os importará para o banco de dados rocksdb, em vez de gravar em memtables); valor padrão: 1.
  • bulk_insert_block_size - Tamanho mínimo dos arquivos SST (em número de linhas) criados por inserção em massa; valor padrão: 1048449.
Exemplo:

Métricas

Há também a tabela system.rocksdb, que expõe estatísticas do RocksDB:

Configuração

Você também pode alterar qualquer uma das opções do RocksDB usando config:
Por padrão, a otimização trivial de contagem aproximada vem desativada, o que pode afetar o desempenho das consultas count(). Para ativar essa otimização, defina optimize_trivial_approximate_count_query = 1. Além disso, essa configuração afeta system.tables para o motor EmbeddedRocksDB; ative essa configuração para ver valores aproximados de total_rows e total_bytes.

Operações suportadas

Inserções

Quando novas linhas forem inseridas em EmbeddedRocksDB, se a chave já existir, o valor será atualizado; caso contrário, uma nova chave será criada. Exemplo:

Exclusões

As linhas podem ser excluídas com a consulta DELETE ou com TRUNCATE.

Atualizações

Os valores podem ser atualizados por meio da consulta ALTER TABLE. A chave primária não pode ser atualizada.

Junções

Há suporte a uma direct join especial com tabelas EmbeddedRocksDB. Essa junção direta evita a criação de uma tabela hash na memória e acessa os dados diretamente do EmbeddedRocksDB. Em junções grandes, você pode observar um uso de memória muito menor com junções diretas, porque a tabela hash não é criada. Para habilitar junções diretas:
Quando join_algorithm estiver definido como direct, hash, as junções diretas serão usadas sempre que possível; caso contrário, será usado hash.

Exemplo

Criar e popular uma tabela EmbeddedRocksDB
Crie e popule uma tabela para fazer junção com a tabela rdb
Defina o algoritmo de junção como direct
Um INNER JOIN

Mais informações sobre junções

Última modificação em 1 de julho de 2026