Tema: Re: Need nuomonės iš šono - DB
Autorius: Laimis
Data: 2011-12-09 19:17:14
2x50 rašė:
> *****************************************
> Jei skaitytum atidžiau, tai pastebėtum, kad siūlyti būdai, kaip
> transakcijos dalinasi/rezervuojasi id (tas pats FOR UPDATE), po ko
> vyksta konkurentiškas/lygiagretus tolimesnis apdorojimas (nebekalbant
> apie tai, kad MyISAM atveju, kai kiekvienas modifikuojantis DMLS'as
> užrakina visą lentą, tai iš principo neįmanoma). Todėl greitaveika bus
> gerokai didesnė, nes aibės transakcijų, pasidalinusios id prie durų,
> toliau tęs darbą (tikėtina imlesnį resursams) lygiagrečiai.
> *****************************************
>
> Va kur yra tamstos klaida, mano manymu.
> Transakcijos id prie duru nepasidalins, ir nebus jokiu lygiagreciu
> nekonfliktuojanciu transakciju. Bus arba po viena be konfliktu (pridejus
> FOR UPDATE) arba lygiagreciai ir visos tarpusavyje konfliktuojancios, is
> kuriu tik viena vienintele atliks realu darba, likusios tik valgys
> resursus.

Na, žiū, pavyzdys:

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). Tas pasidalijimas veikiausiai įvyksta per 
milisekundės dalis, o toliau jau, visas 100 transakcijų, gavusios savo 
id gali vykti lygiagrečiai/konkuruojančiai (skaityti iš db, trinti 
įrašus). Tai ir yra tas tavo minėtas „beveik lygiagrečiai“ būdas.