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

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

Обзор

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

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

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

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

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

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

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

cat config.d/page_cache.yaml
page_cache_max_size: 100G
Примечание

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

Затем включите использование кэша на уровне запроса:

SET use_page_cache_for_disks_without_file_cache=1;

Настройки

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