2012-04-07 1 views
1

In meinem Web-Service habe ich eine Benutzertabelle, die Spalte namens "HITS" enthält, jetzt als Benutzer in dieser Benutzerklasse/Tabelle den Web-Service konsumiert, "HITS" Count wird um 1 erhöht .die Schreiboperation beinhaltet und daher in optimistisch/pessimistische Sperren kommt.High Concurrency Schreiben in Datenbank

Issue am Face ist ein Concurcurrency-Szenario, in dem 100 Hits gleichzeitig für denselben Benutzer kommen.

Kann mir jemand eine Strategie vorschlagen, um Verzögerungen zu vermeiden, die durch Sperren einer Benutzerzeile verursacht werden, um "HITS" zu aktualisieren, wenn der Web-Service gleichzeitig vom Konto des gleichen Benutzers verwendet wird?

ODER

Sie können auch einen Weg vorschlagen, eine Variable zu aktualisieren, die ich nach alle 12 Stunden überwachen, die „HITS“ Wert zu generieren, indem Sie die Variable Summieren (n) oder so etwas?

Verwenden Sie Hibernate und EJB Stateless Session Bean.

+0

Unterstützt die Datenbank Commit-Rollback? –

+0

ja, Datenbank-Unterstützung Commit & Rollback.Warum haben Sie das gefragt? – David

+0

Dann könnten Sie es zu einer atomaren Operation machen. Aber die Idee, sie einfach reinzustopfen und später zu zählen, ist viel besser. –

Antwort

3

legen Sie einfach einen Datensatz jeder für Tisch Hit in all_hits ...

dann auf einige Zeitplan - aus der Tabelle aus, und legen Sie in hits_summary Tabelle, und die Originale löschen.