Встроенный движок RocksDB
Этот движок позволяет интегрировать 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.- колонки, отличные от первичного ключа, будут сериализованы в двоичном формате как
rocksdbvalue в соответствующем порядке. - запросы с фильтрацией ключей
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 для встроенного движка RocksDB,
включите настройки, чтобы видеть приблизительные значения для total_rows и total_bytes.
Поддерживаемые операции
Вставки
При вставке новых строк в EmbeddedRocksDB, если ключ уже существует, значение будет обновлено, в противном случае будет создан новый ключ.
Пример:
Удаления
Строки могут быть удалены с помощью запроса DELETE или TRUNCATE.
Обновления
Значения могут быть обновлены с помощью запроса ALTER TABLE. Первичный ключ не может быть обновлен.
Соединения
Поддерживается специальное соединение direct с таблицами EmbeddedRocksDB.
Это прямое соединение избегает формирования хеш-таблицы в памяти и получает
данные непосредственно из EmbeddedRocksDB.
При больших соединениях вы можете заметить значительно более низкое использование памяти при прямых соединениях, так как хеш-таблица не создается.
Чтобы включить прямые соединения:
Когда join_algorithm установлен в direct, hash, прямые соединения будут использоваться
при возможности, а хеш в противном случае.