All streams
Search
Write a publication
Pull to refresh
1
0
Volodya Fryazinskiy @m0ntana

Пользователь

Send message

А какие блокировки наблюдаются во время этих длинных TRUNCATE? Возможно какие-то системные вьюхи залочены и остальные сессии ждут

Плюсую про неверное утверждение о неоткатности TRUNCATE

Добрый вечер, спасибо за статью. Эта проблема была решена с помощью deferred compilation in SQL Server 2019. Please find details in https://www.mssqltips.com/sqlservertip/5662/table-variable-deferred-compilation-in-sql-server/

Насколько я понял, NOLOCK в данном случае лишь позволяет закончить первую сессию и сделать DELETE in t1. В случае выполнения без этого хинта, DELETE заблокируется by (S) lock on t1 и мы получим deadlock. И такая комбинация действий в обоих случаях обречена на failure :)

Параллельная вставка уводит нас к разговору о латчах :)

Выбор уровня изоляции - баланс между целостностью данных и временем (блокировками). Ваше решение реализует смешанный подход, спасибо за обзор :)

А нужно было правильно применить уровень изоляции транзакций — так, чтобы блокировка на вставку и обновление данных была минимальной

Если я ничего не путаю, (X) блокировка накладывается до конца транзакции на любом уровне изоляции

Information

Rating
Does not participate
Location
Чад
Registered
Activity

Specialization

Database Developer
SQL
Database
Microsoft SQL Server