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.
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.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 163473
Url: https://administrator.de/contentid/163473
Ausgedruckt am: 26.11.2024 um 14:11 Uhr
7 Kommentare
Neuester Kommentar
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
Wie wäre es, wenn Du einfach per ODBC von Deiner Windows-Dose drauf zugreifst?
Lonesome Walker
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
http://www.strato-faq.de/artikel.html?sessionID=ff36a1d38fafcdd489a4296 ...
(Suche nach "ODBC" in der FAQ)
Henning
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.
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)
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