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

Движок 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
ВНУТРЕННЕЕ СОЕДИНЕНИЕ

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