|
|
|
UPDATE 12 секунд
|
|||
|---|---|---|---|
|
#18+
Добрый вечер столкнулся с неприятной ситуацией, когда в каскаде процедур нужно обновить одну маленькую, но очень важную таблицу. Таблица простая... Код: 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. и вот, в одной из процедур мне надо обновлять эту таблицу, обновить amount(ы) да ид транзакции, по ИД записи, но процедура утыкается в это обновление и валиться, причём в рандомное время на рандомном ИД что совсем обидно. Естественно всё что после обновления не проходит это заставляет в субботу искать правды по форумам. Понимаю что что то лочит таблицу, но врага таинственного не могу найти. Таблица то меньше чем 20 000 записей. Поделитесь идеями что можно сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2017, 20:01:58 |
|
||
|
UPDATE 12 секунд
|
|||
|---|---|---|---|
|
#18+
Extremistно процедура утыкается в это обновление и валитьсяИ конечно же, как обычно, молча. ExtremistПонимаю что что то лочит таблицу, но врага таинственного не могу найти.Откуда пришло понимание, если валится молча? ExtremistПоделитесь идеями что можно сделать?Для начала перестать партизанить и показать сообщение об ошибке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2017, 20:14:06 |
|
||
|
UPDATE 12 секунд
|
|||
|---|---|---|---|
|
#18+
ExtremistПонимаю что что то лочит таблицу, но врага таинственного не могу найти.Любое действие вызывает блокировки, их тысячи в секунду. ExtremistПоделитесь идеями что можно сделать?Ну, нужно что нибудь поменять. От вас пока никакой конкретики, что ещё можно посоветовать? Может, у вас таймаут на выполнение 1 секунда? Может, процедура нарушает констрейн? Пока ничего непонятно, даже какая ошибка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2017, 20:21:13 |
|
||
|
UPDATE 12 секунд
|
|||
|---|---|---|---|
|
#18+
invm, а никаких ошибок нет. Наставил кучу логов по ходу процедуры, точнее процедур и просто обрыв. Перезапуск последней команды на апдейт таблицы и он исполняется, но 5-12 секунд. Ощущение. что процедура попросту не дожидается ответа, притом никаких ошибок вообще. типа ничего не было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2017, 20:33:04 |
|
||
|
UPDATE 12 секунд
|
|||
|---|---|---|---|
|
#18+
Extremistа никаких ошибок нет. Наставил кучу логов по ходу процедуры, точнее процедур и просто обрыв.Сервер делает вид, что процедура выполняется, но она не выполняется? Чудеса. Откуда тогда идея про локи? Отваливание по таймауту, или отваливание по дедлокам - совершенно конкретные ошибки, с кодом и текстом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2017, 20:37:03 |
|
||
|
UPDATE 12 секунд
|
|||
|---|---|---|---|
|
#18+
alexeyvg, тай аутов нет, все известные на эту таблицу WITH (NOLOCK) >Может, процедура нарушает констрейн? можно чуть подробнее? по поводу ошибки- нет ошибки. В ручную добиться такого поведения не могу на второй базе такая же структура как часики работает, только разница версий, на которой лаги Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64) на которой всё красиво 12 Microsoft SQL Server 2014 - 12.0.2000.8 (X64) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2017, 20:39:52 |
|
||
|
UPDATE 12 секунд
|
|||
|---|---|---|---|
|
#18+
alexeyvg, создал отдельную таблицу, пишу туда каждую строчку перед исполнением строчка есть, исполнения нет, после строчки тишина ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2017, 20:42:20 |
|
||
|
UPDATE 12 секунд
|
|||
|---|---|---|---|
|
#18+
Extremist, в профайлере не видно, что происходит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2017, 21:16:03 |
|
||
|
UPDATE 12 секунд
|
|||
|---|---|---|---|
|
#18+
iap, база активно используется, бонусом радомность ошибки, сейчас профайлером записываю всё, но пока тишина ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2017, 21:28:23 |
|
||
|
UPDATE 12 секунд
|
|||
|---|---|---|---|
|
#18+
Extremist на которой лаги Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64) С того момента вышли SP2, SP3, SP4. А в SP2 был фикс KB805659, который сильно смахивает на Ваши условия. Не дословно, конечно, но вот это "в каскаде процедур нужно обновить одну маленькую, но очень важную таблицу" и "[id] [int] IDENTITY(1,1) NOT NULL". И был достаточно забавный фикс KB1347204, где речь шла о последовательностях и cross-database transaction. "процедура утыкается в это обновление и валиться, причём в рандомное время на рандомном ИД что совсем обидно" - а учитывая, что правили как раз те места, которые Вам мешают своими падениями...Плюс в SP3 был фикс KB3107397, тоже видно, что оптимизатор запросов чинили. И еще, коллега, после фикса KB3146404 работать на 2012-м без SP4 - это достаточно легкомысленно. Не думайте, что я призываю Вас все бросить и накатить, но лучше, чтобы у Вас версия релиза стала 11.00.7001, а не 11.00.3128. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2017, 00:25:11 |
|
||
|
UPDATE 12 секунд
|
|||
|---|---|---|---|
|
#18+
Andy_OLAP, Большое спасибо. Да, обновление версии уже рассматривалось как опция, но менеджеры не верят в способность базы данных содержать ошибки. Думаю аргументов в вашем письме достаточно что бы необходимые средства были выделены. Большое вам спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2017, 11:55:21 |
|
||
|
UPDATE 12 секунд
|
|||
|---|---|---|---|
|
#18+
Extremistalexeyvg, создал отдельную таблицу, пишу туда каждую строчку перед исполнением строчка есть, исполнения нет, после строчки тишинаИсполнения чего нет, процедуры? Запрос к сиквелу есть, сиквел возвращает статус исполнено, но на самом деле процедуру не исполняет? Нет, этого не происходит, это фантастика. Независимо от версий и наличия сервис-паков. У вас либо гасятся ошибки, либо процедура содержит ошибки в логике, и не делает того, что вам нужно, а вы это интерпретируете как "невыполнение процедуры". Extremistбонусом радомность ошибки, сейчас профайлером записываю всё, но пока тишинаТак откуда вывод, что процедура не исполнилась, если вы этого не видели в профайлере? По результатам, которые должны быть после выполнения? Хе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2017, 14:02:59 |
|
||
|
UPDATE 12 секунд
|
|||
|---|---|---|---|
|
#18+
alexeyvg, Бывает такое. Бежит-бежит процедура, и тут, посреди батча раз, и закончилась, в совершенно неожиданном месте. Или даже ожидаемом, но преждевременно. У меня это было по ADO, когда set nocount off. Тогда клиент может принять за возвращаемый рекордсет результаты любого батча, если после него идёт долгая пауза (например следующий тяжёлый батч)... Репро устроить достаточно легко, например в Эксцеле или Ассесе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2017, 11:31:09 |
|
||
|
UPDATE 12 секунд
|
|||
|---|---|---|---|
|
#18+
alexeyvgпроцедура не исполнилась, если вы этого не видели в профайлере? По результатам, которые должны быть после выполнения? Хе. Ну, может таблицы, которые должны были измениться не изменились? Нет изменения- нет результата ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2017, 16:36:03 |
|
||
|
UPDATE 12 секунд
|
|||
|---|---|---|---|
|
#18+
Шыфлalexeyvg, Бывает такое. Бежит-бежит процедура, и тут, посреди батча раз, и закончилась, в совершенно неожиданном месте. Или даже ожидаемом, но преждевременно. У меня это было по ADO, когда set nocount off. Тогда клиент может принять за возвращаемый рекордсет результаты любого батча, если после него идёт долгая пауза (например следующий тяжёлый батч)... Репро устроить достаточно легко, например в Эксцеле или Ассесе Как отремонтировать идеи есть? проапдейтил базу до SP4 11.00.7001- безтолку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2017, 16:37:39 |
|
||
|
UPDATE 12 секунд
|
|||
|---|---|---|---|
|
#18+
Extremistalexeyvgпроцедура не исполнилась, если вы этого не видели в профайлере? По результатам, которые должны быть после выполнения? Хе. Ну, может таблицы, которые должны были измениться не изменились? Нет изменения- нет результата но это не означает что есть ошибка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2017, 16:43:05 |
|
||
|
UPDATE 12 секунд
|
|||
|---|---|---|---|
|
#18+
Гигабайт Мегабайтович Килобайтов, Хмм, а что же это? некоректно завершённая процедура? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2017, 16:45:34 |
|
||
|
UPDATE 12 секунд
|
|||
|---|---|---|---|
|
#18+
Extremist, что за хрень вообще обсуждается? В sql ситуация не воспроизводится? Смотрите что делает клиент, в терории кака пишут, если выполнение ожидает датасет и после сразу закрывает соединение, то по set nocount off вполне получить откат ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2017, 16:56:19 |
|
||
|
UPDATE 12 секунд
|
|||
|---|---|---|---|
|
#18+
TaPaKчто за хрень вообще обсуждается? В sql ситуация не воспроизводится? Смотрите что делает клиент, в терории кака пишут, если выполнение ожидает датасет и после сразу закрывает соединение, то по set nocount off вполне получить откат после UPDATE account SET transaction_id = @transaction_id, amount_open = @amount_open WHERE user_id = @user_id Вообще ничего не происходит! А так да- всё отлично ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2017, 17:00:50 |
|
||
|
UPDATE 12 секунд
|
|||
|---|---|---|---|
|
#18+
Extremist, а что должно происходить? феерверк? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2017, 17:08:38 |
|
||
|
UPDATE 12 секунд
|
|||
|---|---|---|---|
|
#18+
Так может стоит сделать индекс и тогда не будет при обновлении записи все вычитываться: Код: sql 1. 2. 3. 4. 5. 6. как вариант.... и если поле user_id уникальное, то почему не подсказать оптимизатору об этом. Либо свойством UNIQUE в индексе либо в самом UPDATE. Дважды перечитал так и не понял проблемы Вашей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2017, 17:15:29 |
|
||
|
UPDATE 12 секунд
|
|||
|---|---|---|---|
|
#18+
- если убрать update дальше выполняется? - попробуйте воставить любую перекомпиляция стейтмента (OPTION (RECOMPILE)) на update для интересу - есть баг на прибитый индекс в plan guide, хотя может и пофиксен давно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2017, 17:23:22 |
|
||
|
UPDATE 12 секунд
|
|||
|---|---|---|---|
|
#18+
если расчехлять шар ещё дальше: DBCC CHECKDB без проблем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2017, 17:27:33 |
|
||
|
UPDATE 12 секунд
|
|||
|---|---|---|---|
|
#18+
AlanDenton, Извиняюсь, мой косяк Код: sql 1. вот потный запрос ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2017, 18:25:59 |
|
||
|
UPDATE 12 секунд
|
|||
|---|---|---|---|
|
#18+
TaPaK- если убрать update дальше выполняется? - попробуйте воставить любую перекомпиляция стейтмента (OPTION (RECOMPILE)) на update для интересу - есть баг на прибитый индекс в plan guide, хотя может и пофиксен давно Во первых даже не убирая проходит в 95% случаем косячит на 5%, конечно если убрать то и косяка не будет. Селеты инсерты работают на ура, лагает именно на апдейте и то не всегда. Перекопал все запросы, что бы SELECT WITH (NOLOCK) везде, пока хватает глаз везде не точил. Грешу на глубокую вложенность запроса, но запрос то конечный и должен фиксировать конечные данные , выше не поставишь никак. Таблица то не более 30 000 записей Логи чистые, подняли версию базы- не помогло. Но что самое паршивое, рядом стоит такая же база, чуток меньше загруженная и всё ок. Запустил профайлер- пока тишина. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2017, 18:36:18 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39567155&tid=1690679]: |
0ms |
get settings: |
6ms |
get forum list: |
21ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
211ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
84ms |
get tp. blocked users: |
2ms |
| others: | 201ms |
| total: | 545ms |

| 0 / 0 |
