Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Кога е подходящо да се използва NOLOCK?

Обърнете внимание, че можете да посочите nolock за всяка таблица.

Обикновено използвах nolock в сложни SELECT заявки, но само за малките справочни таблици, които почти никога не се променят, и за данни само за показване. Знаете таблиците, в които са изброени цените за текущата половин година или търсенето на идентификатори към низове и т.н. Неща, които се променят само с големи актуализации, след които сървърите обикновено се рестартират рутинно.

Това значително подобри производителността, намали шанса за блокиране в най-натоварените моменти и по-важното беше наистина забележимо по време на най-лошите моменти за заявки, които докоснаха много таблици (което е логично, те трябва да получат по-малко заключвания и тези странични таблици често се използват почти навсякъде, като често намаляват от 7-8 до 4 таблици, които трябва да бъдат заключени)

Но бъдете много внимателни при добавянето му, не бързайте и не го правете рутинно. Няма да навреди, когато се използва правилно, но ще навреди ужасно, когато се използва неправилно.

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

Друга такава оптимизация е ROWLOCK, която заключва само на ниво ред. Това е основно полезно при актуализиране (или изтриване) на таблици, където редовете не са свързани един с друг, като таблици, в които поставяте само записи в журнал (и редът, в който са вмъкнати, няма значение). Ако имате схема, при която някъде в края на транзакция се записва регистрационен запис в някаква таблица, това също може да ускори значително.

Ако вашата база данни има сравнително нисък процент записи, може да не си струва. Имах съотношение четене:запис под 2:1.

Някои URL адреси, които запазих, докато работех по това:

http://www.developerfusion.com/article/1688/ sql-server-locks/4/



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Йерархичен списък с типове тригерни събития в SQL Server 2019

  2. Анализирайте датата и часа с отместване на времето в T-SQL

  3. Изтрийте всички данни в базата данни на SQL Server

  4. Как да използвам повторно подзаявка в sql?

  5. Рекурсивна замяна от таблица със знаци