
Amir
10.10.2018
11:46:00
добрый день
поправьте если я ошибаюсь:
отловил триггер в системе который работает дольше чем хотелось бы
есть AFTER триггер на изменение поля в таблице1:
в теле триггерной функции идет update таблицы1 set колонка2 = вычисляемое значение где таблица1.id = new,id
я правильно понимаю что у нас заново идет поиск нужной строки в Таблице1 по индексу ИД, т.е. мы не работаем с текущим значением которое нам и так уже известно
если бы был триггер на BEFORE то было бы достаточно написать
NEW.колонка2 = ...
RETURN NEW
и это значение попало бы в нашу таблицу
но там сложная логика, и переносить из AFTER в BEFORE нет возможности
как можно в AFTER триггере пересохранить значение колонки без дополнительного поиска по ИД? или тут вариантов как кроме переноса в BEFORE нет?

Dmitry
10.10.2018
11:48:26

Bogdan (SirEdvin)
10.10.2018
11:48:37
К счастью, нет)

Yaroslav
10.10.2018
12:39:12

Google

Terminator
10.10.2018
14:14:35
@AleksanderKomissarov будет жить. Поприветствуем!

Aleksander
10.10.2018
14:19:13
Всем привет. Пересел после oracle pl/sql на postgree pgplsql и просто в ужасе и туплю как писать функции, что с курсорами и где и куда commit?

Ilia
10.10.2018
14:20:23

Aleksander
10.10.2018
14:21:03
Есть ли понятная по синтаксису дока где будет понятно мне как ораклисту что да как писать. Ведь нет пакетов и процедур
Желательно на русском

Mike Chuguniy
10.10.2018
14:21:45

Aleksander
10.10.2018
14:22:31

Bogdan
10.10.2018
14:23:29

Mike Chuguniy
10.10.2018
14:24:22
В 11-й версии процедуры появятся, кстати, насколько я помню анонсы.

Алексей
10.10.2018
14:40:47
если в таблице id задан через sequence, можно ли как то автоматически обновлять текущее значение sequence до максимального id в таблице, если id при вставке задан числом, а не через nextval ?

elfiki
10.10.2018
14:42:03

Aleksander
10.10.2018
14:42:27

Mikhail
10.10.2018
14:42:47

Google

Mikhail
10.10.2018
14:43:17

Алексей
10.10.2018
14:46:37

elfiki
10.10.2018
14:47:03

Mikhail
10.10.2018
14:48:04

Darafei
10.10.2018
14:49:46

Mikhail
10.10.2018
14:50:19

Алексей
10.10.2018
14:52:35

Yaroslav
10.10.2018
14:52:38

Mikhail
10.10.2018
14:53:36
Можно разого выставить значение сиквенса , да
Функция сетвал
Можно это периодически повторять — но это не про конкуренцию над данными

Yaroslav
10.10.2018
14:56:08

Andrey
10.10.2018
15:00:26

Алексей
10.10.2018
15:01:50
А как Вы это делаете / зачем Вам там sequence?
в таблице хранятся пользователи, зарегистрированные на сайте(id автоинкрементный). но в некоторых случаях пользователи должны быть импортированны из xls с теми id, которые прописаны в xls. в случае совпадения id данные обновляются, или добавляются, если id нет в таблице

Сергей
10.10.2018
15:04:02
А коллизии могут быть? Если реально разные люди под таким id?

Mike Chuguniy
10.10.2018
15:04:08

Алексей
10.10.2018
15:08:47
колизий по id нет. пользователи регистрируются до определенного момента. потом регистрация закрывается. список скачивается для обработки. потом к текущему списку добавляются новые, из другой базы со следующими по порядку id

Yaroslav
10.10.2018
15:09:08

Alexey
10.10.2018
15:10:11

