Download presentation
Presentation is loading. Please wait.
Published byBruno Terry Modified over 5 years ago
1
Hassium: Hardware Assisted Database Synchronization
Hillel Avni Aharon Avitzur
2
Contents Hassium Execution Example Performance Page 1
3
Hassium Single version, shared everything concurrency control algorithm The following are wrapped with separate HTM transactions: Row access, for read or write Commit Deadlock detection More characteristics: Monotonic increasing version counter V per database thread (i.e. per connection) Unique database thread ID Each database transaction Has a unique set of ID and version, <ID, V> At commit, a database transaction marks <ID, V> as committed More details in the running example… Page 2
4
Hassium Scalability Characteristics
Compared, single version, shared everything algorithm types: OCC: Lock write-set at commit time and then and validate read-set ETL: Lock write-set at encounter time and validate read-set at commit 2PL: Lock both read and write-sets at encounter time. HTM: Check conflicts by exploiting cache coherence invalidations T1 and T2, both access row R. Scalability characteristics: Writer Allows Reader: T1 wrote R T2 can read R (not ETL and 2PL) Writer See Writer: T1 wrote R T2 sees R is locked (not OCC) Reader Allows Writer: T1 read R T2 can write R (not HTM and 2PL) At Least One Survives: T1 and T2 will not mutually abort (not OCC) and ETL) Page 3
5
Contents Hassium Execution Example Performance Page 4
6
Example Threads ID = 0 V = 12 Data ID = 0 V = 3 Row 0 ID = 0 V = 3
Safe Versions Array Page 5
7
Example Threads Public ID = 0 V = 12 Data ID = 0 V = 3 Row 0 ID = 0
Private Safe Versions Array Page 6
8
Example ID (0) and V (3) of last writer of Row 1. User data not shown
Backup of last committed version of the row Threads ID = 0 V = 12 Data ID = 0 V = 3 Row 0 Highest committed version of thread 1 ID = 0 V = 3 ID = 1 V = 183 Row 1 Highest committed version of thread 0 ID = 1 V = 170 Row 2 V = 11 V = 182 Safe Versions Array Page 7
9
Example Threads ID = 0 V = 12 Data ID = 0 V = 3 Row 0 ID = 0 V = 3
Safe Versions Array Page 8
10
Example: Threads 0 and 1 Write
ID = 0 V = 12 2 Concurrent HTM TX Data ID = 0 V = 3 Row 0 ID = 1 V = 183 ID = 0 V = 3 ID = 1 V = 183 Row 1 ID = 0 V = 12 ID = 1 V = 170 Row 2 V = 11 V = 182 Safe Versions Array Page 9
11
Example: Threads Read from each other
ID = 0 V = 12 Another 2 Concurrent HTM TX Data ID = 0 V = 3 ID = 0 V = 3 Row 0 ID = 1 V = 183 ID = 0 V = 3 ID = 1 V = 183 Row 1 ID = 0 V = 12 ID = 1 V = 170 ID = 1 V = 170 Row 2 V = 11 V = 182 Safe Versions Array Page 10
12
Example: Thread 0 Validates
Threads ID = 0 V = 12 HTM TX Start Data ID = 0 V = 3 ID = 0 V = 3 Row 0 ID = 1 V = 183 ID = 0 V = 3 ID = 1 V = 183 Row 1 ID = 0 V = 12 ID = 1 V = 170 ID = 1 V = 170 Row 2 V = 11 V = 182 Safe Versions Array Page 11
13
Example: Thread 0 Validation Passed
Threads ID = 0 V = 12 HTM TX Continues Data ID = 0 V = 3 ID = 0 V = 3 Row 0 ID = 1 V = 183 ID = 0 V = 3 ID = 1 V = 183 Row 1 ID = 0 V = 12 ID = 1 V = 170 ID = 1 V = 170 Row 2 V = 11 V = 182 Safe Versions Array Page 12
14
Example: Thread 0 Commits
Threads ID = 0 V = 12 HTM TX Commits Data ID = 0 V = 3 Row 0 ID = 1 V = 183 ID = 0 V = 3 ID = 1 V = 183 Row 1 ID = 0 V = 12 ID = 1 V = 170 ID = 1 V = 170 Row 2 V = 12 V = 182 Safe Versions Array Page 13
15
Example: Thread 0 Commits
Threads ID = 0 V = 13 NO HTM Data ID = 0 V = 3 Row 0 ID = 1 V = 183 ID = 0 V = 3 ID = 1 V = 183 Row 1 ID = 0 V = 12 ID = 1 V = 170 ID = 1 V = 170 Row 2 V = 12 V = 182 Safe Versions Array Page 14
16
Example: Thread 1 Validates
Threads ID = 0 V = 13 HTM TX Start Data ID = 0 V = 3 Row 0 ID = 1 V = 183 ID = 0 V = 3 ID = 1 V = 183 Row 1 ID = 0 V = 12 ID = 1 V = 170 ID = 1 V = 170 Row 2 V = 12 V = 182 Safe Versions Array Page 15
17
Example: Threads 1 Validation Fails
HTM TX Commits Data ID = 0 V = 3 Row 0 ID = 1 V = 183 ID = 0 V = 3 ID = 1 V = 183 Row 1 ID = 0 V = 12 ID = 1 V = 170 ID = 1 V = 170 Row 2 V = 12 V = 182 Safe Versions Array Page 16
18
Example: Thread 1 Aborts and rolls back
Threads ID = 0 V = 13 NO HTM Data ID = 0 V = 3 Row 0 ID = 0 V = 3 ID = 1 V = 183 Row 1 ID = 0 V = 12 Row 2 V = 12 V = 182 Safe Versions Array Page 17
19
Contents Hassium Execution Example Performance Page 18
20
Possibility Test We execute the following test:
N rows, r1,,,rN N threads, t1…tN A thread tk executes: Start Transaction Write rk Read r1…rN Commit Transaction All the algorithms we tested stopped at 3 threads: OCC and ETL: 100% aborts 2PL: Slowed to zero Page 19
21
Contention Test – TPCC New Order
Mix of reads and writes. Hassium has Lower DB abort rate than OCC. When contention rises, Hassium has lower overhead than 2PL Page 20
22
Contention Test – TPCC Payment
Mostly writes Hassium has Lower DB abort than ETL due to deadlock detection OCC has lower part of aborted DB transactions but, higher part of aborted work, because OCC always aborts at commit and waists more work Page 21
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.