Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Объясните работу триггера
|
|||
|---|---|---|---|
|
#18+
Собственно сабж. Создаю триггер, который должен работать после вставки или обновления данных в таблице. С самой триггерной функцией вопросов нет - написана, отдебажена - работает. Проблема возникает следующего характера. Сначала приведу кусок кода, потом объясню, что к чему(писано на Perl): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. Затык в чем. Логично было бы повесить на временную таблицу триггер который бы сразу же бы и сортировал бы данные по таблицам, но увы вариант не подходит - время тратится в несколько часов, что для такой маленькой порции не есть гуд. По сему была сделана дополнительно одна таблица, при вставке или обновлении которой бы и вызывался тригер по сортировке временной таблицы. Ессно, что после Внесения всех данных(видно из кода). В общем все доходит до создания таблицы, на которую я вешаю триггер, потом выполняется insert/update в эту таблицу. По логике, скрипт вставив бы данные должен был бы пойти дальше, но нет, он терпеливо ждет, когда отработают все триггера и функции. Вот И возникает вопрос, а почему собственно он ждет, а непросто всатвит данные и не идет дальше? Или это особенность работы триггера? Пока он не отработает, программу никуда не пустит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 00:25 |
|
||
|
Объясните работу триггера
|
|||
|---|---|---|---|
|
#18+
Да, вот добавлю лог, я по нему приблихзительное время работы скрипта оцениваю Код: plaintext 1. 2. 3. 4. 5. 6. 7. вторая и третья - время потраченное на вставку данных четвертая - время потраченное на (создание + вставку)/обновление таблицы temp_table_trigger. И соответственно срабаывание триггера, пересчет всех данных, распихивание по всем таблицам и прочее. Как видите - немало времени тратиться на непритязательный и несложный кусок кода: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 00:34 |
|
||
|
Объясните работу триггера
|
|||
|---|---|---|---|
|
#18+
Skif SwarogichПо логике, скрипт вставив бы данные должен был бы пойти дальше, но нет, он терпеливо ждет, когда отработают все триггера и функции. Вот И возникает вопрос, а почему собственно он ждет, а непросто всатвит данные и не идет дальше? Или это особенность работы триггера? Пока он не отработает, программу никуда не пустит?Все не читал, отвечу только на это. Конечно программа ждет, пока выполнится запрос. Если вы не хотите ждать, запускайте запрос в отдельном потоке. Или используйте libpq 29.4. Asynchronous Command Processing . Умеет ли DBD::pg так работать я не знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 08:14 |
|
||
|
Объясните работу триггера
|
|||
|---|---|---|---|
|
#18+
То есть, это нормально, что выполнив вставку данных в таблицу, на которую повязан триггер, я вынужден ждать, пока он отработает? И только форком, или распаралеливанием от этого можно избавиться? Тогда смысл в триггерах как таковых? Если для вставки одной строки из одного символа мне приходиться ждать 10-20 минут ответа от сервера? За это время меня и по таймауту могут послать, если сервер удаленный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 13:11 |
|
||
|
Объясните работу триггера
|
|||
|---|---|---|---|
|
#18+
Skif SwarogichТо есть, это нормально, что выполнив вставку данных в таблицу, на которую повязан триггер, я вынужден ждать, пока он отработает?Да. Триггер может эту вставку отменить, вызвать исключение и т.д. А тебе после всего этого нужно еще commit сделать. Skif SwarogichТогда смысл в триггерах как таковых? "Вы просто не умеет их готовить" Skif SwarogichЕсли для вставки одной строки из одного символа мне приходиться ждать 10-20 минут ответа от сервера?Думаю стоит изменить алгоритм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 13:51 |
|
||
|
Объясните работу триггера
|
|||
|---|---|---|---|
|
#18+
Serik Akhmetov Skif SwarogichТо есть, это нормально, что выполнив вставку данных в таблицу, на которую повязан триггер, я вынужден ждать, пока он отработает?Да. Триггер может эту вставку отменить, вызвать исключение и т.д. А тебе после всего этого нужно еще commit сделать. Skif SwarogichТогда смысл в триггерах как таковых? "Вы просто не умеет их готовить" Skif SwarogichЕсли для вставки одной строки из одного символа мне приходиться ждать 10-20 минут ответа от сервера?Думаю стоит изменить алгоритм. Спасибо, въехал. Мне тут на слух оценили структуру базы и объяснили, что она у меня практически вся лочится и пока не отработает мой триггер и таблица не отлочиться возврат в свою программу я не получу. Что ж, будем повышать быстродействие... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 23:48 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=34501938&tid=2005482]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
52ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 218ms |
| total: | 336ms |

| 0 / 0 |
