172 похожих чатов

А вот work_mem выделяется в момент запроса, и по окончании

запроса освобождается?
Я к тому, что если есть сессия, которая под какой-то запрос выделила 10Mb work_mem, запрос отработал, потом сессия висит в idle — эти 10mb будут всё ещё числиться за этой сессией?

4 ответов

23 просмотра

> а вот work_mem выделяется в момент запроса Да не work_mem выделяется, это просто "мягкое" ограничение на выделение локальной памяти одним узлом плана. ;) Так что эта память выделяется по мере надобности, а освобождается в т.ч. и в процессе выполнения запроса (но не всегда, да) . > и по окончании запроса освобождается? Да, должна (не считая всяких там WITH HOLD cursors и т.п. — но тут можно считать и так, что запрос ещё не отработал). > эти 10mb будут всё ещё числиться за этой сессией? Кем будут числиться? ;) Возврат памяти в OS — это инициатива [какой-то] libc, и это уж совсем другая история...

Ilya-Portnov Автор вопроса
Yaroslav Schekin
> а вот work_mem выделяется в момент запроса Да н...

» Да не work_mem выделяется Ну понятно, я имел ввиду — память в рамках work_mem * количество узлов » Кем будут числиться? ;) Ну например когда эти 10MB понадобятся соседней сессии — она сможет их использовать? Все эти приколы про то что не понятно как считать занятую память понятны. Но как не считай, если постгрес падает по OOM это значит что память кончилась :) значит кто-то её выделил...

У Postgres ведь какой-то свой аллокатор завязаный на MemoryContexts

Sergey Gr
У Postgres ведь какой-то свой аллокатор завязаный ...

Да. Как раз поэтому явным освобождением памяти большая часть кода не заморачивается вообще — контексты решают. Явное освобождением (или переносом выделения в контекст большей вложенности) разработчики PostgreSQL обычно занимаются только тогда, когда на практике выясняется, что какая-то обработка как-то слишком много памяти выделяет и долго не возвращает (при каких-то условиях).

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта