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