powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / почему так долго удаляется, если включены триггеры?
16 сообщений из 16, страница 1 из 1
почему так долго удаляется, если включены триггеры?
    #39607296
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
приветы!
вот опять непонятный косяк - есть таблица, а в ней раньше был триггер:
Код: sql
1.
CREATE trigger dogovora_update before update on dogovora for each row execute procedure update_edited();


сейчас его нет, как и самой процедуры
но пока не сделаешь "ALTER TABLE tbl DISABLE TRIGGER ALL"
обычный "DELETE ... WHERE id=123" - отрабатывает 7 секунд!
а если БЕЗ триггера, то 20ms.
но триггера же нет вообще, и VACUUM FULL после него сделал, и БД перезагрузил
так в чём проблема?!
есть конечно ещё FK, но с индексами и на скорость не влияют, скорость возвращается только после дизейбла триггеров.
...
Рейтинг: 0 / 0
почему так долго удаляется, если включены триггеры?
    #39607306
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78,

Код: sql
1.
2.
3.
4.
5.
6.
SELECT tgrelid, tgname, tgenabled, tgisinternal

  FROM pg_trigger where tgrelid = --'dogovora'::regclass;
				'projects'::regclass

 


смотреть, кто енейбл ('O','A') а кто нет.
...
Рейтинг: 0 / 0
почему так долго удаляется, если включены триггеры?
    #39607313
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwqtip78,

Код: sql
1.
2.
SELECT tgrelid, tgname, tgenabled, tgisinternal FROM pg_trigger where tgrelid = --'dogovora'::regclass;
				'projects'::regclass


смотреть, кто енейбл ('O','A') а кто нет.
понятно, спасибо.
Код: sql
1.
SELECT tgrelid::regclass, tgname, tgenabled, tgisinternal FROM pg_trigger;


там 148 строк всех триггеров, которые я создавал в этой и других таблицах
и все tgenabled=O
можно truncate?

зы: а что за 'projects'::regclass ?
...
Рейтинг: 0 / 0
почему так долго удаляется, если включены триггеры?
    #39607314
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78зы: а что за 'projects'::regclass ?
а понял, это название вместо 'dogovora'
...
Рейтинг: 0 / 0
почему так долго удаляется, если включены триггеры?
    #39607319
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а как вообще быть всегда в курсе, какие pg_таблицы надо подчистить и когда?
...
Рейтинг: 0 / 0
почему так долго удаляется, если включены триггеры?
    #39607322
Alexius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78есть конечно ещё FK, но с индексами и на скорость не влияют, скорость возвращается только после дизейбла триггеров.

а точно там везде индексы есть? имхо это наиболее вероятная причина.
...
Рейтинг: 0 / 0
почему так долго удаляется, если включены триггеры?
    #39607332
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделайте explain (analyze,verbose) delete ...
Там будут вызванные триггеры вместе со временем их выполнения, включая FK
...
Рейтинг: 0 / 0
почему так долго удаляется, если включены триггеры?
    #39607342
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MelkijСделайте explain (analyze,verbose) delete ...
Там будут вызванные триггеры вместе со временем их выполнения, включая FK
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Delete on klinovik.dogovora  (cost=0.28..8.30 rows=1 width=6) (actual time=76.072..76.072 rows=0 loops=1)
   ->  Index Scan using dogovora_cid_idx on klinovik.dogovora  (cost=0.28..8.30 rows=1 width=6) (actual time=75.857..75.874 rows=2 loops=1)
         Output: ctid
         Index Cond: (dogovora.cid = 6928313)
 Planning time: 0.800 ms
 Trigger RI_ConstraintTrigger_a_53844 for constraint dog_acts_did_fkey: time=1.446 calls=2
 Trigger RI_ConstraintTrigger_a_53849 for constraint dog_lists_did_fkey: time=0.799 calls=2
 Trigger RI_ConstraintTrigger_a_53917 for constraint logs_did_fkey: time=9993.092 calls=2
 Trigger RI_ConstraintTrigger_a_53962 for constraint dog_bank_did_fkey: time=65.655 calls=2
 Execution time: 10137.215 ms
(10 строк)

Время: 10192,587 мс (00:10,193)


в общем удалил триггеры оттуда все, теперь мгновенно удаляет )
...
Рейтинг: 0 / 0
почему так долго удаляется, если включены триггеры?
    #39607357
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78 Trigger RI_ConstraintTrigger_a_53917 for constraint logs_did_fkey: time=9993.092 calls=2
Явно нет индекса на этом fk.
На dog_bank_did_fkey скорей всего тоже, просто табличка достаточно мелкая чтобы seqscan'ом гонять.

