» UPDATE View-Counter per Zufall (Performance Tipp)

Google Maps: geocoder.getLatLng() per PHP möglich?Neuen Thread eröffnenNeue Antwort erstellenSuchmaschinenbots erkennen, aber nicht übertreiben!
AutorNachricht
Administrator 

Name: Marc
Geschlecht:
Anmeldedatum: 28.08.2004
Beiträge: 52423
Wohnort: Lohmar


Meine eBay-Auktionen:
20.02.2009, 02:21
zitieren

Hallo!

In eigentlich allen Scripten hat man das gleiche Problem. Jeder Seitenaufruf resultiert ein UPDATE in der Datenbank. D.h. der View-Counter der Seite wird bei jedem Aufruf um 1 hochgezählt.

Um das zu verhindern, macht man sich die Wahrscheinlichkeitsrechnung zu nutze. Wir erstellen also die folgende Funktion:
function update_rand() {
switch (mt_rand(2, 5)) {
case 2:
if (mt_rand(1, 2) == 2) {
return 2;
}
break;
case 3:
if (mt_rand(1, 3) == 3) {
return 3;
}
break;
case 4:
if (mt_rand(1, 4) == 4) {
return 4;
}
break;
case 5:
if (mt_rand(1, 5) == 5) {
return 5;
}
break;
}
return false;
}

Und dann machen wir die Datenbankabfrage abhängig vom Zufall und erhöhen den View-Counter um den entsprechenden Zufallswert:
// increment the number of views
if ($views = update_rand()) {
$sql = 'UPDATE LOW_PRIORITY articles
SET views = views + ' . intval($views) . '
WHERE id = ' . intval($id);
$db->sql_query($sql, false, __LINE__, __FILE__);
}

Wie man sieht, habe ich die UPDATE-Abfrage auf LOW PRIORITY eingestellt. Insbesondere bei hohen Lasten ist mir aufgefallen, dass die UPDATE-Abfrage von Views mit anderen SELECTs kollidiert und wie ein Stoppschild in der Prozessliste verweilt und sich so mit anderen SELECTs "anlegt" bis es zum Absturz des MySQL-Dienstes kommen kann. Hier fand ich den Tipp:
http://mysqldatabaseadministration.blogspot.com/2007/01/update-lowpriority.html

Seit der Umstellung auf LOW PRIORITY kam es bei mir zu keinen Problemen mehr.

Dann fragt Ihr Euch sicher, wie beim Einsatz von Zufallszahlen überhaupt die richtigen Views herauskommen sollen. Daher erkläre ich kurz die oben genannte Funktion update_rand().

Jede Zahl kommt in 25% aller Fälle zum Tragen. Das führt aber nur in bestimmten Fällen (je nach Zahl) zum Erfolg:
Zahl 2 = 50%
Zahl 3 = 33%
Zahl 4 = 25%
Zahl 5 = 20%

D.h. von 100 Versuchen werden 25% auf die Zahl 2 zutreffen, aber nur in weiteren 50% der Fälle kommt es zum Einsatz der Zahl. D.h. die Zahl 2 wird in nur 12,5% aller Fälle zum Tragen kommen. Rechnet man wieder:
Zahl 2 = 12,5%
Zahl 3 = 8,25%
Zahl 4 = 6,25%
Zahl 5 = 5%
Summe = 32%

D.h. in gerade mal 32% aller Fälle kommt es zu einem UPDATE in der Datenbank (Ersparnis von 68% aller Abfragen!).

Nun zur Genauigkeit dieser Wahrscheinlickeitsrechnung:
100 Aufrufe resultieren ohne diese Funktion 100 Views. In unserem Fall teilen sich diese 100 Aufrufe auf die jeweilige Zufallszahl wie folgt auf (gerundet):
13 Aufrufe * 2 = 26 Views
8 Aufrufe * 3 = 24 Views
6 Aufrufe * 4 = 24 Views
5 Aufrufe * 5 = 25 Views

Macht in der Summe 99 Views. D.h. die Ergebnisse weichen nur minimal vom Original ab und wer interessiert sich schon wirklich dafür, ob ein Thema 100 mal oder 99 mal aufgerufen wurde.

Diese Technik bietet sich übrigens auch bei Counter-Diensten an, wenn man Impressionen zählt. Da würde ich die Formel sogar noch weiter ausbauen, dass sie noch seltener zutrifft.


pn email
Gast 
20.02.2009, 02:21
zitieren

Mach mit!

