Tema: Re: Need nuomonės iš šono - DB
Autorius: Nerijus
Data: 2011-12-08 12:25:07
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.