Перейти к основному содержимому
Перейти к основному содержимому

Движок 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 вместо записи в memtables); значение по умолчанию: 1.
  • bulk_insert_block_size - Минимальный размер SST файлов (в терминах строк), создаваемых при массовой вставке; значение по умолчанию: 1048449.

Пример:

Метрики

Существует также таблица system.rocksdb, которая отображает статистику rocksdb:

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

Вы также можете изменить любые параметры rocksdb, используя конфигурацию:

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

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

Вставки

Когда новые строки вставляются в EmbeddedRocksDB, если ключ уже существует, значение будет обновлено, в противном случае создается новый ключ.

Пример:

Удаления

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

Обновления

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

Соединения

Поддерживается специальное соединение direct с таблицами EmbeddedRocksDB. Это прямое соединение избегает формирования хеш-таблицы в памяти и получает данные непосредственно из EmbeddedRocksDB.

При больших соединениях вы можете наблюдать гораздо более низкое использование памяти с прямыми соединениями, поскольку хеш-таблица не создается.

Чтобы включить прямые соединения:

подсказка

Когда join_algorithm установлен в direct, hash, прямые соединения будут использоваться где это возможно, а хеш-соединения в противном случае.

Пример

Создание и заполнение таблицы EmbeddedRocksDB
Создание и заполнение таблицы для соединения с таблицей rdb
Установка алгоритма соединения на direct
ВНЕШНЕЕ СОЕДИНЕНИЕ

Дополнительная информация о соединениях