Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Помогите понять deadlock
|
|||
|---|---|---|---|
|
#18+
У меня есть база на SQL Server 2012. На ней работает несколько разных процессов, к ней обращающихся. И вот у меня начали регулярно происходить ошибки “Transaction (Process ID xx) was deadlocked on lock resources with another process”. Вот как они случаются. Сам deadlock chart см в приложенном файле DeadLock.zip\DeadLock.png. Process который victim: Процедура под названием [IP.InsertIPCAEDetail]. Её полный код см в приложенном файле DeadLock.zip\[IP.InsertIPCAEDetail].sql. Её участок вызвавший deadlock: Код: sql 1. 2. 3. 4. 5. 6. 7. Process который не-victim: Процедура под названием [SRD.MergeWork]. Её полный код см в приложенном файле DeadLock.zip\[SRD.MergeWork].sql. Её участок вызвавший deadlock: Код: 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. 38. 39. 40. Объекты данных вовлечённые в deadlock: Таблица [Work.WorkContributor]: Код: 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. 38. 39. 40. 41. 42. 43. Её индекс (упомянутый в DeadLock) [idxIPCAEDetailID_Index]: Код: sql 1. 2. 3. 4. 5. View [WS.IntrayCodeToIPCode]: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Таблица [Intray.WorkContributor], на которой основано это View: Код: 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. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2018, 18:07 |
|
||
|
Помогите понять deadlock
|
|||
|---|---|---|---|
|
#18+
KellyLynch, IntrayCodeToIPCode на ней поди и кластерный есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2018, 18:16 |
|
||
|
Помогите понять deadlock
|
|||
|---|---|---|---|
|
#18+
KellyLynch, От вашей картинки толку никакого. Показывайте граф в xml формате. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2018, 18:17 |
|
||
|
Помогите понять deadlock
|
|||
|---|---|---|---|
|
#18+
invmKellyLynch, От вашей картинки толку никакого. Показывайте граф в xml формате. Вот он: xml_deadlock_report (2018-06-05 15_32_14.2089385) - xml_report10.xml ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2018, 18:45 |
|
||
|
Помогите понять deadlock
|
|||
|---|---|---|---|
|
#18+
TaPaKKellyLynch, IntrayCodeToIPCode на ней поди и кластерный есть? Да - view [WS.IntrayCodeToIPCode] имеет кластерный индекс: Код: sql 1. 2. 3. 4. 5. Этот факт и объясняет deadlock? Если да - то как именно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2018, 18:49 |
|
||
|
Помогите понять deadlock
|
|||
|---|---|---|---|
|
#18+
KellyLynch, Таки вот тут кошерная статья для понимания, как могут возникать deadlock, если у Вас кластерный поверх view. Там не insert, а два update , но общий принцип думаю понятен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2018, 19:18 |
|
||
|
Помогите понять deadlock
|
|||
|---|---|---|---|
|
#18+
KellyLynch, Как вариант с потолка - попробуйте в оба insert добавлять явно TABLOCKX или TABLOCK. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2018, 19:20 |
|
||
|
Помогите понять deadlock
|
|||
|---|---|---|---|
|
#18+
KellyLynchTaPaKKellyLynch, IntrayCodeToIPCode на ней поди и кластерный есть? Да - view [WS.IntrayCodeToIPCode] имеет кластерный индекс: Код: sql 1. 2. 3. 4. 5. Этот факт и объясняет deadlock? Если да - то как именно? изменение объекта ведёт к изменению представление общий объект которых получаете WorkContributor, и + группировка, или избавиться от индексированного представление(совсем не факт что оно вам надо) или думать как разводить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2018, 20:01 |
|
||
|
Помогите понять deadlock
|
|||
|---|---|---|---|
|
#18+
KellyLynchЭтот факт и объясняет deadlock?Отчасти. KellyLynchЕсли да - то как именно?1. В транзакции, где вызывается [IP.InsertIPCAEDetail], ранее была прочитана таблица [Work.WorkContributor] с хинтом serializable или holdlock - это причина наличия RangeS-S в графе. При выполнении вставки в [IPCAEDetail] нужно обновить инднексированное представление [WS.IntrayCodeToIPCode] - отсюда ожидание U в графе 2. В транзакции, где вызывается [SRD.MergeWork], ранее были действия вызвавшие обновление представления [WS.IntrayCodeToIPCode] - отсюда U в графе Вставка в [Work.WorkContributor] порождает RangeI-N, которая конфликтует с RangeS-S из п.1 Для начала выясните зачем используется чтение с serializable или holdlock. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2018, 20:01 |
|
||
|
Помогите понять deadlock
|
|||
|---|---|---|---|
|
#18+
TaPaKKellyLynchпропущено... Да - view [WS.IntrayCodeToIPCode] имеет кластерный индекс: Код: sql 1. 2. 3. 4. 5. Этот факт и объясняет deadlock? Если да - то как именно? изменение объекта ведёт к изменению представление общий объект которых получаете WorkContributor, и + группировка, или избавиться от индексированного представление(совсем не факт что оно вам надо) или думать как разводить " изменение объекта ведёт к изменению представление общий объект которых получаете WorkContributor " - прошу прощения, а можно то же самое, но более "разжёванно"? - не уверен что всё понял... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2018, 18:13 |
|
||
|
Помогите понять deadlock
|
|||
|---|---|---|---|
|
#18+
KellyLynchTaPaKпропущено... изменение объекта ведёт к изменению представление общий объект которых получаете WorkContributor, и + группировка, или избавиться от индексированного представление(совсем не факт что оно вам надо) или думать как разводить " изменение объекта ведёт к изменению представление общий объект которых получаете WorkContributor " - прошу прощения, а можно то же самое, но более "разжёванно"? - не уверен что всё понял... в индексированном вью у вас соединение двух таблиц. изменение любой из них ведет к пересчету этого вью. в вашем случае идет вставка в IPCAEDetail, это означает, что и во вью надо пересчитать count для IpCode ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2018, 14:55 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=147&tid=1689608]: |
0ms |
get settings: |
7ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
| others: | 264ms |
| total: | 411ms |

| 0 / 0 |
