SQL server

Ondrej Koala Vacha koala na fi.muni.cz
Pátek Květen 28 11:33:27 CEST 1999


On Fri, 28 May 1999, Pavel PaJaSoft Janousek wrote:

>     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.
> 

Pripada mi to jako priklad na zamykani, nikoli na transakce. Jak
Adeltom psal, napr. v Mysql je tohle resitelne, anzto ma zamykani, ale
nema transakce.

Jeste ke transakcim: ze zde uverejnenych nazoru mam dojem, ze:

1. jsou nezbytne jako ochrana pri jakemkoli zhrouceni (system, sit,..)
nebo chybe programu

2. v jinych pripadech se daji nahradit za cenu vetsi pracnosti v kodu


Kdyz pro jednoduchost bod 1 vypustim (system mi nepada, chybove stavy
testuji) tak me zajima, zda opravdu existuje pripad, ze danou ulohu bez
transakci _neudelam_. Jestli neni, tak se domnivam, ze transakce jsou sice
pohodlne, ale draze zaplacene snizenim vykonu.

---
Ondrej Koala Vacha



Další informace o konferenci Linux