tip78а как вообще быть всегда в курсе, какие pg_таблицы надо подчистить и когда?
Никакие и никогда.
Системный каталог лучше считать readonly и возможность отстрелить себе ноги только на крайний случай, когда есть свежий бекап и потерять весь кластер не проблема.
...
Рейтинг: 0 / 0
почему так долго удаляется, если включены триггеры?
    #39607367
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Melkijtip78 Trigger RI_ConstraintTrigger_a_53917 for constraint logs_did_fkey: time=9993.092 calls=2
Явно нет индекса на этом fk.
На dog_bank_did_fkey скорей всего тоже, просто табличка достаточно мелкая чтобы seqscan'ом гонять.
на 1м нет, на 2м есть

Melkijtip78а как вообще быть всегда в курсе, какие pg_таблицы надо подчистить и когда?
Никакие и никогда.
Системный каталог лучше считать readonly и возможность отстрелить себе ноги только на крайний случай, когда есть свежий бекап и потерять весь кластер не проблема.
т.е. когда пишут "could not find tuple for trigger", то уже можно переставлять кластер? okay
...
Рейтинг: 0 / 0
почему так долго удаляется, если включены триггеры?
    #39607373
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78MelkijСделайте explain (analyze,verbose) delete ...
Там будут вызванные триггеры вместе со временем их выполнения, включая FK
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Delete on klinovik.dogovora  (cost=0.28..8.30 rows=1 width=6) (actual time=76.072..76.072 rows=0 loops=1)
   ->  Index Scan using dogovora_cid_idx on klinovik.dogovora  (cost=0.28..8.30 rows=1 width=6) (actual time=75.857..75.874 rows=2 loops=1)
         Output: ctid
         Index Cond: (dogovora.cid = 6928313)
 Planning time: 0.800 ms
 Trigger RI_ConstraintTrigger_a_53844 for constraint dog_acts_did_fkey: time=1.446 calls=2
 Trigger RI_ConstraintTrigger_a_53849 for constraint dog_lists_did_fkey: time=0.799 calls=2
 Trigger RI_ConstraintTrigger_a_53917 for constraint logs_did_fkey: time=9993.092 calls=2
 Trigger RI_ConstraintTrigger_a_53962 for constraint dog_bank_did_fkey: time=65.655 calls=2
 Execution time: 10137.215 ms
(10 строк)

Время: 10192,587 мс (00:10,193)


в общем удалил триггеры оттуда все, теперь мгновенно удаляет )


нескучный насыщенный у вас девелопмент, т.е. кто-то напихал триггеров, которые были нафиг не нужны? и даже вредили?
...
Рейтинг: 0 / 0
почему так долго удаляется, если включены триггеры?
    #39607375
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это мой тестовый полигон
триггеры были нужны, чтобы грёбанный edited получал NOW() при апдейте в разных таблицах
как я понял, ПГ по другому не умеет ^^
...
Рейтинг: 0 / 0
почему так долго удаляется, если включены триггеры?
    #39607415
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупинtip78пропущено...

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Delete on klinovik.dogovora  (cost=0.28..8.30 rows=1 width=6) (actual time=76.072..76.072 rows=0 loops=1)
   ->  Index Scan using dogovora_cid_idx on klinovik.dogovora  (cost=0.28..8.30 rows=1 width=6) (actual time=75.857..75.874 rows=2 loops=1)
         Output: ctid
         Index Cond: (dogovora.cid = 6928313)
 Planning time: 0.800 ms
 Trigger RI_ConstraintTrigger_a_53844 for constraint dog_acts_did_fkey: time=1.446 calls=2
 Trigger RI_ConstraintTrigger_a_53849 for constraint dog_lists_did_fkey: time=0.799 calls=2
 Trigger RI_ConstraintTrigger_a_53917 for constraint logs_did_fkey: time=9993.092 calls=2
 Trigger RI_ConstraintTrigger_a_53962 for constraint dog_bank_did_fkey: time=65.655 calls=2
 Execution time: 10137.215 ms
(10 строк)

Время: 10192,587 мс (00:10,193)


в общем удалил триггеры оттуда все, теперь мгновенно удаляет )


нескучный насыщенный у вас девелопмент, т.е. кто-то напихал триггеров, которые были нафиг не нужны? и даже вредили?

"чотаржу"

а, позвольте спросить, триггера как удаляли ? дропом , или прямиком из системки ккуям ?
...
Рейтинг: 0 / 0
почему так долго удаляется, если включены триггеры?
    #39607485
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwqа, позвольте спросить, триггера как удаляли ? дропом , или прямиком из системки ккуям ?
с добрым утром
я уже кластер переставил ))
...
Рейтинг: 0 / 0
почему так долго удаляется, если включены триггеры?
    #39607498
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так, а FK тоже откуда-то надо зачищать, когда таблицу например дропаешь?
...
Рейтинг: 0 / 0
почему так долго удаляется, если включены триггеры?
    #39607527
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78так, а FK тоже откуда-то надо зачищать, когда таблицу например дропаешь?
мда надо мониторить тоже на предмет образования дублей:
Код: sql
1.
select conname from pg_constraint order by conname;
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / почему так долго удаляется, если включены триггеры?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]