> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-parallel-read-in-order-multi-part.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

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

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

<div id="overview">
  ## Обзор
</div>

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

ClickHouse уже предлагает [Файловый кэш](/ru/concepts/features/configuration/server-config/storing-data)
как способ кэширования поверх удалённого объектного хранилища, такого как Amazon S3, Google
Cloud Storage (GCS) или Azure Blob Storage. Кэш страниц в пространстве пользователя предназначен
для ускорения доступа к удалённым данным в случаях, когда обычное кэширование ОС работает
недостаточно эффективно.

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

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

<div id="configuration-settings-and-usage">
  ## Параметры конфигурации и использование
</div>

<div id="usage">
  ### Использование
</div>

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

```bash theme={null}
cat config.d/page_cache.yaml
page_cache_max_size: 100G
```

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

Далее включите его использование на уровне запроса:

```sql theme={null}
SET use_page_cache_for_disks_without_file_cache=1;
```

<div id="settings">
  ### Настройки
</div>

| Параметр | Описание | По умолчанию |
| - | - | - |
| `use_page_cache_for_disks_without_file_cache` | Использовать кэш страниц в пространстве пользователя для удалённых дисков, у которых не включен файловый кэш. | `0` |
| `use_page_cache_with_distributed_cache` | Использовать кэш страниц в пространстве пользователя при использовании Distributed Cache. | `0` |
| `read_from_page_cache_if_exists_otherwise_bypass_cache` | Использовать кэш страниц в пространстве пользователя в пассивном режиме, аналогично [`read_from_filesystem_cache_if_exists_otherwise_bypass_cache`](/ru/reference/settings/session-settings/read-from#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` | Разбить кэш страниц в пространстве пользователя на такое количество сегментов, чтобы уменьшить конкуренцию за mutex. Экспериментальный параметр, вряд ли улучшит производительность. | `4` |

<div id="related-content">
  ## Связанные материалы
</div>

* [Файловый кэш](/ru/concepts/features/configuration/server-config/storing-data)
* [Вебинар о выпуске ClickHouse v25.3](https://www.youtube.com/live/iCKEzp0_Z2Q?feature=shared\&t=1320)
