> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-fix-nav-issues.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Экспериментальный метод, предназначенный для задания более гибких ограничений памяти для запросов.

# Оверкоммит памяти

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

Идея этого метода заключается во введении настроек, которые задают гарантированный объем памяти, доступный запросу.
Когда оверкоммит памяти включен и достигнут лимит памяти, ClickHouse выберет запрос с наибольшим оверкоммитом и попытается освободить память, завершив этот запрос.

При достижении лимита памяти любой запрос будет некоторое время ждать при попытке выделить дополнительную память.
Если тайм-аут истек и память освободилась, запрос продолжит выполнение.
В противном случае будет сгенерировано исключение, и запрос будет завершен.

Выбор запроса для остановки или завершения выполняется либо глобальным, либо пользовательским трекером оверкоммита — в зависимости от того, какой лимит памяти достигнут.
Если трекер оверкоммита не может выбрать запрос для остановки, генерируется исключение MEMORY\_LIMIT\_EXCEEDED.

<div id="user-overcommit-tracker">
  ## Пользовательский трекер оверкоммита
</div>

Пользовательский трекер оверкоммита находит в списке запросов пользователя запрос с самым большим коэффициентом оверкоммита памяти.
Коэффициент оверкоммита памяти для запроса вычисляется как число выделенных байтов, делённое на значение настройки `memory_overcommit_ratio_denominator_for_user`.

Если для запроса значение `memory_overcommit_ratio_denominator_for_user` равно нулю, трекер оверкоммита не выберет этот запрос.

Тайм-аут ожидания задаётся настройкой `memory_usage_overcommit_max_wait_microseconds`.

**Пример**

```sql theme={null}
SELECT number FROM numbers(1000) GROUP BY number SETTINGS memory_overcommit_ratio_denominator_for_user=4000, memory_usage_overcommit_max_wait_microseconds=500
```

<div id="global-overcommit-tracker">
  ## Глобальный трекер оверкоммита
</div>

Глобальный трекер оверкоммита находит в списке всех запросов запрос с самым большим коэффициентом оверкоммита памяти.
В этом случае коэффициент оверкоммита памяти вычисляется как число выделенных байтов, делённое на значение настройки `memory_overcommit_ratio_denominator`.

Если для запроса значение `memory_overcommit_ratio_denominator` равно нулю, трекер оверкоммита не выберет этот запрос.

Тайм-аут ожидания задаётся параметром `memory_usage_overcommit_max_wait_microseconds` в файле конфигурации.
