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

Коллеги добрый вечер. Кто может подсказать по теоретической части postgres.

Когда высвобождается work_mem сессии? Выделяется он при первом обращении (т.е не когда создается подключение а когда уже выполняется какая то сортировка). По освобождению я не нашел информации. Грубо говоря сессии в статусе idle держат эти буферы которые были выделены или как то их освобождают?

12 ответов

23 просмотра

Для управления выделением памяти в PostgreSQL используется система memory contexts (см. src/backend/utils/mmgr/README в исходниках). Соответственно, для каждого запроса используется свой контекст (см. src/backend/executor/README), и эта память освобождается по его завершению (т.е. сессии в статусе idle уже освободили эту память). Кстати, есть же https://t.me/pgsql , где на такие вопросы вероятнее получить ответ, мне кажется.

Обычно рабочуу память разные серверные процессы переиспользуют, выделяется она при старте, её соединения используют для запросов в процессе выполнения, и она не освобождается после этого, а отдаётся обратно в пул свободной памяти СУБД для использования сделующим процессом/запросом.

Ilya Zviagin
И что в операционку обратно отдаётся?

Это же зависит от libc/OS... В общем получается, что обычно да (linux/glibc).

Yaroslav Schekin
Это же зависит от libc/OS... В общем получается, ч...

А если загрузка высокая, то это как выглядит? Гигабайты занимаются и освобождаются?

Ilya Zviagin
Ужас... (не верю, но ладно)

В чём ужас-то? У PostgreSQL нет "пула свободной памяти СУБД", выделения выполняются каждым backend. Если поступать наоборот, получится, что процессы "крадут" память у всех — вот это настоящий ужас, нет?

Alexey
А если загрузка высокая, то это как выглядит? Гига...

То есть свободная память (доступая другим приложениям) скачет каждую секунду?

Alexey
То есть свободная память (доступая другим приложен...

Каким ещё другим приложениям, если на хосте с СУБД должна работать только СУБД?

Alexey
То есть свободная память (доступая другим приложен...

При интенсивной нагрузке — да, вполне возможно.

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

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

Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
2
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
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
Коллеги, я тут для личных нужд пошел ставить MQTT сервер, пощупал mosquitto, но ужаснулся отсутствию такой банальности, как HTTP API для посмотреть список топиков. А тут что,...
Maksim Lapshin
14
Карта сайта