Vielleicht könnte mir jemand von euch beim folgenden Problem weiterhelfen:
ich hab neulich von meinem Provider (1&1) volgende E-Mail bekommen:
"Sehr geehrter Herr ...,
erneut haben wir festgestellt, dass Ihr Datenbankbenutzer dbo... die mit Abstand größte Last auf einem unserer Datenbankserver verursacht.
Sie teilen den Datenbankserver mit weiteren Kunden. Durch Ihre starke Beanspruchung werden diese in der Nutzung ihrer Datenbanken signifikant beeinträchtigt.
Bitte weichen Sie auf einen dedizierten Server aus. Damit stellen Sie den reibunglosen Betrieb Ihrer Datenbankanwendung sicher ..."
Was meint Ihr, was könnte ich da am besten tun? Einen Root-Server zu mieten wegen einer Domain ist mir viel zu teuer. Und bei einem Virtual-Server weiß ich jetzt nicht, ob ich da den DB-server mit anderen teilen würde. Und wenn ich mit allen meinen 4 Domain auf den Root-Server ziehen würde, weiß auch wiederrum nicht, ob ich jeder Domain eine andere IP zuweisen kann. Bei dem Support haben sie mir zwar gesagt, dass ich beim Root-Server weitere IPs beantragen kann und beim Managed-Server es z.B. nicht möglich wäre, aber ich bin mir nicht sicher, ob sie mich dort richtig verstanden haben, welche IP-Adressen ich meine.
Aber selbst wenn ich mit allen meinen Domains auf einen eigenen Server bei 1&1 ziehen würde, wäre es trotzdem momentan noch zu teuer für mich. Am liebsten wäre mir dann der Virtual-Server. Aber wie gesagt, ob ich dort die DB mit anderen teilen würde, habe ich keine Ahnung.
Wäre euch echt sehr dankbar, wenn mir da jemand weiterhelfen könnte!
in der ersten E-Mail von 1&1 hat man mir geschrieben, dass ich als Notmassnahme einen Index ueber die Spalte "domains.domain_url" legen sollte. Selbst konnte ich es nicht machen, da ich von Datenbanken überhaupt keine Ahnung habe, aber jetzt haben sie es dort, bei 1&1, für mich gemacht. Das war vor etwa zwei drei Wochen. Und nun bekomme ich wieder diese E-Mail, dass meine DB immer noch zu starke Last verursacht.
Was könnte man da noch machen?
Ich habe hier zwei Screenshots von meiner Datenbank gemacht. Einmal für die Tabelle "Configuration" und einmal für die Tabelle "Domains":
Vielleicht sollte ich über die Spalte "domain-count" einen Index anlegen? Ich bin mir ziemlich sicher, dass es der Counter ist, der diese starke Last verursacht!
Ansonsten, wie gesagt, habe ich von Datenbanken keine Ahnung
Vielen Dank im Voraus für die Vorschläge!
Gruß
alph
Ohne Angaben, was die Datenbank denn programmtechnisch macht, ist es sehr schwer, was dazu zu sagen. Da Du die Datenbank offenbar nicht selbst gemacht hast, solltest Du den Programmierer fragen.
Einen Index auf domain-count kannst Du ja mal anlegen:
ALTER TABLE domains ADD INDEX domain_count(domain_count);
Den Index wieder rausschmeißen, falls es nix bringt, machst Du mit:
ALTER TABLE domains DROP INDEX domain_count;
Generell kann man als grobe Faustregel sagen:
- Wenn eine Spalte oft abgefragt und wenig geändert wird: Index drauf
- Wenn eine Spalte oft geändert und wenig abgefragt wird: Kein Index drauf
Added: Mit "oft abgefragt" meine ich, dass sie oft im WHERE-Teil der SQL-Abfrage vorkommt.
Man müsste mal die Sql - Abfragen im PHP Code sehen, dann kann man entscheiden wo ein Index draufgehört. Eventuell sind ja auch in Schleifen verschachtelte Abfragen drin, die schnell mal 1000 Abfragen pro Aufruf produzieren.