Ständiges Optimieren empfehlenswert?
Mastershrimp
- datenbank
0 e70 Mastershrimp0 e70 Mastershrimp0 Mastershrimp0 e7
0 Bio
Heyho!
Ich habe mir neulich ein Vote-Script gebastelt und verwende innerhalb dieses Scripts eine IP-Sperre. Diese IP-Sperre trägt die IP's der User in eine Mysql-Datenbank-Tabelle und löscht sie nach 90 Minuten wieder. Es wird also ständig etwas geschrieben und gelöscht, was zu Folge hat, dass ich oft einen Überhang habe.
Diesen kann man ja durch eine Optimierung entfernen. Sollte ich nun also nach _jedem_ Löschvorgang in der Tabelle diese optimieren oder hat das irgendwelche Nachteile?
Die Tabelle wird nie sehr groß, höchstens ein paar 100 Byte, da die IP's ja ständig wieder gelöscht werden - die Prozessorauslastung ist also quasi = 0, oder?
Hat eine Optimierung irgendwelche Nachteile? Ist sie bei großen Tabellen sehr prozessor-auslastend? Wenn ja, was ist für euch "groß"?
Danke schonmal für eure Antworten!
Chapeau! ;)
Mastershrimp
Hi,
löscht sie nach 90 Minuten wieder. Es wird also ständig etwas geschrieben und gelöscht
Mit CronJobs? Oder wenn jemand abstimmt? Oder immer, wenn jemand deine Seite besucht?
Diesen kann man ja durch eine Optimierung entfernen. Sollte ich nun also nach _jedem_ Löschvorgang in der Tabelle diese optimieren oder hat das irgendwelche Nachteile?
Optimiere die Menge der Löschvorgänge, dann kannst du die Tabelle jedes mal optimieren (wobei sich das dann weniger lohnt, wenn größere Blöcke gleichzeitig gelöscht werden)...
Wenn ja, was ist für euch "groß"?
1 Terrabyte ;)
Dein Server dürfte aber schon eher Probleme kriegen
E7
Heyho!
Mit CronJobs? Oder wenn jemand abstimmt? Oder immer, wenn jemand deine Seite besucht?
Immer wenn jemand abstimmt wird die IP-Tabelle geleert und immer wenn jemand die Vote-Seite betritt werden alte Votes entfernt (natürlich nur sofern vorhanden).
Stärker optimieren kann man's glaub ich nicht, oder?
Und bei den geringen Datenmengen ist das eh kein Problem, schätz ich mal.
Wollte halt nur wissen, ob es ausser Performance-Einbußen auch noch andere Nachteile gibt. Scheinbar aber ja nicht, oder?
Chapeau! ;)
Mastershrimp
Hi,
Wollte halt nur wissen, ob es ausser Performance-Einbußen auch noch andere Nachteile gibt. Scheinbar aber ja nicht, oder?
Du musst beim Programmieren eigentlich an nix denken außer an die Geschwindigkeit und an den Speicherplatz (RAM/Festplatte).
An deiner Stelle würde ich aber das Entfernen der alten Votes >90 Minuten vor dem Abstimmen durchführen - wenn jemand die Seite aufruft, gibt's meistens nix zum Löschen.
E7
Heyho!
An deiner Stelle würde ich aber das Entfernen der alten Votes >90 Minuten vor dem Abstimmen durchführen - wenn jemand die Seite aufruft, gibt's meistens nix zum Löschen.
Hmm. Verstehe ich gerade irgendwie nicht...
Das Script arbeitet so:
Und jedes Mal wenn die Seite aufgerufen wird, wird geprüft, ob einer der abgeschlossenen Votes zu alt ist und somit gelöscht werden muss.
Wo ließe sich da was optimieren?
Wenn lediglich beim Abgeben der Stimme überprüft wird, ob einer der alten Votes _zu_ alt ist, würden ja evtl. die zu alten Votes noch ein paar Tage existieren (weil vllt. keiner in diesen Tagen votet, oder so)
Chapeau! ;)
Mastershrimp
Nachtrag: Es wird natürlich nur dann optimiert, wenn auch etwas gelöscht wurde. Also nicht bei jedem Seitenaufruf.
Chapeau! ;)
Mastershrimp
Hi,
Wenn lediglich beim Abgeben der Stimme überprüft wird, ob einer der alten Votes _zu_ alt ist, würden ja evtl. die zu alten Votes noch ein paar Tage existieren (weil vllt. keiner in diesen Tagen votet, oder so)
Erweitere einfach die SQL-Abfrage um Abstimmung > time() + 90 oder so was
E7
Heyho!
Erweitere einfach die SQL-Abfrage um Abstimmung > time() + 90 oder so was
Danke! Aber ich hab schon eine gute Möglichkeit gefunden, zu überprüfen, ob ein Vote abgelaufen ist.
In diesem Thread ging es ja nur darum, ob man nach jedem Löschvorgang Optimieren sollte, oder ob das irgendwelche Nachteile hat.
Hat's aber für mich nicht (so wie ich das verstanden habe)
Chapeau! ;)
Mastershrimp
Hallo Mastershrimp,
In diesem Thread ging es ja nur darum, ob man nach jedem Löschvorgang
Optimieren sollte, oder ob das irgendwelche Nachteile hat.
Das bringt eh nichts. Diese Optimize-Geschichten reparieren den Index
von MySQL nicht richtig. Wenn du dir Sorgen um den Index machst, dann
droppe ihn einmal und lege ihn neu an.
Grüße,
CK
Es geht eigentlich nur um den Überhang. Und den müsste man per Optimierung wegkriegen, oder?
Sagt PHPMyAdmin zumindest.
Chapeau! ;)
Mastershrimp
Sup!
Schon weil es heutzutage soviele NATs gibt, sind IP-Sperren nicht so toll. Cookies sind IMHO besser, wenn auch auch nicht wirklich sicher.
Besser wäre vielleicht, wenn man beim Voten immer irgendein Wort aus einer (verzerrten) Grafik in ein Textfeld eintragen und abschicken muss, um Voten per Skript zu verhindern. Oder so.
Gruesse,
Bio
Schon weil es heutzutage soviele NATs gibt, sind IP-Sperren nicht so toll. Cookies sind IMHO besser, wenn auch auch nicht wirklich sicher.
Besser wäre vielleicht, wenn man beim Voten immer irgendein Wort aus einer (verzerrten) Grafik in ein Textfeld eintragen und abschicken muss, um Voten per Skript zu verhindern. Oder so.
Hast zwar eigentlich Recht, aber mir sind IP's wesentlich lieber. Die paar Leute, die bei mir voten, werden das überleben.
Cookies sind wirklich zu umständlich und unsicher.
Und das mit dem Eingeben eines Codes ist zwar gut gegen Scripts, aber nicht gut gegen menschliche Super-Voter. Meine User haben größtenteils keine Ahnung, was überhaupt ein Script ist ;) und würden deshalb eher 5x diesen Code eingeben.
Ich glaube so ist das ganz gut gelöst.
Chapeau! ;)
Mastershrimp