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