Mailinglisten-Archive |
> 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