Inhoudsopgave:

Wat veroorzaakt database-deadlocks?
Wat veroorzaakt database-deadlocks?

Video: Wat veroorzaakt database-deadlocks?

Video: Wat veroorzaakt database-deadlocks?
Video: Sleep is your superpower | Matt Walker 2024, Mei
Anonim

EEN impasse gebeurt wanneer twee (of meer) transacties elkaar blokkeren door middelen vast te houden die elk van de transacties ook nodig heeft. Bijvoorbeeld: Transactie 1 heeft een slot op tafel A. De meeste mensen zullen dat schrijven impasses kan niet worden vermeden in een multi-user database.

Hiervan, wat zijn impasses in de database?

impasses . In een database , een impasse is een situatie waarin twee of meer transacties op elkaar wachten om sloten op te geven. Transactie A kan bijvoorbeeld een vergrendeling bevatten op sommige rijen in de tabel Rekeningen en moet enkele rijen in de tabel Orders bijwerken om te voltooien.

Weet ook, kan een select een impasse veroorzaken? 2 antwoorden. Impasse gebeurt wanneer een query een vergrendeling op een object verkrijgt (rijen, gegevenspagina's, omvang, tabellen, enz.) En een andere bron probeert er toegang toe te krijgen. De kleinste eenheid in SQL Server zijn gegevenspagina's en SQL houdt een pagina vast terwijl u eraan werkt. Dus ja, het is mogelijk dat twee selecteer uitspraak kan creëren impasse.

Bovendien, hoe kunnen we een impasse in de database voorkomen?

Tips om impasses te vermijden

  1. Zorg ervoor dat het databaseontwerp correct is genormaliseerd.
  2. Ontwikkel applicaties om telkens in dezelfde volgorde toegang te krijgen tot serverobjecten.
  3. Sta geen gebruikersinvoer toe tijdens transacties.
  4. Vermijd cursors.
  5. Houd transacties zo kort mogelijk.

Hoe los je een impasse op?

Een slimme ontwikkelaar moet de volgende stappen uitvoeren om te herstellen van een impasse:

  1. Controleer op foutnummer 1205, wanneer er een uitzondering wordt gegenereerd.
  2. Pauzeer de toepassing kort om de andere vraag de tijd te geven om de transactie te voltooien en de verkregen vergrendelingen vrij te geven.
  3. Dien de query opnieuw in, die is teruggedraaid door SQL Server.

Aanbevolen: