Size: a a a

pgsql – PostgreSQL

2021 February 22

LM

Lina M in pgsql – PostgreSQL
Потому что за время выполнения requests запись уже может находится в базе
источник

D

Dmitriy in pgsql – PostgreSQL
Lina M
На данный момент могу ответить что да, но не буду в этом уверен на 100%
Я бы замерил время выполнения одного треда, а потом время выполнения всех запросов в нём. Если разница велика, то есть смысл брать коннект только тогда, когда делаете запрос, после чего тут же его возвращать обратно
источник

LM

Lina M in pgsql – PostgreSQL
Dmitriy
Я бы замерил время выполнения одного треда, а потом время выполнения всех запросов в нём. Если разница велика, то есть смысл брать коннект только тогда, когда делаете запрос, после чего тут же его возвращать обратно
Не знаю, представляется ли это возможным, поскольку время выполнения requests может быть совершенно разным для одного и того же запроса, это не подконтрольно нам, но в данный момент верхняя граница 60 sec
источник

D

Dmitriy in pgsql – PostgreSQL
Lina M
Не знаю, представляется ли это возможным, поскольку время выполнения requests может быть совершенно разным для одного и того же запроса, это не подконтрольно нам, но в данный момент верхняя граница 60 sec
Тогда 100% надо коннект возвращать в пул
источник

LM

Lina M in pgsql – PostgreSQL
Dmitriy
Тогда 100% надо коннект возвращать в пул
Хорошо, добавлю в планы, спасибо
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Lina M
Это, скорее всего, не совсем относится к изначальной теме. Но, возможно, внесёте ясность в одном моменте.

Как сделать лучше/правильнее/оптимальнее:
1. Проверить одним запросом существование записи в таблице (exists scalar) → добавить запись в таблицу, если её нет, если словили integrity error обработать
2. Сразу сделать добавление записи в таблицу, и если словили integrity error обработать
Я не знаю, что у Вас там конкретно за процесс, как я могу ответить?

Суть совета с переподключением в том, что на первом этапе выбираются исходные данные из БД для request, а потом, уже в новом соединении, проверяется, находится ли БД всё в том же "состоянии", когда был нужен именно такой request, и, если да — результаты записываются; а если нет ("не повезло") — выбрасываются.
Это подход optimistic locking, в общем.
источник

D

Dmitriy in pgsql – PostgreSQL
Lina M
Хорошо, добавлю в планы, спасибо
Кроме того, если у вас всё это время ещё какая-нибудь открытая транзакция висит, то это тоже надо переделывать
источник

LM

Lina M in pgsql – PostgreSQL
Dmitriy
Кроме того, если у вас всё это время ещё какая-нибудь открытая транзакция висит, то это тоже надо переделывать
Транзакция выполняется в самом конце, после работы requests. В любом случае, уже знаю, что и как нужно для этого изменить
источник

D

Dmitriy in pgsql – PostgreSQL
Lina M
Транзакция выполняется в самом конце, после работы requests. В любом случае, уже знаю, что и как нужно для этого изменить
Да, я про то, что нельзя допускать такое:
1) Открыл транзакцию
2) Выполнил запрос
3) requests (timeout=60 sec)
3) Опять запрос
4) Применил/откатил транзакцию
источник

LM

Lina M in pgsql – PostgreSQL
Да, я это понимаю. Нужно использовать соединение тогда и только тогда, когда есть в этом необходимость
источник

P

Protey in pgsql – PostgreSQL
Немного оффтоп, но интересно, почему в штат не хотят брать DBA? Это много где и упорно декларируется. Базы повсюду, ценность данных растёт, но администраторов баз данных нет даже в компаниях с огромными оборотами, где БД, как говорят, mission critical. При этом на любой чих берут отдельного человека (видно по вакансиям). В мире ситуация обратная, а России складывается именно так, хорошо ещё что не везде. Лет 10 назад DBA были востребованы, сейчас в районе статистической погрешности. Почему это происходит, как думаете?
источник

K

Kolunchik in pgsql – PostgreSQL
nosql победил
источник

P

Protey in pgsql – PostgreSQL
Kolunchik
nosql победил
не везде же NoSQL, но и туда DBA берут, даже у нас, особенно после потерь данных
источник

Z

Zheka_13 in pgsql – PostgreSQL
сохранность базы кладется на плечи девопсов я думаю. а больше и не надо ничего. Программисты запросы пишут.
источник

SS

Shamil Sabirov in pgsql – PostgreSQL
Kolunchik
nosql победил
в случае open source РСУБД - postgres/mysql ситуация аналогичная. тут не в nosql вопрос, думаю
источник

P

Protey in pgsql – PostgreSQL
Интересно, DevOps действительно этим занимаются? Судя по требованиям, они разбираются во всём, но понемногу. Где-то поглубже, а где-то поверхностно
источник

D

Dmitriy in pgsql – PostgreSQL
Protey
Немного оффтоп, но интересно, почему в штат не хотят брать DBA? Это много где и упорно декларируется. Базы повсюду, ценность данных растёт, но администраторов баз данных нет даже в компаниях с огромными оборотами, где БД, как говорят, mission critical. При этом на любой чих берут отдельного человека (видно по вакансиям). В мире ситуация обратная, а России складывается именно так, хорошо ещё что не везде. Лет 10 назад DBA были востребованы, сейчас в районе статистической погрешности. Почему это происходит, как думаете?
"почему в штат не хотят брать DBA" - например, потому, что DBA прямо постоянно не требуются. Сужу чисто по своему опыту. У дизайнеров задачи постоянно есть, у разрабов - тоже, но с базой проблемы и сложность возникают не каждую неделю и даже не каждый месяц. Поэтому DBA в штат не берут (но это не значит, что к их услугам не прибегают периодически). Потому что большую часть времени они просто будут без задач (часть проблем могут решить штатные разрабы и девопсы).
источник

D

Dmitriy in pgsql – PostgreSQL
Тут вообще ещё имеет место сам подход к разработке. Если всё на хранимках реализовано, то DBA, конечно, без задач сидеть не будет. Но везде, где я работал, бизнес-логика была в коде.
источник

VY

Victor Yegorov in pgsql – PostgreSQL
Dmitriy
"почему в штат не хотят брать DBA" - например, потому, что DBA прямо постоянно не требуются. Сужу чисто по своему опыту. У дизайнеров задачи постоянно есть, у разрабов - тоже, но с базой проблемы и сложность возникают не каждую неделю и даже не каждый месяц. Поэтому DBA в штат не берут (но это не значит, что к их услугам не прибегают периодически). Потому что большую часть времени они просто будут без задач (часть проблем могут решить штатные разрабы и девопсы).
надо брать воинственного, чтобы ходил с палокой и бил разрабов за хреновые планы запросов!
источник

D

Dmitriy in pgsql – PostgreSQL
Боевой DBA)
источник