Hier sind zwei einfache Ideen und eine Papier Referenz:
1) Anstelle von 1 den Zähler erhöht wird, erhöht es durch N, Kunden effektiv eine Reihe von Transaktionskennungen [c, c + N geben). Zum Beispiel, wenn N = 5, und der Anfangswert des Zählers gleich 1 ist, dann Clients A, B, und C erhalten würde die folgende:
A: [1, 2, 3, 4, 5]
B: [6, 7, 8, 9, 10]
C: [11, 12, 13, 14, 15]
Während diese den Druck auf dem Atom Zähler reduziert, da wir Aus diesem Beispiel können einige Clients (wie Client C) einen relativ hohen Bereich von IDs erhalten, während andere niedrigere Bereiche (Client A) erhalten, und dies führt zu höheren Abbruchraten im System.
2) Verwenden Sie Bereiche von interleaved Transaktionskennungen. Das ist wie 1, aber wir haben eine Schrittvariable S hinzugefügt. Hier ein einfaches Beispiel: Wenn N = 5 und S = 3 und der Anfangswert des Zählers 1 ist, dann würden die Clients AB und C folgendes bekommen:
A: [1, 4, 7, 10, 13]
B: [2, 5, 8, 11, 14]
C: [3, 6, 9, 12, 15]
Dies scheint das Problem der 1 gelöst zu haben, aber Client D betrachten:
D: [16, 19, 22, 25, 28]
Jetzt sind wieder da wir das gleiche Problem, die Lösung # 1 hatte. Tricks müssen mit dieser Technik gespielt werden, um "es richtig zu machen".
3) Eine interessante, aber komplexer wird dezentral Transaktions-IDs zuzuweisen hier beschrieben:
Tu, Stephen, Wenting Zheng, Eddie Kohler, Barbara Liskov und Samuel Madden. "Schnelle Transaktionen in Multicore In-Memory-Datenbanken." In Proceedings des vierundzwanzigsten ACM-Symposiums über die Prinzipien des Betriebssystems, S. 18-32. ACM, 2013.