Tema: Re: Need nuomonės iš šono - DB
Autorius: Domas Mituzas
Data: 2011-12-08 15:34:06
On 12/7/11 6:59 PM, Audrys wrote:
> galima pabandyti kas bus jei isivesti dar indeksuota lauka kuris
> klientas pasieme irasa, ji indeksuoti ir daryti taip:
> update `table` set client_id=my_client_id where client_id is null limit 1 ;
> select * from `table` where client_id=my_client_id;
> DELETE FROM `table` WHERE `ID` = (iš SELECT'o)

labai neblogas variantas, su keleta niuansų - replikacijai gali nepatikt 
(o ORDER BY galima tik nuo 5.5 efektyviai pridėt), arba reiks row-level 
replikaciją naudot.

yra alternatyva daryt UPDATE ... JOIN ( SELECT ... ORDER BY .. LIMIT 1 ) :-)

šituo metodu galima nemažą kiekį tūkstančių operacijų per sekundę ant 
vienos mašinos daryt, su mažu niuansu - negalima turėt per daug 
paralelių aktyvių thread'ų - InnoDB lock'ų grafas išsilydys.

Sprendžiama arba su 'admission control' arba su išoriniais 
proksiais/konkurentiškumo limitavimais.

Domas