Кэш страниц в пространстве пользователей
Обзор
Кэш страниц в пространстве пользователей — это новый механизм кэширования, который позволяет кэшировать данные в памяти процесса, а не полагаться на кэш страниц ОС.
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 |