Niko310391 wrote:Hmm...das ist blöd, aber wohl leider nicht zu ändern...
So ganz hoffnungslos ist es nicht, denn das Verhalten hängt auch maßgeblichst davon ab, wie die Datenbankzugriffe programmiert sind. Wenn man nämlich weiß, dass dieser I/O (der Transfer der Daten aus dem Select in das PHP Script) der Bottleneck ist, dann kann ein guter und geübter SQL-Programmiere da durchaus einiges machen, man muss nämlich schauen, dass man die sog. "Fundstelle" möglichst klein hält. Je kleiner die jeweiligen Fundstellen, umso weniger Daten werden transferiert und umso schneller geht das dann.
Nur haben die meisten "Script-Kiddies" (so nenne ich die Programmierer der ganzen CMS a la WordPress, Joomla und wie sie alle heißen) überhaupt keine Ahnung von Infrastruktur und guter SQL Programmierung. Da wird unsauber getrennt, was auf dem Datenserver geschieht und was auf dem Apache Server geschieht, oftmals nämlich derselbe Rechner, da fällt das nicht so auf. Da werden gigantische Fundstellen generiert (die Katastrophe ist der allseits beliebte "Select * FROM Table" ohne jede weitere Bedingung), einfach weil "es geht". Und dann wird die ganze Fundstelle im PHP Code abgegrast und die Zeilen herausgepickt, die es für die aktuelle Verarbeitung benötigt. Hätte man das richig programmiert, würde man mit WHERE Klauseln und LIMIT Anweisung gezielt nur die paar Sätze aus der Datenbank holen, die wirklich gebraucht werden. Davon haben diese Script-Kiddies keine Ahnung. Und deswegen haben diese ganzen CMS auch teilweise grausame Laufzeiten selbst auf Systemen, wo die Datenbank nicht remote liegt.
Aber spätestens, wenn so etwas versucht, wie Du es gerade vorhast, dann sinkt die IO-Geschwindigkeit um exponentielle Werte und auf einmal dauert ein scheinbar simpler Datenzugriff ätzend lange, weil idiotisch viele Daten physikalisch über die Leitung gehen.
Da liegt die einzige Hoffnung und Möglichkeit für Dich, wenn es sich um Software handelt, die Du selbst programmiert hast. Da könntest Du gezielt eingreifen und versuchen, die Fundstellen so klein wie möglich zu halten. Aber wenn das Fremdprogramme sind, dann hast Du keine Chance, da blickt auch keiner durch (das ist teilweise Kraut und Rüben, was da zusammenprogrammiert wird) und außerdem könntest Du später keine Updates einspielen, weil dann jedesmal Deine "Optimierungen" zerschossen werden. Also es ist durchaus etwas machbar, aber eben nur dann, wenn man selbst programmiert.