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

Кэш страниц в пространстве пользователей

Обзор

Кэш страниц в пространстве пользователей — это новый механизм кэширования, который позволяет кэшировать данные в памяти процесса, а не полагаться на кэш страниц ОС.

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

Он отличается от кэша файловой системы следующими способами:

Кэш файловой системыКэш страниц в пространстве пользователей
Записывает данные на локальную файловую системуПрисутствует только в памяти
Занимает место на диске (также настраиваемо для tmpfs)Независим от файловой системы
Переживает перезагрузку сервераНе переживает перезагрузку сервера
Не отображается в использовании памяти сервераОтображается в использовании памяти сервера
Подходит как для данных на диске, так и в памяти (кэш страниц ОС)Хорошо подходит для серверов без дисков

Настройки конфигурации и использование

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

Чтобы включить кэш страниц в пространстве пользователей, сначала настройте его на сервере:

примечание

Кэш страниц в пространстве пользователей будет использовать до указанного объема памяти, но этот объем памяти не зарезервирован. Память будет освобождена, когда она потребуется для других нужд сервера.

Далее включите его использование на уровне запросов:

Настройки

НастройкаОписаниеЗначение по умолчанию
use_page_cache_for_disks_without_file_cacheИспользовать кэш страниц в пространстве пользователей для удаленных дисков, на которых не включен кэш файловой системы.0
use_page_cache_with_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Разбивать кэш страниц в пространстве пользователей на это количество шардов, чтобы уменьшить конкуренцию за мьютексы. Экспериментально, вряд ли приведет к улучшению производительности.4