jak z toho ven

Honza Pazdziora adelton na informatics.muni.cz
Čtvrtek Červen 26 12:33:32 CEST 2003


On Thu, Jun 26, 2003 at 12:22:37PM +0200, Ondrej Koala Vacha wrote:
> 
> Celkem by me zajimalo, jestli jsou nejak vyhodne transakce u toho dalsiho 
> zjistovani id, tedy v situaci, kdy cisla dojou, a musi se tedy pridelit 
> jiz nejake existujici. Je zde nejaky rozdil mezi zamcenim pro cteni 
> (u myism tabulky), nebo transakci (u innodb tabulky)? 

Tedy jinymi slovy chcete neco udelat s nejakym zaznamem v tabulce
a nechcete, aby tu samou vec (nastavi tam nove udaje) nad tim jednim
zaznamem udelaly v danou chvili dva ruzne procesy?

V takovem pripade pokud to udelate transakci, at uz SELECT FOR UPDATE
nebo UPDATE, tak mate zajistenu serializaci pri pristupu k tomu
zaznamu. A pouze k tomu zaznamu. Zatimco kdyz zamknete tabulku, tak
tim zablokujete i ostatni paralelne bezici procesy, i ty, ktere vubec
nemaji zajem s tim jednim zaznamem pracovat a soutezit o pristup
k nemu.

Ony jsou to dve veci, ktere ale jdou v MySQL ruku v ruce. Pokud nemate
podporu transakci a chcete provest nejake akce slozene z vic SQL
prikazu, musite si zamknout, aby Vam tam nekdo neco nemenil pod rukama
a abyste mel konzistentni pohled na data. Pokud mate podporu
transakci, tak tento zamek tabulek nemusite delat rucne, protoze ji za
Vas udela databazovy system, a to navic typicky tak, ze zamkne pouze
ty zaznamy ci databazove bloky, ktere jsou zmenou ovlivneny.

Je tam tedy typicky mnohem jemnejsi granularita tech zamku, tedy
i mnozstvi ovlivnenych jinych databazovych spojeni, ktera musi cekat,
az se ty zamky uvoni, je mensi. Coz zvysuje propustnost systemu jako
celku.

-- 
------------------------------------------------------------------------
 Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
 .project: Perl, mod_perl, DBI, Oracle, auth. WWW servers, XML/XSL, ...
		Only self-confident people can be simple.


Další informace o konferenci Test