Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

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

Обзор

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

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
Navigation