Перейти к основному содержанию
При использовании движка таблицы Memory в ClickHouse Cloud данные не реплицируются между всеми узлами (это сделано намеренно). Чтобы гарантировать, что все запросы направляются на один и тот же узел и что движок таблицы Memory работает ожидаемым образом, можно сделать одно из следующего:
  • Выполнять все операции в рамках одного сеанса
  • Использовать клиент, работающий через TCP или нативный интерфейс (что обеспечивает поддержку sticky connections), например clickhouse-client
Движок Memory хранит данные в оперативной памяти в несжатом виде. Данные хранятся ровно в том виде, в котором они были получены при чтении. Иными словами, чтение из этой таблицы практически ничего не стоит. Одновременный доступ к данным синхронизируется. Блокировки короткие: операции чтения и записи не блокируют друг друга. Индексы не поддерживаются. Чтение распараллеливается. Максимальная производительность (более 10 ГБ/с) достигается на простых запросах, поскольку не требуется чтение с диска, распаковка или десериализация данных. (Следует отметить, что во многих случаях производительность движка MergeTree почти такая же высокая.) При перезапуске сервера данные из таблицы исчезают, и таблица становится пустой. Обычно использование этого движка таблицы не оправдано. Однако его можно использовать для тестов и задач, где требуется максимальная скорость при сравнительно небольшом количестве строк (примерно до 100 000 000). Движок Memory используется системой для временных таблиц с внешними данными запроса (см. раздел «Внешние данные для обработки запроса»), а также для реализации GLOBAL IN (см. раздел «Операторы IN»). Чтобы ограничить размер таблицы с движком Memory, можно задать верхнюю и нижнюю границы, что фактически позволяет использовать её как кольцевой буфер (см. параметр движка).

Параметры движка

  • min_bytes_to_keep — Минимальное количество байтов, сохраняемых при ограничении размера таблицы Memory.
    • Значение по умолчанию: 0
    • Требует max_bytes_to_keep
  • max_bytes_to_keep — Максимальное количество байтов, сохраняемых в таблице Memory, в которой при каждой вставке удаляются самые старые строки (то есть используется кольцевой буфер). Это значение может превышать указанный предел, если при добавлении большого блока самый старый батч строк, подлежащий удалению, попадает под ограничение min_bytes_to_keep.
    • Значение по умолчанию: 0
  • min_rows_to_keep — Минимальное количество строк, сохраняемых при ограничении размера таблицы Memory.
    • Значение по умолчанию: 0
    • Требует max_rows_to_keep
  • max_rows_to_keep — Максимальное количество строк, сохраняемых в таблице Memory, в которой при каждой вставке удаляются самые старые строки (то есть используется кольцевой буфер). Это значение может превышать указанный предел, если при добавлении большого блока самый старый батч строк, подлежащий удалению, попадает под ограничение min_rows_to_keep.
    • Значение по умолчанию: 0
  • compress - Следует ли сжимать данные в памяти.
    • Значение по умолчанию: false

Использование

Инициализация настроек
Изменение настроек
Примечание: Оба параметра ограничения bytes и rows можно задать одновременно, однако при этом будут использоваться меньшие значения max и min.

Примеры

также для строк:
Последнее изменение 2 июля 2026 г.