phpbar.de logo

Mailinglisten-Archive

[php] PHP und mySQL langsam?

[php] PHP und mySQL langsam?

Andreas Ahlenstorf lists at ahlenstorf.ch
Mon Jul 17 11:56:43 CEST 2006


Am 17.07.2006 um 11:35 schrieb Ringo Großer:

> auch nicht mehr empfohlen. Begründen kann ich es grad nicht
> konkret, aber es hatte wohl etwas damit zu tun, dass die Persistenz
> auf eine gewisse Anzahl von Queries limitiert war und wenn gerade
> mitten in einer Verbindung diese Anzahl erreicht war, gabs quasi
> einen Reconnect zur DB und dabei entstanden die Probleme.

Persistenz funktioniert bei den meisten Server-SAPIs nicht. Dies,  
weil Server wie Apache ihre Childs forken und jeder Child eine  
persistente Verbindung hält. Da rennst du dann ins Connection Limit  
rein, ohne dass du etwas gewinnst. Persistente Verbindungen klappen  
nur, wenn du in einer extra Applikation Connection Pooling machst und  
dann auf die zusätzliche Applikation verbindest.

> INDICES sind unbedingt entscheidend. Setze über Spalten, die in JOINS
> oder WHERE Klauseln häufig verwendet werden unbedingt einen INDEX.
> Das beschleunigt MySQL ungemein.

Wenn man es nicht gescheit macht, kann man sich auch ins Knie  
schiessen: Wer einen Datensatz nimmt, auf Existenz prüft, ihn in die  
Datenbank schreibt und dann den nächsten Datensatz nimmt, produziert  
unnötig Last, weil MySQL jedes Mal die Indices neu baut. Also zuerst  
alle Datensätze prüfen und merken, welche man schreiben muss und  
welche nicht. Wenn man alles beisammen hat, deaktiviert man die Keys,  
haut alles in die Datenbank, aktiviert die Keys, worauf es einen  
einzelnen Index-Rebuild gibt und fertig.

Zudem die Queries anschauen, ob der Query Optimizer sie richtig  
optimiert. Wenn er auf ein schwach verteiltes Feld geht, macht er  
einen Full Table Scan, egal wie viele Indices du drauf hast.

Gruss,
Andreas


php::bar PHP Wiki   -   Listenarchive