Artikkelen foreslår viktige tips for å unngå deadlocks i SQL Servers
Selv SQL Server har vært vitne til enorm utvikling de siste par årene, brukere står fortsatt jevnlig overfor situasjonen med vranglås. Ideelt sett bør en databaseserver kunne hente flere forespørsler, men det resulterer ofte i blokkeringer. Konfliktene der en prosess venter på utgivelsen av en annen ressurs kalles blokker. Og så er det deadlocks.
Se for deg en situasjon der en person ber den andre om å frigjøre en ressurs og den andre venter på at den første skal frigjøre. Som et resultat sitter begge fast i en fastlåst situasjon. Ingen av prosessen kan fortsette siden begge er låst og krever at den andre frigjør ressursen eller låsen.
Mens du jobber med SQL servers, vranglås er ganske vanlig, og de kan hemme hele prosessen. Det er ikke mulig å unngå vranglås helt, men man kan sikkert minimere sjansen for å skape en vranglås.
Dødlåstrøbbel
Før vi går til tipsene for å minimere vranglås, la oss ta et raskt blikk på noen av most sannsynlige årsaker til vranglås. SQL servers er designet for å oppdage vranglåsene automatisk, men hvis de blir rapportert, bør DBA-er prøve å forstå årsaken bak vranglåsen. Den most vanlig årsak er dårlig design av databasen, uten riktig validering og testing, og mangel på indeksering. Noen vranglåser er også forårsaket på grunn av dårlig utformede søk.
Det bør bemerkes at vranglåser direkte påvirker ytelsen og kan stoppe behandlingen av databasen.
1. Hold rekkefølgen den samme
Dødlåser er bundet til å oppstå hvis ressursene ikke behandles i en veldefinert rekkefølge. For å minimere vranglås, bør alle samtidige transaksjoner få tilgang til objekter i en veldefinert rekkefølge. DBAer bør utforme klare sett med regler for tilgang til databaseobjekter. Vanligvis utfører låsemonitorer dødlåskontroll, og når de oppdages, velger de ett offer for dødlåse og ruller transaksjonen tilbake. Dermed frigjøres alle låser og tidligere økter får fortsette prosessen. Deadlock-ofre velges på grunnlag av deadlock-prioritet satt av server eller tilbakeføring cost.
2. Begrensning under transaksjon
Du kan begrense brukerne til å legge inn alle slags data når transaksjonen behandles, og du kan oppdatere dataene før transaksjonen for å unngå vranglås. Prøv også å holde brukerinteraksjonen på minimumsnivåer fordi det påvirker hastigheten. Ideelt sett bør transaksjoner være korte og raske for å unngå låsninger. En applikasjon bør utformes på en måte som griper tak i låsene på minst nødvendig tid og frigjør dem så raskt som mulig.
3. NOLOCK Hint
Når noen kjører en spørring mot en tabell i SQL standard isolasjonsnivå, blir tabellen låst og neste spørringer må vente på utgivelsen. NOLOCK Hint er nyttig i slike situasjoner da det tillater overstyring av låsing av tabeller og andre spørringer får enkel tilgang.
4. Bruk bundne tilkoblinger
Hvis samme applikasjon kan åpne to eller flere tilkoblinger som kan samarbeide med hverandre, vil det ikke skape vranglåser. Det er derfor det anbefales å bruke bundne tilkoblinger.
Vålås er ikke det eneste bryet du sannsynligvis vil oppleve mens du jobber med en SQL Server database. Faktisk hendelser av sql korrupsjon er mer sannsynlig å forårsake sorg. For å unngå et datatap scenario, invester i et kraftig gjenopprettingsverktøy som DataNumen SQL Recovery.
Forfatterintroduksjon:
Victor Simon er en datagjenopprettingsekspert innen DataNumen, Inc., som er verdensledende innen datagjenopprettingsteknologier, inkludert mdb gjenoppretting og sql-programvareprodukter. For mer informasjon besøk https://www.datanumen.com/