Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Помогите с deadlock PK Index
|
|||
|---|---|---|---|
|
#18+
авторSERIALIZABLE при массовых вставках - вообще ни разу не таблок ась? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2018, 16:48 |
|
||
|
Помогите с deadlock PK Index
|
|||
|---|---|---|---|
|
#18+
TaPaK, Советы у тебя шикарные. Буквы выучил, что при этом происходить будет пока не разобрался. При коннекте ему предложи транзакцию открывать и в ней все делать до конца рабочего дня. Ну и к чему приведет SERIALIZABLE на массовых вставках в дочернюю таблицу, которая смотрит куда-то по FK? Что будет заблокировано? волшебный "диапазон"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2018, 17:05 |
|
||
|
Помогите с deadlock PK Index
|
|||
|---|---|---|---|
|
#18+
на деревне асьTaPaK, Советы у тебя шикарные. Буквы выучил, что при этом происходить будет пока не разобрался. При коннекте ему предложи транзакцию открывать и в ней все делать до конца рабочего дня. Ну и к чему приведет SERIALIZABLE на массовых вставках в дочернюю таблицу, которая смотрит куда-то по FK? Что будет заблокировано? волшебный "диапазон"? у него и так транзакция на всю длинну во втором случае таблица Result как раз таки и залочила всё что внутри и соотвественно всё что по FK ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2018, 17:07 |
|
||
|
Помогите с deadlock PK Index
|
|||
|---|---|---|---|
|
#18+
Может быть дело в NONCLUSTERED INDEX ? В таблицах Data.CalculationResult, Data.CalculationNetElement есть индексы на внешний ключ CalculationId CREATE NONCLUSTERED INDEX [IX_CalculationNetElement_CalculationId] ON [Data].[CalculationNetElement] ( [CalculationId] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) GO CREATE NONCLUSTERED INDEX [IX_CalculationResult_CalculationId] ON [Data].[CalculationResult] ( [CalculationId] ASC ) INCLUDE ( [ObjectControlId], [ValueDateTime], [Mdp]) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) GO В остальных таблицах такого индекса нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2018, 17:33 |
|
||
|
Помогите с deadlock PK Index
|
|||
|---|---|---|---|
|
#18+
ТС, тэги есть для кода, а то глаза ломать приходиться ЗЫ у вас же дэдлок на другой таблице ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2018, 17:36 |
|
||
|
Помогите с deadlock PK Index
|
|||
|---|---|---|---|
|
#18+
egorrezchikov, Если Вы его уберете, то проблема исчезнет. Вставка слева обновляет таблицу: блокирует кластерный, накладывает намерение обновления на некластерный индекс. Процесс справа читает ту же страницу некластерного S блокировкой и хочет обновить кластерный индекс. Тот, что слева ждет снятия блокировки чтения некластерного индекса, а тот что справа ждет освобождение кластерного индекса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2018, 17:42 |
|
||
|
Помогите с deadlock PK Index
|
|||
|---|---|---|---|
|
#18+
Владислав Колосов, Спасибо за совет, попробую. Я так понял это единственное решение? Если удалить эти индексы, то потом может упасть скорость чтения данных. Я недавно читал про настройку ONLINE для индекса, она влияет только на режим rebuild или reorganize? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2018, 17:59 |
|
||
|
Помогите с deadlock PK Index
|
|||
|---|---|---|---|
|
#18+
Владислав Колосов, Дык дэдлок же на родительском пк. На эти индексы в указанном коде шаредом никто не заходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2018, 18:00 |
|
||
|
Помогите с deadlock PK Index
|
|||
|---|---|---|---|
|
#18+
egorrezchikov, удалить надо FK ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2018, 18:01 |
|
||
|
Помогите с deadlock PK Index
|
|||
|---|---|---|---|
|
#18+
egorrezchikovМожет быть дело в NONCLUSTERED INDEX ?Точно! И как же мы раньше не догадались? Хотя в графах нет ни единого упоминания о некластерных индексах, дело безусловно в них. Стопудово. Вместо того, чтобы проанализировать планы запросов для понимания происходящего, или хотя бы выяснить почему же Data.CalculationFactor блокируется целиком, вы решили последовать вредным, но простым советам типа убиения индексов или FK. Остается только пожелать вам успехов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2018, 18:48 |
|
||
|
Помогите с deadlock PK Index
|
|||
|---|---|---|---|
|
#18+
egorrezchikov, Плохо, что планы оценочные, а не актуальные... Возьмем дедлочащую инструкцию из первого графа Код: sql 1. 2. 3. 4. 5. 6. 7. 8. Если фактический план совпадает с оценочным и, как вы писали, @CalculationId неизменен, то такого дедлока просто не может быть. Потому что в этой инструкции конкурирующие процессы не пересекаются по блокировкам на Data.Calculation. Можно воспроизвестьи вашу ситуацию. Создайте тестовые таблицы: Код: sql 1. 2. 3. 4. 5. 6. Затем откройте в студии два соединения. В первом запустите Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Во втором Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. В одном из соединений возникнет дедлок. Замените option (merge join) на option (loop join) и запустите еще раз - дедлока не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2018, 12:44 |
|
||
|
Помогите с deadlock PK Index
|
|||
|---|---|---|---|
|
#18+
invm, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2018, 19:35 |
|
||
|
Помогите с deadlock PK Index
|
|||
|---|---|---|---|
|
#18+
и запустите еще ра, И? Гарантируете расположение потенциально конфликтующих строк всегда на одной странице? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2018, 11:43 |
|
||
|
Помогите с deadlock PK Index
|
|||
|---|---|---|---|
|
#18+
invm, Конечно нет. Но так вполне себе веселей и дедлоков будет гораздо меньше. С учетом штучной вставки в CLUSTERED IDENTITY - вполне зашибись получится. И в каком-то смысле ближе к телу (имхо). Начнет массово делать и в разные диапазоны значений ПК - дедлоки будут, но в разы меньше чем сейчас. В случае с LOOPами при определенных сценариях другие вопросы могут возникнут характерные для лупов. Ну т.е. и так, и сяк можно. И там, и тут можно нарваться на то что работает оно "именно так как должно" и абсолютно конкретно, а не туманно волшебно. Сделать это (попробовать PAGLOCK) можно было двумя страницами ранее, как говорится "не вдаваясь в подробности", поскольку природа и сценарий абсолютно типовые. Тем же можно лечить выражение MERGE со схожими симптомами, дополненными местными особенностями. И план выполнения не трогается (хоть тут и не то что бы актуально). Я с решением не спорю, а пытаюсь дополнить еще одним свидетельством того, что проблема связана именно с собиранием конкретных нужных строк. Ну, может, чуть-чуть продолжаю спорить про предложение поставить ROWLOCK, который почти полностью и является причиной конкретной проблемы. Про удаление FK - абсолютно всерьез. Названия таблиц намекают на то что занимаются их наполнением роботы, в ХП все предельно понятно, транзакция есть. Чтобы порушить надо влезть целенаправленно руками. Оверхеды и нюансы - лицезреем в полный рост, смысла - скорее всего около нуля. Ситуация у OP вполне конкретная, он уже трай-кэтчами дедлоки свои обернул ("ишь, как ухаживает. любит, наверное" (с) особенности рыбалки), хотя вырубив объективно (с учетом представленного) незадействованный механизм полностью может от них избавиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2018, 13:34 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39603240&tid=1690254]: |
0ms |
get settings: |
6ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
74ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 246ms |
| total: | 418ms |

| 0 / 0 |
