SQL server

Pavel PaJaSoft Janousek janousek na fonet.cz
Pátek Květen 28 04:09:15 CEST 1999


>Tak jsem si to nejak predstavoval. Ale ma to pouziti jinde nez pri
>pripadnem padu? Pripada mi, ze to snad musi mit jeste nejake vyuziti, kdyz
>cena za transakce je znacne zpomaleni a pad systemu snad neni tak casto.


    Jiste ze ma... predstavte si, ze jeden radek tabulky predstavuje jednu
hodinu v nejakem rezervacnim systemu. Zakaznik pozaduje ale 3 po sobe jdouci
hodiny. Kdyz mam transakcni zpracovani, tak jedno z reseni (uznavam, ze
mozna ne nejlepsi) je toto: zkusim select na hodinu, zda-li je volna, pokud
je volna, dam insert, pokud neni koncim a dam rollback. V databazi se nic
neprojevi a ja nemusim ani provadet zadne zbytecne delete na neco, co v
databazi nebude vubec videt.... A jelikoz zamykani ve verzi PostgreSQL 6.4.2
funguje tak jak funguje, nemuze se mi stat, ze budu mit 2 klienty, kteri oba
zkousi selecty a inserty a oba si mysli, ze je volno a teprve se to do
databaze projevi po commitu - obsazenost 1 hodiny by byla 2x, coz je nemysl.
Jelikoz tady bude vzdy existovat jista serializace, pak ten klient, ktery
prisel az druhy, je pozdrzen nez prvni dokonci praci - nez ten 1. udela
commit => druhy jiz vidi skutecny aktualni obraz databaze.

    V pripade MySQL, ktere nema transakce musim hlidat toto stejne a pokud
je hodina jiz obsazena, musim smazat veskerou rezervaci => jiny uzivatel
vsak v tuto dobu vidi mistnost obsazenou, ackoli neni a ve skutecnosti ani
nebude.... A co je jeste horsi, jelikoz nemam zarucenu tuto serializaci,
domnivam se, ze na konci by bylo dobre provest jeste jednu smycku selectu na
to, zda-li je v obsazenych hodinach pouze 1 rezervace, pokud neni, celou
svou rezervaci smazat, jinak jsou v databazi blbosti. Nejhorsi pripad muze
byt ten, ze oba uzivatele budou odmitnuti a maji se pokusit provest
registraci znovu...

    Tohle napr. mi vypadlo pri porovnavani MySQL a PostgreSQL v me diplomce,
ktera se pak zabyva implementaci jisteho rezervacniho systemu
implementovaneho pod obema systemy....

    IMHO tech pripadu, kdy _velmi_ vadi, ze co SQL prikaz to atomicka
operace je daleko vice... Jak uz jsem rekl, nedovedu si v pripade MySQL
predstavit update databaze za chodu.... atd... Ten pad a nekonzistentnost
databaze u MySQL je jen dusledek....

-------------------------------------------------------------------------
Pavel Janousek (PaJaSoft)                         FoNet, spol. s r. o.
Vyvoj software, sprava siti, Unix, Web, Y2K     Anenska 11, 602 00  Brno
E-mail: mailto:Janousek na FoNet.Cz                Tel.: +420  5  4324 4749
SMS:    mailto:P.Janousek na SMS.Paegas.Cz         Fax.: +420  5  4324 4751
WWW:    http://WWW.FoNet.Cz/                  E-mail: mailto:Info na FoNet.Cz
--------------------------------------------------------------------------




Další informace o konferenci Linux