Avatar billede rytme_1 Nybegynder
14. maj 2009 - 22:00 Der er 3 kommentarer og
1 løsning

ROWLOCK Update - NOLOCK i joins(Select)

Hej.
1.
Kan der opnåes mindre låsning (og dermed mindre risiko for block) ved at sætte (ROWLOCK) på en update, når der opdateres på en unique row vha. f.eks. RowId (update myTable set Name = @name where RowId = @RowId )  hvor RowId er unique primary key ?

2.
Jeg har læst flere sige at man bør benytte (nolock) i joins (Select).
F.eks.:
SELECT COUNT(Users.UserID)
FROM Users WITH (NOLOCK)
  JOIN UsersInUserGroups WITH (NOLOCK) ON
      Users.UserID = UsersInUserGroups.UserID

Er der nogen der har kommentare til dette ? Det er vel stadig afhængig af situationen, om man kan leve med evt. dirty data ?
Avatar billede aaberg Nybegynder
15. maj 2009 - 08:40 #1
1.
Når du opdaterer en row, vil SQL Server automatisk lave en rowlock.

2.
Du bør kun bruge nolock, hvis du har en meget god grund til det. At bruge nolock i en select, kan resultere i at der returneres ikke-comitted data. Dette kan resultere i noget rigtigt rod! SQL Serverens standard locking er i langt de fleste tilfælde det bedste at bruge.
Avatar billede aaberg Nybegynder
15. maj 2009 - 08:44 #2
En sidste kommentar:

Grunden til at nogen bruger rowlocks, er for at forbedre performance når der kører mange selects, samme tid som der køres mange updates. Men det er lige præcist i disse tilfælde, at nolock hintet har stor risiko for at resultere i fejl. Og for det meste, er der meget mere at hente, ved at designe databasen rigtigt, med constraints og indexes.
Avatar billede rytme_1 Nybegynder
08. juni 2009 - 21:09 #3
Tak for kommentarer. Jeg er nået til samme konklussion. Smid et svar, og jeg giver point :-)
Avatar billede aaberg Nybegynder
09. juni 2009 - 10:05 #4
svar :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester