Tee tööde järjekord, mis paralleliseerub kollisioonideta
Andmebaasis on tööde järjekord — tabel jobs staatusega pending täitmata ridade jaoks. Sellele vaatab korraga viis töötajat: igaüks tahab haarata vanima töö ja märkida selle «töös» olevaks. Tavaline reataseme lukk koos limiidiga paneb kõik viis töötajat sama rea peale kuhjuma ja järjestikku seisma. Ravim on jätta juba lukustatud read vahele ja võtta järgmine vaba: iga töötaja saab oma töö ja paralleelsus töötab ilma kollisioonideta.
Tabelis jobs(id SERIAL, status, payload) on neli rida staatuses pending (a, b, c, d). Võta tabelist jobs üks pending-töö väikseima identifikaatoriga ja vii see staatusesse running — ülejäänud kolm jäävad staatusesse pending.
Logi sisse, et näha esituste ajalugu
Logi sisseLogi sisse, et kasutada AI mentorit
Logi sisse