Алексей
10.10.2018
15:10:49
к сожалению легаси код (

Google

Rushan
10.10.2018
15:13:16
Коллеги, добрый день!
Не могли бы посоветовать какой-нибудь курс по PostgreSQL ?

Mike Chuguniy
10.10.2018
15:14:54

Alexey
10.10.2018
15:15:41
Хм... чем плохо каждый раз sequence выставлять на максимальный следующим запросом?

Rushan
10.10.2018
15:16:13

Mike Chuguniy
10.10.2018
15:16:27

Rushan
10.10.2018
15:17:25
спасибо!

Ilya
10.10.2018
15:17:43

Алексей
10.10.2018
15:18:35

Alexey
10.10.2018
15:19:49
А если кто-то сделает +1, когда мой запрос нашёл max, но не записал в sequence?
Такое может быть?

Rushan
10.10.2018
15:19:56

Yaroslav
10.10.2018
15:20:16

Алексей
10.10.2018
15:21:08
одновременно оба маханизма не работают

Yaroslav
10.10.2018
15:21:48

Alexey
10.10.2018
15:22:24

Yaroslav
10.10.2018
15:24:21
А пример какой плохой?
Да любой. ;)
> Вот это может быть? sequence же не транзакционный, не?
Да, может, конечно. И да, не транзакционный.

Vadim
10.10.2018
15:38:30
У меня вопрос. Есть 2 взаимосвязанные таблицы. Необходимо обьединить данные и вернуть по определенному критерию. В самом join есть 2 условия обьединения и есть конечный where с like. Запрос долго выполняеться. Как то можно увеличить производительность?

Google

Mike Chuguniy
10.10.2018
15:46:53

Yaroslav
10.10.2018
15:53:07

Usagi
10.10.2018
16:40:01
Ребята, я вот стока текста прочитал про pgpool. Но так и не понял, как он балансирует INSERT запросы

Mikhail
10.10.2018
16:40:24
Не используйте pgpool

Usagi
10.10.2018
16:41:28
patroni очень сложный в данный момент
точнее не успел освоить

Alex
10.10.2018
16:42:37
а что есть для балансинга траффика актуального ?
кроме pgpool ?

Anton
10.10.2018
16:50:08
А как произносится на русском название СУБД?
Постгрэс - это будет корректное произношение?

Kirill
10.10.2018
17:02:57
Да
Я слышал версию, что любое произношение корректно, кроме «постгре» :)

Bogdan (SirEdvin)
10.10.2018
17:09:33

Mike Chuguniy
10.10.2018
18:16:28

Alex
10.10.2018
21:09:31

Vitaly
10.10.2018
21:37:04

Amir
10.10.2018
21:39:09
но думаю можно такой пример сдеать для проверки: сделаю тестовую таблицу, триггер на after с поиском по ид
и индекс
а апдейтить буду с поиском по полю отличном чем по ид
после проверю сколько раз индекс считался

Alex
10.10.2018
21:42:15

Google

Yaroslav
10.10.2018
21:42:18
потому что я сильно упростил пример, на самом деле там ужас, и триггеров параход, просто explain analyze verbose показал что именно этот триггер сходит сума , там записей лямо под 70 в самой таблице плюс на after триггер навешано поле по денормализации... вот я задумался а не двойная ли это работа на after заново по ИД искать
Из того, что тормозит триггер, не следует, что в этом виноват находящийся в нём "update таблицы1 set колонка2 = вычисляемое значение где таблица1.id = new.id;", нет?
А так — это какая-то дополнительная работа (но если поле индексировано, то практически никакая — всё уже закешировано, почти со 100% вероятностью)...


Amir
10.10.2018
21:43:17
ну там апдейт еще с from к другой таблице, как раз денормализацию делает
вроде бы понятно что оверхед переложили на плечи вставки и апдейтов , чем потом тягать данные из этой таблицы без лишних join
но тут вставка уже стала в топ 1 лесть по баджер отчету
вставка и апдейты
вот может триггер на before легче будет

Yaroslav
10.10.2018
21:45:46

Amir
10.10.2018
21:47:29
придется распутать клубок касдадных триггеров по всем зависимым таблицам)
я даже в свое время писал запрос который сразу строит дерево связей всех таблиц через триггеры, раз в год эта пушка стреляет)
всем спасибо, без тестовых замеров не проверить, буду распутывать)

Vitaly
10.10.2018
22:19:09

Alex
10.10.2018
22:25:19
речь не про мультимастер