Tema: Re: Need nuomonės iš šono - DB
Autorius: Domas Mituzas
Data: 2011-12-09 18:38:59
On 12/9/11 6:23 PM, 2x50 wrote:
> Cia prisipisinejimo vakarelis? OK.

Nu kodėl, tiesiog daugiau informacijos pateikiu, gal ir ne visai į 
kontekstą dėmesį atkreipdamas :-)

>
> *********************************
>> 1. Serializable visada bus letesnis nei kiti isolation leveliai del
>> vienos paprastos priezasties - DBVS turi atlikti papildomus veiksmus
>> tam, kad serializuoti transakcijas. O papildomi veiksmai reikalauja
>> laiko, galbut labai labai mazai, bet visvien jie jo prideda, ne atima.
>
> Tiesa pasakius prie kai kurių workloadų intuityviai 'lėtesni' leveliai
> yra greitesni - nes nereik snapshotų perdarinėt kas kartą, etc :)
> **********************************
>
> Prie kokiu "kai kuriu"?
> Kas slepiasi po "etc", konkreciau noretusi?

Prie tų, kurie daro daug paprastų užklausų smarkiai konkurentiškoje 
aplinkoje, kurioje daug atvirų tranzakcijų - nuėjimas pasivaikščiot į 
B-medį yra lengvas juokelis, palyginus su perėjimu per visą tranzakcijų 
lentą kas kartą. Visa tai būna daroma (bent jau InnoDB) po vienu 
muteksu, tad sistemos pajėgumas gana greitai nukrenta.

Atsidarius stabilų snapshotą tokių operacijų atlikinėt nebereikia.

Locko sukūrimas daug nekainuoja, va atsitrenkimas į tą locką yra daug 
prabangesnė operacija, ypač jeigu susiformuoja grandinė ;-)

> Kokiais kartai, veikianti vapyzdi galima pamatyti?

Atsiprašau, norėjau pasakyt, kad greitas deadlocko pagavimas gali būti 
geriau už locko laukimą, žinoma geriau jų vengti iš viso :-)

Ant šlykščių lockinimo situacijų galima užlipt net ir modifikuojant tik 
po vieną eilutę tranzakcijose, tad jau geriau mirt tranzakcijai iš viso 
tokiais atvejais.

Iš ties, dabar kai pagalvoju, labai nedaug kas turi galimybę 
įjungt/išjungt deadlockų tikrinimą ant MySQL'o, tad galėjau šito ir 
nesakyt ;-)

Domas