Стратегия за най-бързо заключване (ниво на изолация) за пакетна работа за един потребител

Имаме база данни SQL Server 2005, която съдържа предварително обработени данни за отчети.

Всички данни се изтриват и възстановяват от нулата всяка вечер въз основа на данни от производствената база данни.

През нощта работата е единственото нещо, което се изпълнява на този сървър, така че нямам едновременен достъп до данните си.

В момента използваме стандартното ниво на изолация READ_COMMITTED.

Разбирам, че SQL Server ще постави ключалки на таблици за четене и писане. Тъй като никой друг не докосва моите таблици (както таблиците, които чета, така и тези, които пиша), докато работата ми работи, би ли било по-бързо да укажа WITH (NOLOCK) или да използвам ексклузивни заключвания на таблици (TABLOCKX)?

Благодаря за всякакви съвети,

Ив


person Yves Forget    schedule 07.04.2014    source източник
comment
SQL Server ще постави ключалки на редове - не на таблици - по подразбиране. Само ако една транзакция надвишава 5000 едновременни заключвания, SQL Server ще направи ескалация на заключването и ще заключи таблицата (вместо 5000+ отделни реда)   -  person marc_s    schedule 08.04.2014


Отговори (1)


Вероятно няма да забележите разлика от гледна точка на използването на процесора. READ COMMITTED дори не предприема S-заключвания на редове, които се намират на страници, които нямат необвързани редове върху тях. Това е малко известна оптимизация в SQL Server за много често срещаното READ COMMITTED ниво на изолация.

Препоръчвам ви да разгледате READ UNCOMMITTED (което е точно еквивалентно на NOLOCK) или TABLOCK, защото позволява на SQL Server да сканира таблици в ред на разпределение (IAM сканиране), за разлика от реда на логическия индекс. Това е добре за IO модели и в зависимост от степента фрагментацията може да окаже значително влияние (или никакво).

За групови записи разгледайте съответните ръководства, публикувани от Microsoft. Уверете се, че се възползвате от минимално регистрираните записи. TABLOCKX може да влезе в игра тук.

person usr    schedule 07.04.2014