phpbar.de logo

Mailinglisten-Archive

RE: [php] [OT] Lock Tables (MySQL) die richtigeLösung?

RE: [php] [OT] Lock Tables (MySQL) die richtigeLösung?

Christoph Kramesch phpbar at kramesch.com
Mit Mai 4 23:42:35 CEST 2005


> 1. Wird die Tabelle in einer Datenbankverbindung gesperrt,
> bekommt eine
> weiter zugreifende Verbindung dann eine Fehlermeldung, oder
> wartet MySql
> dann bis die Verbindung freigegeben wird und führt dann die nächste
> Anfrage durch?

Normalerweise passiert letzteres.

>
> 2. Angenommen die zweite Anfrage wird dann ausgeführt, wenn die erste
> die Tabellen wieder frei gibt, kann diese Verzögerung zu Problemen
> führen, wenn ca. 50 Abfragen gleichzeitig versuchen darauf
> zuzugreifen?
> Oder ist die Verzögerung so gering, dass das wartende Script kein
> Problem dabei hat (max_execution time)?

Das hängt ganz von den auf der Datenbank durgeführten Operationen ab!
In deinem Fall wird es wahrscheinlich so sein, daß du der Tabelle
beim einlesen einen Read Lock gibst, da ja aufgrund eventuell
durchzuführender Updates auch Lesezugriffe gesperrt werden sollen
(damit die anderen Prozesse dann bei der Updateüberprüfung den
aktuellesten
Datenstand haben). In diesem Fall muß darauf geachtet werden,
daß die Update routine sehr effizient arbeitet, damit die
Locktime der Tabelle gering bleibt...
Normalerweise sollte bei normaler max_execution_time
die Wartezeit aber kein Problem ergeben, da es ja wahrscheinlich selten
vorkommt
das 50 Prozesse in des selben millisekunde zugreiffen...
Falls es sich um eine Tabelle mit sehr sehr hohen Zugriffszahlen
handelt, auf die massiv oft auch lesend zugregriffen wird, müsste
man sich allerdings andere Strategien einfallen lassen..


Cheers
Christoph


php::bar PHP Wiki   -   Listenarchive