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