Перейти к основному содержанию
Этот движок позволяет интегрировать ClickHouse с RocksDB.

Создание таблицы

Параметры движка:
  • ttl - время жизни значений. TTL указывается в секундах. Если TTL равен 0, используется обычный экземпляр RocksDB (без TTL).
  • rocksdb_dir - путь к каталогу существующей RocksDB или путь назначения для создаваемой RocksDB. Таблица открывается с указанным rocksdb_dir.
  • read_only - если read_only установлено в true, используется режим только для чтения. Для хранилища с TTL compaction не будет запускаться ни вручную, ни автоматически, поэтому записи с истекшим сроком жизни не будут удаляться.
  • primary_key_name – любое имя столбца в списке столбцов.
  • primary key должен быть указан; поддерживается только один столбец в первичном ключе. Первичный ключ будет сериализован в бинарном виде как rocksdb key.
  • столбцы, кроме первичного ключа, будут сериализованы в бинарном виде как значение rocksdb в соответствующем порядке.
  • запросы с фильтрацией по ключу через equals или in будут оптимизированы в поиск по нескольким ключам в rocksdb.
Настройки движка:
  • optimize_for_bulk_insert – таблица оптимизирована для массовых вставок (конвейер вставки будет создавать SST-файлы и импортировать их в базу данных rocksdb вместо записи в memtables); значение по умолчанию: 1.
  • bulk_insert_block_size - минимальный размер SST-файлов (в строках), создаваемых при массовой вставке; значение по умолчанию: 1048449.
Пример:

Метрики

Также есть таблица system.rocksdb, в которой представлена статистика RocksDB:

Конфигурация

Вы также можете изменить любые параметры RocksDB с помощью config:
По умолчанию оптимизация приблизительного простого подсчёта отключена, что может повлиять на производительность запросов count(). Чтобы включить эту оптимизацию, задайте optimize_trivial_approximate_count_query = 1. Этот параметр также влияет на system.tables для движка EmbeddedRocksDB: включите его, чтобы видеть приблизительные значения total_rows и total_bytes.

Поддерживаемые операции

Вставки

При вставке новых строк в EmbeddedRocksDB, если ключ уже существует, значение обновляется; в противном случае создаётся новый ключ. Пример:

Удаление

Строки можно удалить с помощью запроса DELETE или команды TRUNCATE.

Обновления

Значения можно изменять с помощью запроса ALTER TABLE. Первичный ключ изменять нельзя.

Операции JOIN

Поддерживается специальный direct JOIN с таблицами EmbeddedRocksDB. Этот direct JOIN позволяет избежать создания хеш-таблицы в памяти и обращаться к данным напрямую в EmbeddedRocksDB. При больших JOIN использование памяти при direct JOIN может быть значительно ниже, поскольку хеш-таблица не создаётся. Чтобы включить direct JOIN:
Когда для join_algorithm задано значение direct, hash, по возможности будет использоваться direct JOIN, а в остальных случаях — hash.

Пример

Создайте и заполните таблицу EmbeddedRocksDB
Создайте и заполните таблицу для выполнения JOIN с таблицей rdb
Установите для алгоритма JOIN значение direct
INNER JOIN

Подробнее о JOIN

Последнее изменение 2 июля 2026 г.