Domas Mituzas rašė: >> Transkacijos, tarkime, savo darbą padaro per kokią 1 ms. >> Sušoka 100 konfliktuojančių ir laukia eilėje besidalindamos id paprastu >> sakiniu; ar Audrys pasiūlytu būdu, ar mano (kai pirma atskiroje >> lentelėje bandoma rezervuoti UPDATE'u, o vėliau pasitikrinama; tai iš >> esmės analogiškas būdas). > > Palyginkim: > > BEGIN; > SELECT ... FOR UPDATE; > UPDATE ...; > COMMIT; > > su: > > UPDATE ...; > SELECT ...; Lyginami ne visiškai tie būdai. Aš lyg ir nepriešpastačiau FOR UPDATE Audrys pasiūlytam variantui, kaip ir neteigiau, kad mano pasiūlytas būdas yra kuo nors pranašesnis, nors veikimo principas iš esmės analogiškas: pirma konkuruojančiai išsidalinami id, o toliau jau dirbama lygiagrečiai. > Bėda tik ta, kad tokio tipo sistemos neturėtų gyvent RDBMS'uose > dažniausiai, ir specialiai pabūrus sistemų programuotojui galima padaryt > bent 10x efektyvesnes sistemas su norimu rezultatu. Aš tai apskritai abejoju, kad ten tikrasis FIFO; juk ir tavo rekomenduotas būdas jau neberantuotų FIFO apdorojimo sekos, nes transakcijos persidengiančiai/lygiagrečiai konkuruotų. Ir nors galima įžvelgti taisyklę, kad „anksčiau pradėjai, anksčiau ir baigsi“, tačiau tai juk nėra garantuojama?