Serverleistung für Datenbankzugriffe
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
abfragen
anwendung
code
datenbank
datum
index
interessieren
intervall
jemand
kern
pause
prinzip
programm
ratschlag
sekunde
setzen
tabelle
url
zahl
-
Hiho,
mich würde mal interessieren wie viel Serverleistung denn Datenbankabfragen ( SELECT, UPDATE, INSERT) so abfordern. Ich weiß, dass Webseiten unter Umständen ziemlich viel fressen können (zu schnelle Ajax-Aufrufe u.Ä.).
Aber wie sieht es denn aus wenn ich mit Hilfe eines Java Programms nur auf die Datenbank zugreife? Die Berechnungen übernimmt ja das Programm. Da bei Lima ja das fair-use-Prinzip gilt , würde ich lieber einschätzen was mein Programm anrichtet bevor ich es schreibe. Es ist im Rahmen meiner Anwendung sinnvoll möglichst schnell/oft nach neuen Daten zu schauen.
Ich würde die Daten quasi in einer while(true) Schleife immer wieder abrufen. Sozusagen Polling betreiben ^^. Aber wenn das zu aufwändig für den Server ist müsste ich eben eine Zeitabfrage einbauen, dass nur alle X Sekunden prüft.
Wäre cool wenn mir jemand da etwas weiterhelfen könnte. Ich selber habe leider bei reinen Datenbankzugriffen keine Vorstellung vom Aufwand. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Wenn du das in ner Endlosschleife ohne Pausen immer wieder abfragst, widerspricht das (abhängig von der Prozessorleistung des Computers, auf dem das Programm läuft und der Internetverbindung) höchstwahrscheinlich dem fair-use Prinzip.
Außerdem ist das völlig sinnlos, wenn du wirklich überhaupt keine Pausen einbaust, hast du einen Prozessor-Kern zu 100% ausgelastet und evtl. auch die Internetverbindung ausgelastet.
Ein Polling-Intervall von 1 Sekunde sollte auch völlig reichen und kann die Performance schon um einiges verbessern.
Lg cookies
Beitrag zuletzt geändert: 28.11.2010 22:35:08 von cookies -
Vermutlich hilft es dir, wenn du einfach einen Benchmark machst. Dazu kannst du die entsprechenden Abfragen einfach im PMA ausführen und diese dann messen lassen. Dort erfährst du dann zumindest, wie lange deine Abfrage (und deren Einzelschritte im Detail) dauert und kannst dann entsprechend optimieren. Ansonsten kann ich cookies nur bestätigen und würde den Intervall sogar auf 2 Sekunden (maximal!) setzen, das reicht völlig. Aufgaben die darüber hinaus gehen, solltest du schlichtweg nicht über Lima realisieren. Wenn es aber zB nur ein Chat ist, den kannst du auch gut und gerne auf 5 sek laufen lassen. Schneller schreibt sowieso kaum ein Mensch und du kannst noch wunderbar eine flüssige Konversation führen.
Liebe Grüße
- VampireSilence -
Also erst einmal vielen Dank für eure Anregungen.
@cookies
Mit dem Interval hast du natürlich recht, schneller als jede Sekunde ist für nahezu keine Anwendung sinnvoll. Auch für meine nicht^^.
Bei der Prozessorleistung kann ich sagen: das regelt Java von allein, er nutzt bei mir nur 50% von beiden Kernen (ist vertretbar).
@vampiresilence
Auch das testen meiner Abfragen ist eine klasse Idee (hätte ich auch selber drauf kommen können^^). So habe ich wenigstens nen Wert mit dem ich etwas anfangen kann. Wenn die Abfrage eine Sekunde braucht, sollte ich sie nicht alle halbe Sekunde durchführen^^.
Auch deinen Ratschlag lieber etwas langsamere Intervalle zu setzen werde ich berücksichtigen.
Also die Datenbank ist ja ziemlich schnell, ein SELECT über wenigen Daten dauert nur 0,0005 Sekunden. Hat jemand evtl. Erfahrungen bei großen Datenmengen? Mich würde mal interessieren wie lange eine Abfrage maximal dauern sollte. Denn auch da kann man sich ja schnell verschätzen. -
werden indices nicht automatisch erstellt?
oder muss ich sie manuell einfügen?
wenn ja, wie? -
Naja für Primärschlüssel werden die Indizes automatisch gesetzt. Aber für alles andere nicht. Setzen kannst du sie entweder in der Struktur-Ansicht der Tabelle im PhpMyAdmin (ist hinten ein Button).
Oder aber du nutzt den entsprechenden Befehl:
ALTER TABLE `tabellenname` ADD INDEX ( `spaltenname` )
-
Nein, Indizes werden nicht automatisch erstellt! Auch der Primärschlüssell muss erst einer Spalte zugeordnet werden, dieser muss eindeutig sein, wird oft mit Zahlen realisiert. Diese Zahlen kann man automatisch setzten lassen (wie loadi schrieb). Wie und was man Indiziert muss man sich anhand der Abfragen anschauen. Wirklich interessant wird die Indizierung aber auch erst, wenn (sehr) viele Datensätze im Spiel sind.
Vielleicht ist das hier auch hilfreich um etwas in die Thematik der Indizierung zu schnuppern: http://www.hilfdirselbst.ch/foren/MySQL_Index_richtig_benutzen_P454286.html
Beitrag zuletzt geändert: 3.12.2010 2:26:00 von bildkritik -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage