Size: a a a

pgsql – PostgreSQL

2021 February 25

Z

Zheka_13 in pgsql – PostgreSQL
Igor Zinovik
Добрый день. Расскажите пожалуйста чем плохи долгие транзакции в состоянии idle in transaction?
Мне это надо донести до отдела разработки чтобы они хотя бы задумались над тем чтобы попробовать их починить (есть транзакции которые в idle in transaction состоянии живут дольше часа).
источник

VY

Victor Yegorov in pgsql – PostgreSQL
Igor Zinovik
Добрый день. Расскажите пожалуйста чем плохи долгие транзакции в состоянии idle in transaction?
Мне это надо донести до отдела разработки чтобы они хотя бы задумались над тем чтобы попробовать их починить (есть транзакции которые в idle in transaction состоянии живут дольше часа).
на пальцах не объяснить.
- надо понять устройство MVCC
- это даст понимание, что VACUUM зависит от долгих транзакций
- неспособность VACUUM-а сделать свою работу, это: распухание таблиц и индексов, линейное замедление запросов, нагрузка на CPU

не говоря о том, что тупо занято подключение к базе на ничего-не-делание.
а если разрабы в транзакциях ходят в сервис какой-то по сети, то если сервис упадёт — у вас база встанет, т.к. все сессии будут в idle in trnsaction, ни один новый запрос не пролезет
источник

ВТ

Виктор Ткаченко... in pgsql – PostgreSQL
Victor Yegorov
на пальцах не объяснить.
- надо понять устройство MVCC
- это даст понимание, что VACUUM зависит от долгих транзакций
- неспособность VACUUM-а сделать свою работу, это: распухание таблиц и индексов, линейное замедление запросов, нагрузка на CPU

не говоря о том, что тупо занято подключение к базе на ничего-не-делание.
а если разрабы в транзакциях ходят в сервис какой-то по сети, то если сервис упадёт — у вас база встанет, т.к. все сессии будут в idle in trnsaction, ни один новый запрос не пролезет
Это боль...
В одной из систем не могли сделать вакуум тк система постоянно находилась под нагрузкой и с долгими транзакционными перерасчетами.
По итогу несколько месяцев наблюдали как стремительно деградирует производительность. Не знаю правда, чем дело закончилось и смогли ли "выбить" время на тех обслуживание.
источник

ДМ

Дмитрий Мачихелян... in pgsql – PostgreSQL
Не подскажите, почему выдает ошибку
Error occurred during SQL query execution

Причина:
SQL Error [42883]: ERROR: function json_to_recordset(jsonb) does not exist
 Подсказка: No function matches the given name and argument types. You might need to add explicit type casts.
 Где: PL/pgSQL function insert_or_update(jsonb) line 3 at SQL statement

Версия постгрес 12, эта функция поддерживается
источник

Z

Zheka_13 in pgsql – PostgreSQL
Дмитрий Мачихелян
Не подскажите, почему выдает ошибку
Error occurred during SQL query execution

Причина:
SQL Error [42883]: ERROR: function json_to_recordset(jsonb) does not exist
 Подсказка: No function matches the given name and argument types. You might need to add explicit type casts.
 Где: PL/pgSQL function insert_or_update(jsonb) line 3 at SQL statement

Версия постгрес 12, эта функция поддерживается
не json_to_recordset(jsonb) а jsonb_to_recordset(jsonb)
источник

ДМ

Дмитрий Мачихелян... in pgsql – PostgreSQL
Zheka_13
не json_to_recordset(jsonb) а jsonb_to_recordset(jsonb)
источник

ВТ

Виктор Ткаченко... in pgsql – PostgreSQL
Виктор Ткаченко
Это боль...
В одной из систем не могли сделать вакуум тк система постоянно находилась под нагрузкой и с долгими транзакционными перерасчетами.
По итогу несколько месяцев наблюдали как стремительно деградирует производительность. Не знаю правда, чем дело закончилось и смогли ли "выбить" время на тех обслуживание.
В другой системе намеренно отключали вакуум тк он все дело тормозил...после включения адище преумножилось тк зачистить нужно было в разы больше
источник

