generator neprerusovane rady cisel

Karel Zak zakkr na zf.jcu.cz
Úterý Únor 12 09:45:05 CET 2002


On Mon, Feb 11, 2002 at 03:32:57PM +0100, Ing. Pavel PaJaSoft Janousek wrote:
> Karel Zak wrote:
> >  BEGIN;
> >  UPDATE .. SET id=id+1;
> >  SELECT id ...;
> >  nejake pouziti id;
> >  COMMIT;
> 
> 	Neco mi to pripomina...:-)

 Dobra, dobra... ;-)
 
> 	Ale chci se naopak zeptat ja, garantuje SQL atomicnost na urovni SQL
> prikazu nebo az na urovni pristupu k tabulkam (ci jinym datovym
> objektum)?

 Zodpovedel Jan Serak, tak jen snad poznamka. 

 Ono je asi dobre si nejdrive polozit otazku co je to SQL prikaz.
 
 SELECT mojefunc(); muze obsahovat nekde vnitrne desitky SQL prikazu. 
 Takze by asi bylo lepsi hovorit o transakci. U transakcnich DB pokud 
 neni definovana transakce tak kazdy dotaz z klienta je samostnou
 transakci. To znamena, ze i veci volane z nejake funkce z napr. 
 SELECT mojefunc(); jsou pak v vsechny v teze jedne transakci. 

 Jak rekl Honza S. tak cela transakce je zpracovana s daty ve stavu, 
 ktere jsou na jejim pocatku a nebo se ceka na ukonceni transakce,
 ktera ta data meni (napr. u dvou konkurencnich update). Je to
 logicke, protoze jinak by to ani nechodilo a take to ozrejmuje to proc
 smysluplne transakce nejsou jen begin/commit, ale hlavne o udrzovani 
 ruznych verzi dat coz je implementacne vyrazne slozitejsi.

 U te netransakcni MySQL je to (IMHO) tak ze se data zamknou. Neudrzuji 
 se tak ruzne verze dat, ale jen jedna. Pochopitelne se to pak projevi
 na rychlosti pri snaze o vice konkurencnich modifikaci tech dat.
 Proto rychlost je take jeden z mytu o klasicke MySQL. Uvidime u MySQL
 4.x, i kdyz mi neni jasne pokud nebude ta DB vnitrne transakcni jako
 celek jak se to bude resit - kombinace zamku u beznych tabulek a 
 transakci u transakcnich?
 
        Karel
-- 
 Karel Zak  <zakkr na zf.jcu.cz>
 http://home.zf.jcu.cz/~zakkr/
 
 C, PostgreSQL, PHP, WWW, http://docs.linux.cz, http://mape.jcu.cz


Další informace o konferenci Databases