|
|
|
Вопрос о тормазах при применении триггера
|
|||
|---|---|---|---|
|
#18+
Кто-нибудб может объяснить в чем проблема? Ниже приведенный триггер слишком уж тормозит выполнение UPDATE'а. Триггер обновляет таблицу Complect на изменние таблицы ListDefect. Выполняю этот UPDATE: UPDATE dbo.ListDefect SET G=1, B=1, R=1, Ws='', N=1, O=1 WHERE IDGPA=6 AND IDSTR=1 Проходит в среденем три секунды, а бывает так чтои не дождаться (покрайней мере до 2-3 минут доходило). Что не так в триггере или есть какие-то другие проблемы? А вот и сам злополучный триггер: CREATE TRIGGER AfterUpdate ON dbo.ListDefect FOR UPDATE AS UPDATE dbo.Complect SET dbo.Complect.G=LD.G, dbo.Complect.B=LD.B, dbo.Complect.R=LD.R, dbo.Complect.Ws=LD.Ws, dbo.Complect.N=LD.N, dbo.Complect.O=LD.O FROM ListDefect LD WHERE dbo.Complect.IDGPA=LD.IDGPA AND dbo.Complect.IDSTR=LD.IDSTR Вот статистика выполнения SQL Server Execution Times: CPU time = 0 ms, elapsed time = 0 ms. SQL Server Execution Times: CPU time = 0 ms, elapsed time = 0 ms. SQL Server parse and compile time: CPU time = 0 ms, elapsed time = 0 ms. SQL Server parse and compile time: CPU time = 0 ms, elapsed time = 0 ms. Table 'ListDefect'. Scan count 1, logical reads 23, physical reads 0, read-ahead reads 0. SQL Server parse and compile time: CPU time = 0 ms, elapsed time = 0 ms. Table 'Complect'. Scan count 1, logical reads 161376, physical reads 0, read-ahead reads 0. Table 'ListDefect'. Scan count 1, logical reads 555, physical reads 0, read-ahead reads 0. SQL Server Execution Times: CPU time = 2391 ms, elapsed time = 2756 ms. SQL Server Execution Times: CPU time = 2391 ms, elapsed time = 2757 ms. (1 row(s) affected) SQL Server parse and compile time: CPU time = 0 ms, elapsed time = 0 ms. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2002, 11:48:25 |
|
||
|
Вопрос о тормазах при применении триггера
|
|||
|---|---|---|---|
|
#18+
Проблемму твою не решу, однако я закрыл свои подобные проблеммы переходом на все апдейты через сохраненку и отказ от тригерров. Больше писать, зато проблемм больше не было никогда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2002, 11:53:03 |
|
||
|
Вопрос о тормазах при применении триггера
|
|||
|---|---|---|---|
|
#18+
Вот это настораживает - "logical reads 161376" Стоит изменить либо алгоритм либо структуру данных, чтобы из триггера не было таких больших телодвижений сервера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2002, 12:06:38 |
|
||
|
Вопрос о тормазах при применении триггера
|
|||
|---|---|---|---|
|
#18+
А зачем в триггере идет апдейт по всей таблице??? надо использовать inserted/deleted таблицы, чтобы уменьшить кол-во записей... кроме того, индексы по таблицам есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2002, 12:30:26 |
|
||
|
Вопрос о тормазах при применении триггера
|
|||
|---|---|---|---|
|
#18+
Не покатит? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2002, 13:04:20 |
|
||
|
Вопрос о тормазах при применении триггера
|
|||
|---|---|---|---|
|
#18+
Алгоритм прокатил,спасибо. Однако выяснилось что триггер должен выполняться при определенных условиях. Типа: ListDefect.Kol_str=G+B+R+N+O ListDefect.CloseDef<>1 Как бы эти условия обработать в томже триггере, и он не производил UPDATE таблицы Complect? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2002, 15:00:12 |
|
||
|
Вопрос о тормазах при применении триггера
|
|||
|---|---|---|---|
|
#18+
Так? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2002, 19:07:51 |
|
||
|
Вопрос о тормазах при применении триггера
|
|||
|---|---|---|---|
|
#18+
... в смысле Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2002, 19:09:30 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32037419&tid=1821713]: |
0ms |
get settings: |
10ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
29ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 311ms |

| 0 / 0 |
