Size: a a a

pgsql – PostgreSQL

2020 July 21

П

Павел П. in pgsql – PostgreSQL
q
ctrl + d
источник

M

Mitai in pgsql – PostgreSQL
пришлось убить терминал) ни че не помогло хз че это было) больше не буду смотреть через терминал) пгадмин настало твое время!
источник

ПЕ

Петр Егоров... in pgsql – PostgreSQL
Выглядит так, будто какой-то редактор запущен. Из которого, скорее-всего, можно было выйти как :q (или просто q)
источник

VY

Victor Yegorov in pgsql – PostgreSQL
это не редактор, а pager less. перед запуском терминала сделайте export LESS=-eXF
в ситуациях как на картинке выше помогает клавиша q
источник

ПЕ

Петр Егоров... in pgsql – PostgreSQL
Да, может быть такое
источник

НХ

Никита Хмелев... in pgsql – PostgreSQL
Victor Yegorov
это не редактор, а pager less. перед запуском терминала сделайте export LESS=-eXF
в ситуациях как на картинке выше помогает клавиша q
Я всегда думал что это vim)
источник

VY

Victor Yegorov in pgsql – PostgreSQL
почитайте про psql и опцию PAGER
источник

VG

Vasiliy Gusel in pgsql – PostgreSQL
Mitai
пришлось убить терминал) ни че не помогло хз че это было) больше не буду смотреть через терминал) пгадмин настало твое время!
Как по практике, так же было дело, сразу не заметил что раскладка не латиница, и просто не воспринимал нажатия))
источник

В

Валерий in pgsql – PostgreSQL
подскажите как ловить исключения из dblink
источник

N

Nik in pgsql – PostgreSQL
(наверно очень тупой вопрос). Как я могу как клиент базы понять лимит данных на вставку, что бы не складывать базу? Иногда я кладу слишком много, получаю либо убиение процесса по лимиту  памяти, либо просто получаю EOF и в логе что я превысил буфер.
источник

A

Alexander in pgsql – PostgreSQL
Добрый вечер. Перевел бизнес логику в хранимые процедуры и стал отлавливать такое

ERROR:  deadlock detected
DETAIL:  Process 16867 waits for ShareLock on transaction 20266082; blocked by process 17093.
Process 17093 waits for ShareLock on transaction 20266035; blocked by process 16867.
HINT:  See server log for query details.
CONTEXT:  while updating tuple (935,46) in relation "storehouse_remain"
SQL statement "UPDATE storehouse_remain r SET outgo = COALESCE(
       (SELECT SUM(iu.weight) FROM storehouse_itemusage iu
       WHERE iu.item_id = rec.item_id AND iu.storehouse_id = rec.storehouse_id AND iu.type = 'u'
         AND iu.created_at >= r.created_at), 0)
   WHERE r.id = remain_id"
PL/pgSQL function update_remain_outgo() line 12 at SQL statement
SQL statement "DELETE FROM storehouse_itemusage WHERE referrer_id = referrerid"


Я так понимаю, что перед тем, как делать SELECT SUM(iu.weight) FROM storehouse_itemusage iu
       WHERE iu.item_id = rec.item_id AND iu.storehouse_id = rec.storehouse_id AND iu.type = 'u'
         AND iu.created_at >= r.created_at

нужно эти записи залочить
источник

A

Alexander in pgsql – PostgreSQL
Nik
(наверно очень тупой вопрос). Как я могу как клиент базы понять лимит данных на вставку, что бы не складывать базу? Иногда я кладу слишком много, получаю либо убиение процесса по лимиту  памяти, либо просто получаю EOF и в логе что я превысил буфер.
Может проблема в архитектуре и нужна очередь. Слишком много это в одном запросе?
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Валерий
подскажите как ловить исключения из dblink
Как обычно, по идее... а в чём проблема?
источник

N

Nik in pgsql – PostgreSQL
Alexander
Может проблема в архитектуре и нужна очередь. Слишком много это в одном запросе?
это в одном insert. но как бы я хотел бы перед стартом, порсить базу о конфигурации, и примерно для себя приложении выстроить лимиты. но пока плохо понимаю как
источник

В

Валерий in pgsql – PostgreSQL
Если обычно это так EXCEPTION
       WHEN OTHERS THEN то не отлавливаються
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Nik
(наверно очень тупой вопрос). Как я могу как клиент базы понять лимит данных на вставку, что бы не складывать базу? Иногда я кладу слишком много, получаю либо убиение процесса по лимиту  памяти, либо просто получаю EOF и в логе что я превысил буфер.
Нужно разобраться, что конкретно и почему происходит (потому что подобного встроенного "лимита" просто нет).
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Alexander
Добрый вечер. Перевел бизнес логику в хранимые процедуры и стал отлавливать такое

ERROR:  deadlock detected
DETAIL:  Process 16867 waits for ShareLock on transaction 20266082; blocked by process 17093.
Process 17093 waits for ShareLock on transaction 20266035; blocked by process 16867.
HINT:  See server log for query details.
CONTEXT:  while updating tuple (935,46) in relation "storehouse_remain"
SQL statement "UPDATE storehouse_remain r SET outgo = COALESCE(
       (SELECT SUM(iu.weight) FROM storehouse_itemusage iu
       WHERE iu.item_id = rec.item_id AND iu.storehouse_id = rec.storehouse_id AND iu.type = 'u'
         AND iu.created_at >= r.created_at), 0)
   WHERE r.id = remain_id"
PL/pgSQL function update_remain_outgo() line 12 at SQL statement
SQL statement "DELETE FROM storehouse_itemusage WHERE referrer_id = referrerid"


Я так понимаю, что перед тем, как делать SELECT SUM(iu.weight) FROM storehouse_itemusage iu
       WHERE iu.item_id = rec.item_id AND iu.storehouse_id = rec.storehouse_id AND iu.type = 'u'
         AND iu.created_at >= r.created_at

нужно эти записи залочить
Нужно обрабатывать deadlocks, как положено (повторять транзакции). Если на производительность это существенно не влияет, то на этом и всё.
источник

A

Alexander in pgsql – PostgreSQL
Yaroslav Schekin
Нужно обрабатывать deadlocks, как положено (повторять транзакции). Если на производительность это существенно не влияет, то на этом и всё.
Я их повторяю, это да. Я читал, что в PG 11 вроде появились процедуры и функции и разница там как раз в уровне изоляции данных. И показалось, что может я использую процедуры, а нужно функции.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Валерий
Если обычно это так EXCEPTION
       WHEN OTHERS THEN то не отлавливаються
Хмм... а какое там исключение бросается? Насколько сложно сделать repro?
источник

N

Nik in pgsql – PostgreSQL
Yaroslav Schekin
Нужно разобраться, что конкретно и почему происходит (потому что подобного встроенного "лимита" просто нет).
жесткий был такой -
server process (PID 464) was terminated by signal 9: Killed
Failed process was running: INSERT INTO assignment AS "t" (...
terminating any other active server processes


потом я подкорретировал настроки базы под размер cpu и ram сервера.

ситуация улучшилась, но все равно
DE
TAIL:  Cannot enlarge string buffer containing 0 bytes by 1165680927 more bytes.

и постоянно перенастраивать код под ресурсы базы - не комильфо. думал как то (хотя бы примерно) оценить тяжесть вставки. и перед вставкой его почикать на куски подходящие.
источник