boingboing
Goto Top

MySQL Performance Probleme

Hallo, ich habe eine Frage bezüglich einer Perfomance-Optimierung bei meiner mySQL Datenbank.

Ausgangsituation:
gehosteter Webserver bei Strato
Lokaler MSSQL Datenbankserver

Ich möchte eine Art Synchronisation zwischen der lokalen MSSQL und der auf dem Webspace liegenden mySQL Datenbank machen. Dafür habe ich ein Programm geschrieben, welches Werte aus meiner MSSQL Datenbank ausliest, verarbeitet und zu kleinen 500 Zeilen Dateien schnürrt (CSV Format). Anschließend nimmt er die (im schnitt 80 Dateien a 500 Zeilen pro SynchAuftrag), schiebt sie einzeln per FTP auf eine Bestimmte Stelle und führt danach für jede hoch geladene Datei ein sich auf dem FTP befindendes PHP Script aus, mit Parameterübergabe: zu importierendes Dateipaket (zB 89_52521_455252_4777.csv). Keine Sorge, habe es gegen Fremdzugriff und Missbrauch abgesichert ^^

Das klappt alles auch wunderbar, nur habe ich leider folgendes Problem

Da ich mit riesen Datenmengen hantiere und Teilweise ein paar hundertausend Datensätze im Akkord synchronisieren möchte, gibt es beim Import ein Problem.

Die PHP Datei importiert jede CSV-Datei einzeln, nach einem bestimmten Schema, danach wird die CSV Datei gelöscht/verschoben und meinem Export-Programm ein "ok" geliefert, erst danach uploaded er die nächste CSV-Datei und führt das PHP erneut aus.

Die ersten 5 Dateien verarbeitet das Script <1 Sekunden (Also fast nicht merklich) danach dauern die nächsten 5 Dateien 3 Sekunden bis sie importiert sind. Danach jede weitere 10 Sekunden bis das PHP die "ok" -Antwort gibt. Das Problem dabei ist halt: bei im Schnitt 80 bis 100 Dateien pro Upload-Zyklus dauert es halt 900 Sekunden bis der Auftrag erledigt ist. Laut meiner Vorgabe soll so eine Update aber alle 10 bis 20 Minuten maximal stattfinden, neben 10 bis 15 Aufträgen gleicher Art (Selbes Schema, andere Daten, anderes Ziel, gleicher Datenbankserver)

Jetzt meine Frage woran könnte das liegen? Also die Indexes, Keys etc sind alle ordentlich gesetzt. An der Schleife innerhalb der PHP glaube ich nicht dass es liegt, sonst würden die ersten 5 Dateien nicht fast instant eingelesen werden.

Riegelt der Server ab weil er überlastet ist? Hab mal ein Sleep eingebaut von 1.5 Sekunden nach jedem Import, aber das Phänomen war das gleiche, nach ca 10 Dateien fortdauernd 10 Sekunden Response-Time.

Wäre für eure Hilfe dankbar.

Content-ID: 163473

Url: https://administrator.de/contentid/163473

Ausgedruckt am: 26.11.2024 um 14:11 Uhr

16568
16568 28.03.2011 um 12:23:59 Uhr
Goto Top
Stratos MySQL-Cluster ist alles andere als performant.
Wie wäre es, wenn Du einfach per ODBC von Deiner Windows-Dose drauf zugreifst?


Lonesome Walker
vossi31
vossi31 28.03.2011 um 12:34:44 Uhr
Goto Top
Lässt Strato denn den Zugriff von "außen" zu?
Glaub ich ja eher nicht.

Henning
Boingboing
Boingboing 28.03.2011 um 12:39:11 Uhr
Goto Top
genau das is das Problem, ich komm von außen nicht direkt an die DB, nur immerhalb des Apaches.

Hab meinem Chef schon gesagt ich hätte gern nen Root, oder zumindest einen Managed PowerServer mit ordentlich Dampf, einer bei dem die Datenbank nicht ausgelagert ist... aber Solang das noch nicht ist muss ich leider so klar kommen.
vossi31
vossi31 28.03.2011 um 12:55:29 Uhr
Goto Top
Wenn du meinst, dass es an den vielen Einzeldateien liegt, kannst du ja versuchen alles in einer Datei zu machen und dein PHP-Script entsprechend anzupassen.
16568
16568 28.03.2011 um 22:06:03 Uhr
Goto Top
Zitat von @vossi31:
Lässt Strato denn den Zugriff von "außen" zu?
Glaub ich ja eher nicht.

Glauben heißt nichts wissen... face-wink

http://www.strato-faq.de/746


In diesem Sinne

Lonesome Walker
vossi31
vossi31 29.03.2011 um 09:06:17 Uhr
Goto Top
Interessant, dann müsste sich Boingboing also mit SSH/PUTTY beschäftigen und das ggf. scripten sofern er mindestens so ein Power-Paket gebucht hat. Mit ODBC geht es ja wohl nicht bei Strato:

http://www.strato-faq.de/artikel.html?sessionID=ff36a1d38fafcdd489a4296 ...
(Suche nach "ODBC" in der FAQ)

Henning
16568
16568 29.03.2011 um 19:27:03 Uhr
Goto Top
Zitat von @vossi31:
Interessant, dann müsste sich Boingboing also mit SSH/PUTTY beschäftigen und das ggf. scripten sofern er mindestens so
ein Power-Paket gebucht hat.

Irgendeinen Tod muß er ja sterben, wenn er bei so einem madigen Hoster ist.

Mit ODBC geht es ja wohl nicht bei Strato:

http://www.strato-faq.de/artikel.html?sessionID=ff36a1d38fafcdd489a4296 ...
(Suche nach "ODBC" in der FAQ)

Ja und?
Ist das mein Bier?
Ich hab eigene Server, von daher wayne?


Lonesome Walker