Hallo,
ich bin dabei die Performance einer Firmeninternen Webseite (PHP 5 + MySQL 5.0) zu erhöhen und bräuchte mal ein paar Tipps :-)
Per CronJob rufe ich ein PHP-Script auf, das von verschiedenen Servern meiner Firma (und ein paar Partnern) eine Liste von Daten einliest (welche von einem PHP-Script generiert werden).
Diese Daten werden dann in eine Datenbank in Tabelle 1 eingetragen, wobei bereits vorhandene Einträge ignoriert/upgedated werden. Durch einen Trigger in Tabelle 1 werden automatisch auch Einträge in einer 2. Tabelle eingetragen/updated, welche einem Eintrag aus Tabelle 1 einen Server zuweist.
Wenn also die Daten von dem Server mit der ID 234 geholt wurden, werden die einzelnen Datensätze in Tabelle 1 eingefügt, zB:
data='Bla blubb', last_server='234', id=33
Durch den Trigger in Tabelle 1 wird in Tabelle 2 ein Eintrag angelegt:
server='234', data_id=33
Nun dient das Feld last_server in Tabelle 1 jedoch nur als "Zwischen-Speicher", damit ich per Trigger diese Data-Server-Zuweisung in die 2. Tabelle einfügen kann.
Werden die Daten auch auf einem anderen Server gefunden, wird nur das last_server-Feld geupdated, sodass der Trigger gefeuert und die 2. Tabelle bearbeitet wird.
Aus Tabelle 2 werden regelmäig veraltete Daten-Server-Zuweisungen gelöscht, sodass die Daten an sich noch in Tabelle 1 stehen, aber keine Zuweisung mehr zu einem Server besteht ... soweit klar? :D
Jetzt handelt es sich aber mittlerweile schon um Hunderttausende Data-Einträge, die jedes mal von den einzelnen Servern geholt und versucht werden in Tabelle 1 einzutragen.
Dabei findet mindestens immer ein Update des Felds last_server statt, sofern der Datensatz schon existierte (ansonsten ein insert), damit die 2. Tabelle bearbeitet wird (ein weiterer insert/update).
Meine Frage ist, ob jemandem auf Anhieb ein einfacheres System einfällt. :-)
PS: Die Data-Listen der Server kann ich nicht verändern. Diese liefern immer die komplette Liste und nicht nur die neu hinzugefügten Daten.
Gruss
Bad Bingo