2016-07-14 30 views
1

Ich muss Datenbankzeitstempel für die MVCC-Snapshot-Isolierung generieren. Die typische Methode verwendet:MVCC-Zeitstempelgenerierungsmethode für gleichzeitige Datenbank

„Transactional Aktionen in SI-TM implementiert werden wie folgt TM BEGIN: a. Logisches snapshot für die Transaktion wird erzeugt durch einen einzigartigen Zeitstempel Erhalten eines atomaren Inkrement mit dem globalen Zeitstempel-Zähler verwendet wird. "

Das Problem bei der Verwendung dieses Ansatzes in einem System mit Hunderten von Kernen ist, dass es nicht skaliert. Auf einem umkämpften Speicherplatz gibt es ein Hardware-Limit von 10M atomaren Inkrementen pro Sekunde.

Irgendwelche Ideen?

Antwort

0

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.