2010-07-29 9 views
9

Diese Frage hat wahrscheinlich keine definitive Antwort, also wenn es als subjektiv betrachtet wird und sagen wir schlecht, bitte zögern Sie nicht, es zu schließen.Maximale SQL Abfragen pro Seite

Grundsätzlich entwickle ich eine ziemlich große Webanwendung (PHP), und es verwendet CakePHP. Momentan ist es in der Entwicklung und einige Dinge in der Datenbank sind sehr komplex, daher müssen viele Anfragen gestellt werden, um die Seiten anzuzeigen (ca. 7-25 Abfragen).

Da dies wahrscheinlich eine groß angelegte sein wird, würde ich gerne wissen, was die maximale, das heißt, eine Art von Punkt, der angibt, dass "Sie wahrscheinlich etwas falsch machen und sollte optimieren ", Anzahl der SQL-Abfragen, die pro Seite durchgeführt werden sollten. Ich habe jetzt ein sehr einfaches Caching-System eingerichtet, das die von einem einzelnen Benutzer ausgeführten Abfragen für 15 Sekunden auf ungefähr 5 reduziert.

Werden 25 Abfragen häufig ausgeführt? Sollte ich die Entwicklung (ich habe viel Zeit) für eine Weile stoppen und den Code umgestalten, SQL-Abfragen entfernen, die nicht verwendet werden, und Zeit widmen, um die Leistung in diesem Teil zu verbessern?

Dies klingt wahrscheinlich ein wenig verwirrend, so wieder aufgenommen: Gibt es ein de facto Maximum für die Anzahl der Abfragen pro Seite, die nicht einen Server hammer (dh eine Shared Hosting-Umgebung)?

Danke.

Antwort

7

Die Gesamtzahl der Treffer in Ihrer Datenbank ist auch proportional zur Anzahl der Seitenaufrufe. Also, wenn Seitenansichten * Abfragen pro Seite mehr als die Kapazität Ihrer Datenbank ist, dann haben Sie ein Problem. Offensichtlich variiert der Verkehr von Ort zu Ort sehr stark, ebenso wie die Kapazität der Datenbank, so dass es wirklich keine Nummer geben kann, auf die man zielen kann.

+0

Was meinen Sie mit "Die Kapazität Ihrer Datenbank" Wie definieren oder ermitteln Sie diese Informationen? – Ash

+0

@Ashley: Ich meine die Kapazität Ihrer Datenbank zur Durchführung der Abfragen. Eine Datenbank kann eine durchschnittliche Anzahl von Abfragen pro Minute durchführen. Wenn Sie versuchen, diese Grenze zu überschreiten, werden die Dinge höchstwahrscheinlich beginnen, das Zeitlimit zu überschreiten. Ich weiß nicht, ob es eine klar definierte Methode gibt, um es zu bestimmen, aber Sie können es selbst testen, indem Sie eine Flut von Datenverkehr in Ihrer Datenbank auslösen, um zu sehen, wie viel es verarbeiten kann. – recursive

4

Wie rekursiv erwähnt, gibt es keine magische Zahl. Viel zu viele Variablen. So wie Ihre Datenbank-Server-Spezifikationen. Je besser der Server, desto mehr Abfragen können Sie ausführen.

0

Eine möglicherweise einfachere und fast ebenso effektive Methode der Optimierung wäre Batch-Abfragen, wo es möglich ist. Auf diese Weise machen Sie weniger Roundtrips zum Datenbankserver, während Ihre vorhandene Logik (größtenteils) intakt bleibt.

7

Das Wichtigste ist nicht die Zahl, sondern die Kosten der Abfrage ...

Lauf 100 SELECT name FROM foo WHERE id = 1 LIMIT 1 wird eine ganze Menge besser sein als das Laufen 1 der folgenden Optionen:

SELECT * 
    FROM foo AS a 
    JOIN bar AS b 
    JOIN car AS c 
    WHERE a.col LIKE '%f%' OR b.col LIKE '%b%' OR c.col LIKE '%b%' 

So Bereue die Zahl nicht, es sei denn, sie ist absurd (Über 100 ist hoch. Mehrere tausend sind absurd) ... Vergiss nicht, dass du MySQL Query Cache aktivieren kannst ... Selbst wenn du viele Anfragen pro Sekunde triffst, Solange es nicht eine Tonne von Updates gibt, werden die meisten von ihnen direkt Cache-Ergebnisse sein.