mysql - programovani, zatez

Michal Kratky kratky na fzu.cz
Čtvrtek Duben 29 13:56:53 CEST 1999


On Thu, 29 Apr 1999, Jan Podhajsky wrote:

> Zdravim,
> 
> resim takovou otazku,
> mam program (v C) ktery pracuje nad jednou tabulkou v Mysql. Vyselektuje
> data, provede *casove narocnou* operaci nad temito daty a updatne je zpet.
> Pro celkove urychleni jsem zkousel program v miste, kde zpracovava ty data
> rozforkovat.

Co se tím má urychlit, ta časově náročná operace ? Jestliže ty synovské
procesy se socketem nepracujou, nevím proč by se mělo něco blokovat.
Jestliže několik procesů najednou pracuje s tím samým socketem, potom jsi
podle mě učinil chybu která může vést k nějakému tomu blokování.

> Ale narazil jsem na problem, ze obcas se procesy pri pristupu do db navzajem
> vyblokovaly a nektere zustaly viset (coz je zrejme zapriceneno tim, ze
> pouzivaji stejny pristup do db (vytvoreny tim forkem))
> 
> Ona otakza zni. Pokud si kazdy rozforkovany proces bude otevirat vlastni
> spojeni do db, odstrani se mi tim ty blokace a nebude to moc zatezovat
> server???

Možná nastala situace, že jeden proces si zamknul záznam pro update a druhý
k němu nesmí. Když to rozdělíš mezi víc procesů, budeš muset ty locky
uvolnit, a pak ovšem vznikne nebezpečí, že ti vyselektovaný záznam mezi tím
přepíše úplně jiný klient. Tyhle vazby musíš mít vyjasněny než začneš něco
forkovat.

Pokud se týká přetížení serveru mnoha navázanými spojeními, nevidím
důvod.

		Michal Krátký



Další informace o konferenci Linux