|
ASE 12.5.1 процедура "подвисает" в разных местах
|
|||
---|---|---|---|
#18+
Пытаемся ускорить работу большой и медленной процедуры, для отладки в разных местах понаставили в нее метки вида Код: sql 1. 2. 3. 4. 5.
и получилось что процедура стабильно в разных местах непонятно почему зависает на несколько (5-10) секунд. Например вот такой код: Код: sql 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.
отработал 5 секунд, хотя переменная @number = NULL, то есть тут вообще никаких расчетов нет и работать должно мгновенно. Подскажите пожалуйста, может быть будут какие-то идеи куда тут копать? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2018, 17:10 |
|
ASE 12.5.1 процедура "подвисает" в разных местах
|
|||
---|---|---|---|
#18+
SergeFr, А вот по какаой причине вы пишите вот так вот? Код: sql 1.
А не так? Код: sql 1.
А так -- вам надо просто аккуратно программировать процедуры, корректно проверять все случаи и контролировать что они не зацикливаются. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2018, 22:47 |
|
ASE 12.5.1 процедура "подвисает" в разных местах
|
|||
---|---|---|---|
#18+
SergeFr, автори получилось что процедура стабильно в разных местах непонятно почему зависает на несколько (5-10) секунд. Если вы сделали такие выводы на основе времён, записанных в лог в поле, в которое вы кладёте GetDate (), то очень запросто это может быть не так. Т.е. реально процедура вообще не "подвисает". ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2018, 22:54 |
|
ASE 12.5.1 процедура "подвисает" в разных местах
|
|||
---|---|---|---|
#18+
MasterZivSergeFr, А вот по какаой причине вы пишите вот так вот? Код: sql 1.
А не так? Код: sql 1.
А так -- вам надо просто аккуратно программировать процедуры, корректно проверять все случаи и контролировать что они не зацикливаются. От перестановки операндов результат не поменяется. А если бы зацикливалось, то на одинаковых данных процедура подвисала бы в одном и том же месте, это я бы уже нашел. Да и нет в этой процедуре каких-то сложных циклов. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2018, 09:12 |
|
ASE 12.5.1 процедура "подвисает" в разных местах
|
|||
---|---|---|---|
#18+
MasterZivSergeFr, автори получилось что процедура стабильно в разных местах непонятно почему зависает на несколько (5-10) секунд. Если вы сделали такие выводы на основе времён, записанных в лог в поле, в которое вы кладёте GetDate (), то очень запросто это может быть не так. Т.е. реально процедура вообще не "подвисает". А почему так? Я уже довольно давно таким методом пользуюсь для оптимизации и раньше он всегда давал верную картину. Что с ним не так? И какой метод тогда вы считаете более правильно использовать? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2018, 09:15 |
|
ASE 12.5.1 процедура "подвисает" в разных местах
|
|||
---|---|---|---|
#18+
SergeFr, У вас случаем блокировки|задержки не возникают при записи в вашу таблицу логов? Есть возможность дёрнуть процедуру автономно, или нужен контекст для вызова.? Попробуйте записать разницу во времени между входом и выходом из блока в консоль. Залогируйте значения переменных рядом со временем. Может будет корреляции видна. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2018, 22:37 |
|
ASE 12.5.1 процедура "подвисает" в разных местах
|
|||
---|---|---|---|
#18+
Mikle83SergeFr, У вас случаем блокировки|задержки не возникают при записи в вашу таблицу логов? Есть возможность дёрнуть процедуру автономно, или нужен контекст для вызова.? Попробуйте записать разницу во времени между входом и выходом из блока в консоль. Залогируйте значения переменных рядом со временем. Может будет корреляции видна. Спасибо за идею! Попробовал таким образом отследить время вставки: Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
То есть я тут запоминаю время вставки по предыдущей метке и сохраняю при следующей вставке. Погонял на разных объемах, разница стабильно не более нескольких миллисекунд, так что похоже что не в этом проблема. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2018, 10:37 |
|
ASE 12.5.1 процедура "подвисает" в разных местах
|
|||
---|---|---|---|
#18+
SergeFrMikle83SergeFr, У вас случаем блокировки|задержки не возникают при записи в вашу таблицу логов? Есть возможность дёрнуть процедуру автономно, или нужен контекст для вызова.? Попробуйте записать разницу во времени между входом и выходом из блока в консоль. Залогируйте значения переменных рядом со временем. Может будет корреляции видна. Спасибо за идею! Попробовал таким образом отследить время вставки: Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
То есть я тут запоминаю время вставки по предыдущей метке и сохраняю при следующей вставке. Погонял на разных объемах, разница стабильно не более нескольких миллисекунд, так что похоже что не в этом проблема. UPD: После дополнительных тестов выяснилось, что иногда все-таки действительно на вставке в таблицу с логом умирает на несколько секунд, будем это учитывать при отладке, спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2018, 12:40 |
|
|
start [/forum/topic.php?fid=55&msg=39696997&tid=2009610]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
others: | 245ms |
total: | 383ms |
0 / 0 |