Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Принудительный ordered scan по временной таблице
|
|||
|---|---|---|---|
|
#18+
Владислав КолосовinvmЗадача - добавить из источника строки, отсутствующие в целевой таблице. Что тут лишнее, которое можно удалить? Поясню. Во временной таблице находится набор потенциально избыточных данных, это следует из запроса ниже, который фильтрует эти избыточные данные. Если избыточные данные удалить из временной таблице перед вставкой и исключить из запроса фильтр, то проблема взаимоблокировок не появится. удаление избыточных данных не поможет в проблеме с уникальностью, отсутствующие в таблице данные по прежнему могут начать вставляться одновременно из двух параллельных потоков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2019, 15:27 |
|
||
|
Принудительный ordered scan по временной таблице
|
|||
|---|---|---|---|
|
#18+
msLexTaPaKmsLex, Да вы правы, спасибо. В последнее время на такое просто вешаем игнор и фиг с ним Если мы на такое повесили бы игнор, у нас бы ошибки уникальности падали бы раз в 5 минут. ошибка? я про ignore dup key ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2019, 15:28 |
|
||
|
Принудительный ordered scan по временной таблице
|
|||
|---|---|---|---|
|
#18+
TaPaKmsLexпропущено... Если мы на такое повесили бы игнор, у нас бы ошибки уникальности падали бы раз в 5 минут. ошибка? я про ignore dup key а, ясно. ну во-первых, он тоже вешает тот же holdlock во-вторых, работает медленнее (появляются какие-то дополнительные накладные расходы). плюс, как уже говорили, спамит варнингами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2019, 15:33 |
|
||
|
Принудительный ordered scan по временной таблице
|
|||
|---|---|---|---|
|
#18+
msLexTaPaKпропущено... ошибка? я про ignore dup key а, ясно. ну во-первых, он тоже вешает тот же holdlock во-вторых, работает медленнее (появляются какие-то дополнительные накладные расходы). плюс, как уже говорили, спамит варнингами У меня получилось в разы быстрее при отказе от exists, особенно на больших объёмах на варнинги всё равно в общем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2019, 15:35 |
|
||
|
Принудительный ordered scan по временной таблице
|
|||
|---|---|---|---|
|
#18+
msLex, Код: sql 1. Да, не подумал. конкуренции у меня нет на самом деле, т.к. включается sp_getapplock или выполнение по расписанию. Борьба происходила с deadlock, вызванными запросом внутри себя. Возможно у меня сортировкофобия, не знаю :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2019, 15:35 |
|
||
|
Принудительный ordered scan по временной таблице
|
|||
|---|---|---|---|
|
#18+
TaPaKУ меня получилось в разы быстрее при отказе от exists, особенно на больших объёмах очень, очень странно физически он проделывает тоже самое, что и not exists может у вас not exists в скан сваливлся? у нас еще forceseek четвертым хинтом обязательно стоит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2019, 15:37 |
|
||
|
Принудительный ordered scan по временной таблице
|
|||
|---|---|---|---|
|
#18+
Владислав КолосовmsLex, Код: sql 1. Да, не подумал. конкуренции у меня нет на самом деле, т.к. включается sp_getapplock или выполнение по расписанию. Борьба происходила с deadlock, вызванными запросом внутри себя. Возможно у меня сортировкофобия, не знаю :) если у вас допустима синхронизация на уровне sp_getapplock, то вам, конечно, не нужны все эти holdlock-и ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2019, 15:40 |
|
||
|
Принудительный ordered scan по временной таблице
|
|||
|---|---|---|---|
|
#18+
Владислав КолосовПоясню. Во временной таблице находится набор потенциально избыточных данных, это следует из запроса ниже, который фильтрует эти избыточные данные. Если избыточные данные удалить из временной таблице перед вставкой и исключить из запроса фильтр, то проблема взаимоблокировок не появится.Чтобы избавиться от избыточных данных, нужно определить, что они избыточные. Для этого нужно проделать те же самые манипуляции с целевой таблицей, что и в стартовом посте. В результате получите те же дедлоки. Вы в своих решениях принципиально не хотите учитывать конкурентность выполнения запросов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2019, 17:14 |
|
||
|
Принудительный ordered scan по временной таблице
|
|||
|---|---|---|---|
|
#18+
invm, я уже ответил, что дедлоки в моем случае были вызваны не конкурентностью между потоками, а конкурентностью внутри самого запроса. Поэтому, если ситуации с одновременным выполнением нет, то можно производить все действия, которые я описал. Для запросов вида update table1 where exists (select * from table1) можно получить дедлок единственным запросом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2019, 18:52 |
|
||
|
Принудительный ordered scan по временной таблице
|
|||
|---|---|---|---|
|
#18+
msLexи откатывать всю транзакцию, при его нарушении? Вставляйте по строке за раз :) Для соблюдения уникальности в СУБД придуманы unique констрейнты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2019, 18:58 |
|
||
|
Принудительный ordered scan по временной таблице
|
|||
|---|---|---|---|
|
#18+
Ftt330msLexи откатывать всю транзакцию, при его нарушении? Вставляйте по строке за раз :) Для соблюдения уникальности в СУБД придуманы unique констрейнты.Ваш метод организации конкурентной вставки понятен, но далеко не у всех у базы один пользователь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2019, 19:49 |
|
||
|
Принудительный ordered scan по временной таблице
|
|||
|---|---|---|---|
|
#18+
Владислав Колосовя уже ответил, что дедлоки в моем случае были вызваны не конкурентностью между потоками, а конкурентностью внутри самого запроса. Поэтому, если ситуации с одновременным выполнением нет, то можно производить все действия, которые я описал.Тогда непонятно зачем вообще предлагать решение заранее зная, что оно не подойдет? Что такое "конкурентностью внутри самого запроса"? Владислав КолосовДля запросов вида update table1 where exists (select * from table1) можно получить дедлок единственным запросом.Как это относится к запросу ТС? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2019, 19:57 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39880105&tid=1687086]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
31ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 257ms |
| total: | 377ms |

| 0 / 0 |
