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

Обзор

Кэш страниц в пространстве пользователя — это новый механизм кэширования, который позволяет хранить данные в памяти процесса, не полагаясь на кэш страниц ОС.
ClickHouse уже предлагает Файловый кэш как способ кэширования поверх удалённого объектного хранилища, такого как Amazon S3, Google Cloud Storage (GCS) или Azure Blob Storage. Кэш страниц в пространстве пользователя предназначен для ускорения доступа к удалённым данным в случаях, когда обычное кэширование ОС работает недостаточно эффективно. Он отличается от файлового кэша следующим образом:
Файловый кэшКэш страниц в пространстве пользователя
Записывает данные в локальную файловую системуСуществует только в памяти
Занимает место на диске (также может быть настроен на tmpfs)Не зависит от файловой системы
Сохраняется после перезапуска сервераНе сохраняется после перезапуска сервера
Не учитывается в использовании памяти сервераУчитывается в использовании памяти сервера
Подходит как для хранения на диске, так и в памяти (кэш страниц ОС)Хорошо подходит для серверов без дисков

Параметры конфигурации и использование

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

Чтобы включить кэш страниц в пространстве пользователя, сначала настройте его на сервере:
cat config.d/page_cache.yaml
page_cache_max_size: 100G
Кэш страниц в пространстве пользователя может использовать до указанного объёма памяти, однако этот объём не резервируется. При необходимости эта память будет освобождаться для других нужд сервера.
Далее включите его использование на уровне запроса:
SET use_page_cache_for_disks_without_file_cache=1;

Настройки

ПараметрОписаниеПо умолчанию
use_page_cache_for_disks_without_file_cacheИспользовать кэш страниц в пространстве пользователя для удалённых дисков, у которых не включен файловый кэш.0
use_page_cache_with_distributed_cacheИспользовать кэш страниц в пространстве пользователя при использовании Distributed Cache.0
read_from_page_cache_if_exists_otherwise_bypass_cacheИспользовать кэш страниц в пространстве пользователя в пассивном режиме, аналогично read_from_filesystem_cache_if_exists_otherwise_bypass_cache.0
page_cache_inject_evictionКэш страниц в пространстве пользователя может иногда случайным образом вытеснять некоторые страницы. Предназначено для тестирования.0
page_cache_block_sizeРазмер фрагментов файла, хранимых в кэше страниц в пространстве пользователя, в байтах. Все чтения, проходящие через кэш, будут округляться вверх до значения, кратного этому размеру.1048576
page_cache_history_window_msЗадержка перед тем, как освобождённая память сможет быть использована кэшем страниц в пространстве пользователя.1000
page_cache_policyИмя политики кэша страниц в пространстве пользователя.SLRU
page_cache_size_ratioРазмер защищённой очереди в кэше страниц в пространстве пользователя относительно общего размера кэша.0.5
page_cache_min_sizeМинимальный размер кэша страниц в пространстве пользователя.104857600
page_cache_max_sizeМаксимальный размер кэша страниц в пространстве пользователя. Установите 0, чтобы отключить кэш. Если значение больше page_cache_min_size, размер кэша будет непрерывно подстраиваться в этом диапазоне, чтобы использовать большую часть доступной памяти, сохраняя общее использование памяти ниже лимита (max_server_memory_usage[_to_ram_ratio]).0
page_cache_free_memory_ratioДоля лимита памяти, которую нужно оставлять свободной от кэша страниц в пространстве пользователя. Аналогично настройке Linux min_free_kbytes.0.15
page_cache_lookahead_blocksПри промахе кэша страниц в пространстве пользователя за один раз считывать из нижележащего хранилища до такого количества последовательных блоков, если их тоже нет в кэше. Размер каждого блока — page_cache_block_size байт.16
page_cache_shardsРазбить кэш страниц в пространстве пользователя на такое количество сегментов, чтобы уменьшить конкуренцию за mutex. Экспериментальный параметр, вряд ли улучшит производительность.4
Последнее изменение 10 июня 2026 г.