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

Доброго дня! Товарищи, подскажите, пожалуйста: ERROR: invalid memory alloc request size

1073741824
CONTEXT: SQL statement "SELECT pg_notify('transactions_log_insert', CAST(NEW.id AS TEXT))"
PL/pgSQL function public.transactions_log_insert() line 3 at PERFORM

Что ему не нравится?
work_mem = 1,5 Gb
Куда можно копнуть еще?
Операция возникновения ошибки - восстановление из бэкапа, psql

14 ответов

44 просмотра

Уменьшыть work_mem. Я, правда, непонимаю -- зачем и почему при восстановлении дампа появляются pg_notify какие-то? Там триггеры что ли какие-то выполняются в процэссе? Отключать хорошо бы временно их выполнение.

Alexander-Trahtenberg Автор вопроса
Ilya Anfimov
Уменьшыть work_mem. Я, правда, непонимаю -- зачем...

Т.е. снизить work_mem с 1.5Гб до 512 хотя бы - норм будет? - Но почему, он же говорит, что ему 1.074 Мб надо, если я правильно понимаю суть ошибки Можно, пожалуйста, подробнее про триггеры?

Alexander Trahtenberg
Т.е. снизить work_mem с 1.5Гб до 512 хотя бы - нор...

Сразу до 64. Но не уверен вообще, что поможэт. Если notify накапливаются только в памяти, и никогда не выгружаются на диск (я не знаю, так ли это, надо в коде смотреть) -- то на work_mem ему плевать будет, оно всё равно весь объём таблицы закинет в очередь notify. А про триггеры -- смотрите, откуда они там берутся. Точнее -- откуда вообще какое-то выполнение какого-то notify. По идее -- все триггеры восстанавливаются в концэ дампа. Можэт, от старой какой-то базы остались.

В самом бекапе нет ошибок? Можно ли при восстановлении данных отключить уведомления notify и попробовать восстановить так?

Alexander-Trahtenberg Автор вопроса
Алексей
В самом бекапе нет ошибок? Можно ли при восстановл...

В самом бэкапе нет ошибок, сначала бэкап схемы, а потом данные. Все обезличено. Наверное можно, но как?)

Alexander Trahtenberg
В самом бэкапе нет ошибок, сначала бэкап схемы, а ...

В смысле -- разными файлами бэкап схемы и данных? Тогда вот тут вы и встряли. Но, в общем, фигурно всё порезать -- невелика проблема. Установку триггеров в конец данных перенести.

Alexander Trahtenberg
В самом бэкапе нет ошибок, сначала бэкап схемы, а ...

Если эти уведомления лежат в триггерах, то таким образом: https://stackoverflow.com/questions/3942258/how-do-i-temporarily-disable-triggers-in-postgresql Если это просто в какой-то из процедур, то смотреть код в них.

Ilya Anfimov
Ого! Про session_replication_role не знал.

Я тоже, но я имел в виду обычный ALTER TABLE из ответа ниже, хотя и это, должно быть, будет работать.

Alexander-Trahtenberg Автор вопроса
Ilya Anfimov
В смысле -- разными файлами бэкап схемы и данных? ...

Да, База среднего размера. Поэтому сначала обезличенную схему, а потом обезличенные данные. Вот такая идея залива

Alexander-Trahtenberg Автор вопроса
Ilya Anfimov
В смысле -- разными файлами бэкап схемы и данных? ...

А вот можно по - подробнее, пожалуйста, про перенос установки триггеров в конец? Это в структурном бэкапе или с данными уже?

Alexander Trahtenberg
Да, База среднего размера. Поэтому сначала обезлич...

будете данные поверх индексов и форейнкеев заливать, будет медленно, много ИО, много wal и надо будет соблюдать порядок таблиц или отключать форейнкеи

Alexander Trahtenberg
А вот можно по - подробнее, пожалуйста, про перено...

Да в любом. Точнее, нет, наоборот -- дажэ если структурный, то перегнать сначала в плоский файл. Отрезать от схемы CREATE TRIGGER в отдельный файл любым редактором, выполнить потом оба файла подряд -- с заливкой и с CREATE TRIGGER.

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта