On 2011-12-07 22:51, Laimis wrote: > NicMC rašė: >> On 2011.12.07 17:41, Laimis wrote: >>> Pirma realiai išbandyk. Nes tolko aklai upgrade'inti hw, tai panašiai >>> tiek pat, kaip išgerti apelsinų sulčių, vietoje citrinų, tikintis, kad >>> tos bus švelnesnės (jos bus švelnesnės), kai šalia gal padėta stiklinė >>> stiklinė pieno... >> >> Tai pabandysi, tikraiu pabandysiu - kitą trečiadienį žinosiu. > > Keletas minčių dėl konkurentiškumo. Galima būtų pabandyti realizuoti taip: > Pasirašyti trigerį, kuris kas tam tikrą laiką išrinktų iš tos sąlyginai > didelės lentelės į atskirą lentelę (kuri, beje, gali būti in memory) > eilinę ID porciją (kokį šimtuką-tūkstantuką, priklausomai nuo to, kaip > sparčiai valgoma ta eilė). > Tada kiekvienas klientas nerakindamas lentelės skaito jau kur kas > mažesnę lentelę: > 1) SELECT id FROM que WHERE reserved = 0 ORDER BY id LIMIT 1 > > ir transakcijoje bando rezervuotis id: > 2) UPDATE que SET s_id = CONNECTION_ID(), reserved = 1 WHERE id = {ID} > > iš karto po to pasitikrina ar tokio id rezervacijos nenukniaukė kita > transakcija (t.y. ar pavyko rezervacija): > 3) SELECT id, s_id, reserved FROM que WHERE id = {ID} > > ir jei nenukniaukė (s_id = CONNECTION_ID(), tai toliau jau vienoje > transakcijoje: > {...} > DELETE FROM que ... > DELETE FROM original_que ... > > Jei nepavyko, tai kartojamas ciklas nuo 1). O da papraschiau tai nieko niekur nerashineti ir lenteliu nauju nekurti, o tik pirminej lentelej priskirti kliento kuris ta irasa apdoros ID ir pamirshti. Geriausia ta daryti trigeriu iraso kurimo metu (jei tas imanoma pagal verslo logika) N. M.