Size: a a a

pgsql – PostgreSQL

2021 January 26

Д

Дмитрий in pgsql – PostgreSQL
🙈 Sergiy🖕
Бывает)
Респект!
источник

am

a m in pgsql – PostgreSQL
Ilya Kaznacheev🥤
А если вместо апдейта юзать? Насколько просадка будет?

Вопрос вот какой: хочу реализовать у сущности один метод для сохранения, чтобы если в бд нету, создавала, а если есть - обновляла.
Но инсертов будет мало, а апдейтов много в соотношении
Если у вас не планируется параллельной записи, то просто сначала делайте SELECT, он практически бесплатный. А потом решайте, INSERT или UPDATE.
Если параллельная запись планируется, то у вас кроме апсерта выхода нет.
источник

W

Warstone in pgsql – PostgreSQL
a m
Если у вас не планируется параллельной записи, то просто сначала делайте SELECT, он практически бесплатный. А потом решайте, INSERT или UPDATE.
Если параллельная запись планируется, то у вас кроме апсерта выхода нет.
Ну почему... Эксклюзивный лок таблицы...
источник

am

a m in pgsql – PostgreSQL
Очень смешно.
источник

IK

Ilya Kaznacheev🥤 in pgsql – PostgreSQL
a m
Если у вас не планируется параллельной записи, то просто сначала делайте SELECT, он практически бесплатный. А потом решайте, INSERT или UPDATE.
Если параллельная запись планируется, то у вас кроме апсерта выхода нет.
Параллельно не планируется, все параллельные операции будут только на уже созданной сущности и с локом
источник

D

Daniel in pgsql – PostgreSQL
Ilya Kaznacheev🥤
А если вместо апдейта юзать? Насколько просадка будет?

Вопрос вот какой: хочу реализовать у сущности один метод для сохранения, чтобы если в бд нету, создавала, а если есть - обновляла.
Но инсертов будет мало, а апдейтов много в соотношении
Привет!) Выглядит всё так, словно для этого и создавался функционал INSERT...ON CONFLICT. Только можно ещё посоветовать покрутить fillfactor и попробовать HOT update'ы
источник

am

a m in pgsql – PostgreSQL
Ilya Kaznacheev🥤
Параллельно не планируется, все параллельные операции будут только на уже созданной сущности и с локом
Ну вот для таких случаев в моем б-гомерзком ORM’е есть метод find_or_create_by, который это самое и делает.
источник

IK

Ilya Kaznacheev🥤 in pgsql – PostgreSQL
a m
Ну вот для таких случаев в моем б-гомерзком ORM’е есть метод find_or_create_by, который это самое и делает.
Да не, при желании я могу разделить два случая, и при создании делать именно INSERT, а при апдейте именно UPDATE. Я просто упростить код на уровне приложения хотел

к предыдущему: SELECT+UDATE быстрее, чем INSERT ON CONFLICT UPDATE?
источник

am

a m in pgsql – PostgreSQL
Должно быть.
Но если вам негде проверить, то вам и париться об этом не надо.
источник

DS

Daniella Starchenko in pgsql – PostgreSQL
Привет. У меня в pg_stat_activity ежедневно появляются одинаковые запросы в двух разных бекендах client backend и worker background. Попадают они туда по расписанию. Вопрос: почему вдруг программная отправка шлет запрос в бекенд client backend? Разве сюда не должны идти запросы, которые идут от pgadmin? B как изменить бекенд?
источник

KK

Konstantin Knizhnik in pgsql – PostgreSQL
a m
Если у вас не планируется параллельной записи, то просто сначала делайте SELECT, он практически бесплатный. А потом решайте, INSERT или UPDATE.
Если параллельная запись планируется, то у вас кроме апсерта выхода нет.
Выходы есть. Можно написать функцию на plpgsql и перехватывать ошибки. Но вряд ли этим стоит заниматься. Используйте INSERT ON CONFLICT и не парьтесь.
источник

b

blkmrkt in pgsql – PostgreSQL
Можно как-нибудь узнать значение определенной настройки уровня сессии для PID?
источник

D

Daniel in pgsql – PostgreSQL
a m
Должно быть.
Но если вам негде проверить, то вам и париться об этом не надо.
А за счёт чего SELECT+UDATE  должно быть быстрее, чем INSERT ON CONFLICT UPDATE?
источник

am

a m in pgsql – PostgreSQL
Daniel
А за счёт чего SELECT+UDATE  должно быть быстрее, чем INSERT ON CONFLICT UPDATE?
Это надо код читать, а мне лень.
источник

В

Владислав in pgsql – PostgreSQL
День добрый, подскажите,  насколько время обновления с 9.4 до 13 зависит от объема данных в базе? Мне казалось что там используются hard links и время обновления не должно сильно зависеть от объема данных
источник

VY

Victor Yegorov in pgsql – PostgreSQL
Daniella Starchenko
Привет. У меня в pg_stat_activity ежедневно появляются одинаковые запросы в двух разных бекендах client backend и worker background. Попадают они туда по расписанию. Вопрос: почему вдруг программная отправка шлет запрос в бекенд client backend? Разве сюда не должны идти запросы, которые идут от pgadmin? B как изменить бекенд?
это вы про backend_type? там тип подключение: клиентская сессия, параллельный воркер, фоновый процесс и т.д.
источник

DS

Daniella Starchenko in pgsql – PostgreSQL
Victor Yegorov
это вы про backend_type? там тип подключение: клиентская сессия, параллельный воркер, фоновый процесс и т.д.
да, client backend может выставляться, когда запрос сделан не через клиент бд, а через программный код?
источник

DS

Daniella Starchenko in pgsql – PostgreSQL
показалось, что не должно
источник

VY

Victor Yegorov in pgsql – PostgreSQL
Владислав
День добрый, подскажите,  насколько время обновления с 9.4 до 13 зависит от объема данных в базе? Мне казалось что там используются hard links и время обновления не должно сильно зависеть от объема данных
через pg_upgrade если, то да, hard links. время зависит от сложности схемы (pg_dump+pg_restore schema-only) + время сбора статистики (но это уже на запущенной базе).
обычно в 10-20 минут можно уложиться
источник

VY

Victor Yegorov in pgsql – PostgreSQL
Daniella Starchenko
да, client backend может выставляться, когда запрос сделан не через клиент бд, а через программный код?
с точки зрения базы — GUI, psql, приложения через libpq/odbc/jdbc — это всё клиенты
источник