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 Databases