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

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

Обзор

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

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