R

Riclud in pgsql – PostgreSQL
Как в jsonb найти элемент с нужным ключом ?
источник

Z

Zheka_13 in pgsql – PostgreSQL
Дмитрий Мачихелян
иии?
источник

ДМ

Дмитрий Мачихелян... in pgsql – PostgreSQL
Zheka_13
иии?
по документации json_to_recordset()
источник

Z

Zheka_13 in pgsql – PostgreSQL
Дмитрий Мачихелян
по документации json_to_recordset()
внимательнее посмотрите на ошибку
источник

ДМ

Дмитрий Мачихелян... in pgsql – PostgreSQL
Zheka_13
внимательнее посмотрите на ошибку
Да, я вижу, сделал как вы сказали, но это странно немного. Брал с документации. Ваше решение помогло)
источник

Z

Zheka_13 in pgsql – PostgreSQL
Дмитрий Мачихелян
Да, я вижу, сделал как вы сказали, но это странно немного. Брал с документации. Ваше решение помогло)
так в документации все и написано что если jsonb передаете, то функция начинается с jsonb_...
источник

ДМ

Дмитрий Мачихелян... in pgsql – PostgreSQL
А, я проглупил....
Не посмоттрел внимательно..
источник

ДМ

Дмитрий Мачихелян... in pgsql – PostgreSQL
Дмитрий Мачихелян
CREATE OR REPLACE FUNCTION public.insert_or_update(data jsonb)
 returns void
 LANGUAGE plpgsql
AS $function$
 begin
   insert into public.contacts
   (
   user_id,
   phone_number,
   country_code,
   email,
   contact_name,
   company,job_title,
   account_name,
   contact_group,
   created_at
   )
   select x.userId, x.phoneNumber, x.countryCode, x.contactName, x.company, x.jobTitle, x.accountName, x.contactGroup, x.createdAt
   from jsonb_to_recordset(data)
   on conflict  on constraint contacts_un do
   update set
     contact_name = new.contact_name,
     company = new.company,
     contact_group = new.contact_group,
     email = new.email,
     account_name = new.account_name,
     job_title = new.job_title
 END;
$function$
SQL Error [42601]: ERROR: a column definition list is required for functions returning "record"
 Где: PL/pgSQL function insert_or_update(jsonb) line 3 at SQL statement.
Где я ошибся? Где мне надо определить список колонок ?
источник

Z

Zheka_13 in pgsql – PostgreSQL
надо смотреть что  в return написано
источник

Z

Zheka_13 in pgsql – PostgreSQL
либо там нужно определить либо после входящих аргументов с добавлением OUT
источник

ИР

Иван Ратников... in pgsql – PostgreSQL
В СберСервис ищем талантивого специалиста (можно не гуру) на позицию Администратор БД. Главное огонь в глазах и в попе дым. Нужен с опытом в Patroni и HA Cluster.
Удалёнку обеспечиваем. Но офис на трешке в Москве (метро Савеловская)
Оплата много плошек риса и сакэ))) шутка. С кандидатом обсуждаем индивидуально
источник

MZ

Michael マイケル Zhilin ... in pgsql – PostgreSQL
Иван Ратников
В СберСервис ищем талантивого специалиста (можно не гуру) на позицию Администратор БД. Главное огонь в глазах и в попе дым. Нужен с опытом в Patroni и HA Cluster.
Удалёнку обеспечиваем. Но офис на трешке в Москве (метро Савеловская)
Оплата много плошек риса и сакэ))) шутка. С кандидатом обсуждаем индивидуально
Есть же @pgsqljobs. Не надо сюда спамить
источник

АШ

Александр Шелудченко... in pgsql – PostgreSQL
Не пинайте за глупый вопрос.
Есть ли возможность пересоздать файл страницы _fsm в каталоге базы?
источник