#826

Rakenna työjono, joka skaalautuu siististi

Tietokannassa on työjono — taulu jobs, jossa ajamattomilla riveillä on tila pending. Viisi työntekijää katsoo sitä samanaikaisesti: jokainen haluaa napata vanhimman työn ja merkitä sen "käynnissä olevaksi". Tavallinen rivitason lukko rajalla saa kaikki viisi työntekijää kasautumaan samalle riville ja sarjallistumaan. Parannuskeino on ohittaa jo lukitut rivit ja ottaa seuraava vapaa: jokainen työntekijä saa oman työnsä ja rinnakkaisuus toimii ilman törmäyksiä. jobs(id SERIAL, status, payload) sisältää neljä pending-riviä (a, b, c, d). Nappaa taulusta jobs yksi pending-työ, jolla on pienin id, käännä se tilaan running — muut kolme jäävät tilaan pending.

Kyselysi tulos näkyy tässä