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

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

Обзор

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

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Использовать кэш страниц пользовательского пространства, когда используется распределённый кэш.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