Wenn Dir die Beiträge zum Thread "UPDATE View-Counter per Zufall (Performance Tipp)" gefallen haben oder Du noch Fragen hast oder Ergänzungen machen möchtest, solltest Du Dich gleich bei uns anmelden:



Registrierte Mitglieder genießen die folgenden Vorteile:
✔ kostenlose Mitgliedschaft
keine Werbung
✔ direkter Austausch mit Gleichgesinnten
✔ neue Fragen stellen oder Diskussionen starten
✔ schnelle Hilfe bei Problemen
✔ Bilder und Videos hochladen
✔ und vieles mehr...


Neuen Thread eröffnenNeue Antwort erstellen
Ähnliche BeiträgeRe:
Letzter Beitrag
Counter Strike?
Hi Leutz, mal ne Frage zu Cs., komme da nicht weiter in einer Szene, weiß jemand nen Cheat wo ich mich mal schnell unsterblich machen...
von Percy
4
1.063
17.10.2004, 22:05
Percy
MKL nach E10, Zufall?
Nabend allerseits, hatte gestern eine Strecke von ca. 500Km vor mir und dachte, da ich sowieso Autobahn fahre (160-180Km/h), tanke ich doch gleich E10. Gesagt, getan. Tank ist mit E10 voll. Nun, nach etwa 200Km ging dann die MKL an. Ist es ein kommischer...
von DriV3r
11
917
30.08.2012, 21:09
DriV3r
Frage zu Rear View und PDC
Hallo Leute Wie ihr sicher gelesen habt, muss mein CN2 bald zu Honda um diesen Blöden schaden reparieren zu lassen. heute hat mein Honda meister mir ein angebot gemacht Rear View inkl einbau : 680€ PDC inkl Einbau: 440€ Was würdet...
von thomasee8
15
1.022
09.10.2006, 06:44
Daccord
Performance Update MB2 D14A8
Guten Abend ! Ich bin schon seit einiger Zeit interessierter "stiller Mitleser" und hätte nun gern ein paar Ratschläge zu meinem Vorhaben. Wie im Titel ersichtlich, fahre ich einen MB2 mit dem schnuckeligen D14A8. Dass ich da keine 150 PS...
von CI90
0
297
19.11.2010, 17:51
CI90
Der Threadfluch !!! oder nur Zufall ???
Hey Leute, mir ist aufgefallen dass viele, die ihr Auto in nem eigenem Thread vorstellen, dann komischerweise nen Unfall damit haben, geht euch das auch so? ...
von RH.onda
30
1.477
11.08.2011, 18:12
Woll-E
Counter Strike etc. schadet der Jugend
erst den: http://www.ice-only.de/Counter_Strike_Stress.151.0.html und dann den, der ist noch...
von mgutt
34
3.899
07.11.2005, 19:57
mgutt
Alt aber gut! Counter Strike (Witzig)
alt, aber immer noch Lustig :D ... an denen man erkennt, das man zuviel Counter-Strike zockt: 1. Man verläßt die Wohnung nur durch den Lüftungsschacht. 2. Man betritt seine Wohnung nicht bevor man eine Flashbang durch die Tür geschmissen...
von Fuchs
9
1.438
21.02.2006, 14:11
djhemp
Counter-Strike Source - startet nicht?! // S.2
Hallo, ich habe mir überlegt, dass ich vlt. mal wieder Abends kurz ne Runde CS spielen könnte. Das letzte mal, als ich CS gespielt habe, war es Version 1.4 oder so. Also schon "etwas länger" her.. Was benötige ich denn nun eigentlich,...
von s-lab
18
1.173
07.01.2009, 19:08
el bosso
grad durch zufall gefunden....
den staubsauger kann ich euch natürlich nicht vorenthalten :laugh: http://www.willhaben.at/iad/viewimage?adId=22425562#8 weiss ja nicht ob die front in der prelude-gemeinde bekannt/beliebt ist aber ich musst erstmal lachen als ich das gesehen hab ...
von white*angel
18
756
03.01.2011, 20:51
Waqzer
Mein Neues Rear View im Accord 2006
Hab gestern meinen accord wieder bekommen. Bin sehr zufrieden. Lediglich die kamera muss neu justiert werden, ich sehe auf den display eine schwarze ecke, das ist die ecke von der nummernschildaussparung. In dem anderen Thread werde ich die pin...
von thomasee8
7
832
04.11.2006, 11:33
thomasee8
© 2004 - 2025 www.programmierer-forum.de | Communities | Impressum |