Commit a data bezpecne na disku?

Jan Serak sherry na pikebo.cz
Pondělí Březen 27 12:53:28 CEST 2000


Petr Novotny wrote:
> 
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> On 25 Mar 00, at 14:23, Jan Serak wrote:
> 
> > > Dobre. Pokud provedeme predpoklad, ze fflush() (nebo fsync()) dela
> > > to, co ma, je mozne predpokladat,
> >
> > ... a vime-li, ze dany DBMS to pouziva...
> 
> To je mozna jadro veci. Nedava nejaka SQL norma nejake zaruky?

Asi tezko. Norma SQL tezko bude moci neco vnucovat databazovym
strojum, kdyz specifikuje SQL ;-)

Rozhodne si myslim, ze do stadia, kdy budou vsecky DBMS stejne zabezpecene
a stejne vykonne a stejne drahe/levne, nikdy vyvoj nedojde, protoze
tohle je vlastne jedine misto, kde si vyrobci mohou konkurovat (kdyz
uz mame standardy na SQL, client - server, atd.). Takze vzdycky bude
zaviset na kombinaci DBMS/OS.

> > Ted si nejsem jist, jestli rozumim tomu ''potrebna pro provedeni
> > transakce''. Commit transakci uzavira a dopadne-li dobre, je transakce
> > ukoncena a nic dalsiho se s ni delat neda. Plati-li oba predpoklady,
> > tak commit fyzicky zapise zmenu dat na disk.
> 
> Samotne provedeni zapisu na UPDATE... muze trvat nekolik hodin.
> Zapis typu "uzivatel xxx provadi UPDATE... a ja jsem mu potvrdil,
> ze mam vsechna data" je zlomek sekundy. Pokud je na disku
> bezpecne zapsana takovato vec, lze pri obnovovani databaze po
> padu ten UPDATE... provest.

Stale nerozumim. Co je 'provedeni zapisu na UPDATE'? Pri UPDATE
DBMS neco dela a zcela jiste neco zapisuje, ale co? Do dat? Do logu?
Je snaha, aby COMMIT trval co nejkratsi dobu, ale existuji (mozna
uz jen v minulosti, pokud se dobre pamatuju, tak jedna z drevnich
verzi Informix-SE) implementace, ktere ten UPDATE zapisuji do
jakehosi transakcniho logu a teprve pri COMMITu provadi fyzicke
zmeny v datech.

Taky nechapu, co je provedeni (nebo dokonceni?) UPDATE, ktery byl spusten
pred padem OS, pri obnovovani databaze.

> 
> Porad jde o to: Mam data, ktera se _nesmeji_ ztratit. Pres SQL je
> odevzdam databazi. Ve kterem okamziku presne se o ta data
> nemusim starat? Kdyz se vrati COMMIT? Kdyz databaze prestane
> chrochtat? Nikdy?

Pokud hodlate experimentovat se sitovym vypinacem, tak muzete byt
naprosto klidny: pri takovemto zasahu muzete prijit i o data,
ktera byla na disk ulozena treba pred 14 dny, a to proste jen proto,
ze nebyl DBMS regulerne ukoncen. A neni se cemu divit, kdyz takova
vec dokaze rozhodit treba i filesystem.

Za normalniho stavu v momente, kdy se ukonci COMMIT, je to starost
DBMS. Tedy v pripade transakcni databaze.

						Jan Serak


Další informace o konferenci Test