Mikä on umpikujan uhri?

Lukkiutumisen uhri on tietokoneen käyttäjä, joka toimii palvelimena yhdistettynä asiakkaana ja jonka yhteyden palvelin isäntä on päättänyt lopettaa umpikujan ratkaisemiseksi. Tällainen umpikuja syntyy usein, kun kaksi eri prosessia yrittävät käyttää samoja resursseja, mikä saa molemmat prosessit lukkiutumaan. Tämän ongelman ratkaisemiseksi monet palvelintietokantajärjestelmät voivat havaita umpikujan ja päättävät sitten lopettaa toisen prosessin yhteyden. Ohjelma voi valita umpikujan uhrin mielivaltaisesti, vaikka käyttäjä on yleensä valittu sellaiseksi, joka voi helposti muodostaa yhteyden järjestelmään.

Termiä “umpikujan uhri” käytetään tyypillisesti virhe- tai poikkeusviestissä, jonka järjestelmä näyttää käyttäjälle, kun hänen yhteytensä katkaistaan. Tämä virhe ilmenee tilanteessa, jota yleisesti kutsutaan umpikujaksi. Yleensä umpikuja tapahtuu, kun kaksi palvelimeen yhdistettyä käyttäjää yrittävät käyttää samoja resursseja tavalla, joka luo lukituksen järjestelmään. Jos esimerkiksi käyttäjä A käyttää resurssia 1 ja hänen on käytettävä myös resurssia 2, kun taas käyttäjä B käyttää resurssia 2 ja hänen on käytettävä myös resurssia 1, tapahtuu umpikuja, koska kumpikaan käyttäjä ei voi suorittaa prosessiaan loppuun.

Tässä esimerkissä järjestelmä valitsee yhden kahdesta käyttäjästä umpikujan uhriksi ja hänen yhteydensa palvelimeen katkaistaan. Kun tämä tapahtuu, toinen käyttäjä voi lopettaa prosessinsa, lopettaa umpikujan ja umpikujan uhri voi muodostaa yhteyden palvelimeen. Useimmissa palvelintietokantaohjelmissa on umpikujan tunnistus, joka yleensä tunnistaa umpikujan tietyn ajan kuluttua. Vaikka umpikuja ei välttämättä ole suuri ongelma, se voi olla haittaa käyttäjille, erityisesti niille, jotka on valittu umpikujan uhriksi, ja osoittaa yhden tai useamman virheen palvelintietokannan ohjelmoinnissa.

Tapa, jolla palvelin valitsee umpikujan uhrin, voi vaihdella. Jotkut ohjelmat valitsevat uhrin täysin satunnaisesti. Vaikka tämä voi olla melko tehokasta, koska kaikki valinnat johtavat ratkaisuun ja umpikujan päättymiseen, tämä ei ole aina ihanteellinen menetelmä. Palvelin on tyypillisesti ohjelmoitu arvioimaan kaksi käyttäjää valitsemaan sen, joka voisi helpoimmin muodostaa yhteyden uudelleen tai joka menettää vähiten dataa yhteyden katkeamisen vuoksi.