Artiklen foreslår vigtige tip til at undgå blokeringer i SQL Servers
Skønt SQL Server har været vidne til en enorm udvikling i de sidste par år, står brugerne stadig regelmæssigt over for situationen med blokeringer. Ideelt set bør en databaseserver være i stand til at hente flere anmodninger, men det resulterer ofte i blokke. De konflikter, hvor en proces afventer frigivelsen af en anden ressource, kaldes blokke. Og så er der Deadlocks.
Forestil dig en situation, hvor en person beder den anden om at frigive en ressource, og den anden venter på, at den første frigiver. Som et resultat sidder begge fast i en blokeret situation. Ingen af processen kan fortsætte, da begge er låst og kræver, at den anden frigiver ressourcen eller låsen.
Mens du arbejder med SQL servers, deadlocks er ret almindelige, og de kan hæmme hele processen. Det er ikke muligt at undgå deadlocks helt, men man kan helt sikkert minimere chancen for at skabe en deadlock.
Deadlock-problemer

Det skal bemærkes, at blokeringer direkte påvirker ydeevnen og kan stoppe behandlingen af databasen.
1. Hold ordren ens
Der opstår uundgåeligt deadlocks, hvis ressourcerne ikke behandles i en veldefineret rækkefølge. For at minimere deadlocks bør alle samtidige transaktioner tilgå objekter i en veldefineret rækkefølge. Databaseadministratorer bør designe et klart sæt regler for adgang til databaseobjekter. Normalt udfører Lock Monitors deadlock-tjek, og når det registreres, vælger de et deadlock-offer og ruller dets transaktion tilbage. Således ophæves alle låse, og tidligere sessioner får lov til at fortsætte processen. Deadlock-ofre vælges på baggrund af den deadlock-prioritet, der er indstillet af serveren, eller rollback-omkostninger.
2. Begrænsning under transaktion
Du kan begrænse brugerne til at indtaste enhver form for data, når transaktionen behandles, og du kan opdatere dataene før transaktionen for at undgå blokeringer. Prøv også at holde brugerens interaktion på minimumsniveauer, fordi det påvirker hastigheden. Ideelt set bør transaktioner være korte og hurtige for at undgå blokeringer. En applikation skal designes på en sådan måde, at den griber låsen på den mindst nødvendige tid og frigør dem så hurtigt som muligt.
3. NOLOCK-tip
Når nogen kører en forespørgsel mod en tabel i SQL-standardisoleringsniveau, bliver tabellen låst, og de næste forespørgsler må vente på frigivelsen. NOLOCK-tip er nyttigt i sådanne situationer, da det giver mulighed for tilsidesættelse af låsning af tabel, og andre forespørgsler får let adgang.
4. Brug bundne forbindelser
Hvis den samme applikation kan åbne to eller flere forbindelser, der kan samarbejde med hinanden, ville det ikke skabe blokeringer. Derfor anbefales det at bruge bundne forbindelser.
Deadlocks er ikke det eneste besvær, du sandsynligvis vil opleve, mens du arbejder på en SQL Server database. Faktisk hændelser af sql korruption er mere tilbøjelige til at forårsage dig sorg. For at undgå et datatabsscenarie skal du investere i et kraftfuldt gendannelsesværktøj som DataNumen SQL Recovery.
Forfatter Introduktion:
Victor Simon er ekspert i datagendannelse i DataNumen, Inc., som er verdens førende inden for datagendannelsesteknologier, herunder mdb opsving og SQL-genopretningssoftwareprodukter. For mere information besøg https://www.datanumen.com/