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

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

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