zu implementieren Ich möchte beginnen, die Anzahl der Zeiten zu zählen, die eine Webseite angezeigt wird und benötigen daher eine Art von einfachen Zähler. Was ist die beste skalierbare Methode, dies zu tun?Was ist der beste Weg, um ein Zählerfeld in MySQL
Angenommen, ich habe eine Tabelle Frobs wobei jede Zeile zu einer Seite entspricht - einige offensichtlichen Optionen sind:
Haben Sie eine unsigned int NumViews Feld in der Frobs Tabelle, die auf jede Ansicht
UPDATE Frobs SET NumViews = NumViews + 1
mit aktualisiert wird . Einfach, aber nicht so gut skalieren, wie ich es verstehe.Haben Sie eine separate Tabelle FrobViews wo eine neue Zeile für jede Ansicht eingefügt wird. Um die Anzahl der Ansichten anzuzeigen, müssen Sie dann eine einfache
SELECT COUNT(*) AS NumViews FROM FrobViews WHERE FrobId = '%d' GROUP BY FrobId
tun. Dies beinhaltet keine Aktualisierungen, so dass Tabellensperren in MyISAM-Tabellen vermieden werden können. Die Leseleistung leidet jedoch darunter, wenn Sie die Anzahl der Ansichten auf jeder Seite anzeigen möchten.
Wie machen Sie das?
Hier gibt es einige gute Ratschläge: http://www.mysqlperformanceblog.com/2007/07/01/implementing-efficient-counters-with-mysql/ aber ich würde gerne die Ansichten der SO-Community hören.
Ich verwende InnoDb im Moment, bin aber an Antworten für InnoDb und MyISAM interessiert.