Lorenzo Alvisi
THE PIT AND THE PENDULUM
Performance
A CLASSIC HORROR STORY
Database Programmer
Ease
- f
Programming
Database Programmer
Ease
- f
Programming Performance Ease
- f
Programming Performance
Database Programmer
A CLASSIC HORROR STORY Ease of Performance Programming THE PIT - - PowerPoint PPT Presentation
A CLASSIC HORROR STORY Ease of Performance Programming THE PIT AND THE PENDULUM Lorenzo Alvisi Database Programmer Ease Ease of Performance of Performance Programming Programming Database Programmer Database
Lorenzo Alvisi
Performance
Database Programmer
Ease
Programming
Database Programmer
Ease
Programming Performance Ease
Programming Performance
Database Programmer
Pierre Franc Lamy Young girl on a balcony (1911) Carlo Carrà Concurrency, Woman on a balcony (1912)
ACID Txn
z := x+y y++ x := 0
Txn
Txn Txn Txn Txn Txn
Txn
Txn Txn Txn
Txn
Txn Txn
Atomicity Consistency Isolation Durability
Database System Default Isolation Strongest Isolation MySQL Cluster Read Committed Read Committed SAP HANA Read Committed Snapshot Isolation Google Spanner Serializability Serializability VoltDB Serializability Serializability Oracle 12C Read Committed Snapshot Isolation MemSQL Read Committed Read Committed SQL Server Read Committed Serializability Postgres Read Committed Serializability
phenomena that can lead to violations of serializability
implementations of serializability
independent (greater flexibility/ better performance)
Isolation Level Proscribed Phenomena
Dirty Read Fuzzy Read Phantom Read Uncommitted Read Committed Repeatable Read (Anomaly) Serializable
R(A) R(B) R(A) W(A)
T1 T2
BEGIN BEGIN COMMIT ABORT A = 5 A = 12 A = 12 W(A) W(B) A = 15
commits or aborts.
item that was never committed and so never really existed.
Root: Write-Read conflict
A.K.A. NON-REPEATABLE READS
R(A) R(A) W(A)
T1 T2
BEGIN BEGIN COMMIT COMMIT A = 5 A = 10 A = 10
item and commits.
receives a modified value or discovers the item was deleted.
Root: Read-Write conflict
T1 T2
BEGIN SELECT MAX (salary) FROM players WHERE team = ‘Juve’ COMMIT SELECT MAX (salary) FROM players WHERE team = ‘Juve’ BEGIN COMMIT INSERT INTO players (salary = 30M, team = ‘Juve’)
8M 30M
On July 10 2018…
Non-repeatable predicate-based reads
<search condition>.
T1’s <search condition> and commits.
same <search condition>, it gets a different set of data
Berenson et al, SIGMOD ‘95
R(A) R(B) R(A) W(A)
T1 T2
BEGIN BEGIN COMMIT ABORT A = 5 A = 12 A = 12 W(A) W(B) A = 15
Dirty Reads
similar distinctions for P2 (NR reads) and P3 (Phantoms)
C2) in any order)
T1 T2
BEGIN BEGIN COMMIT COMMIT R(Y=50) R(X= 50) R(X = 10) R(Y = 50) W(Y = 90) W(X = 10)
Dirty Reads
C2) in any order)
T1 T2
BEGIN BEGIN COMMIT COMMIT R(Y=90) R(X= 50) R(X = 50) R(Y = 50) W(Y = 90)
Non-repeatable Reads
W(X = 10)
ANSI isolation levels should be intended to proscribe phenomena, not anomalies
locking counterpart
Isolation Level Read Locks Write Locks
Locking Read Uncommitted
None Long† write locks
Locking Read Committed
Short* read locks (both) Long write locks
Locking Repeatable Read
Long item locks Short predicate locks Long write locks
Locking Serializable
Long read locks (both) Long write locks
Long†: Released after transaction commits Short*: Released after operation ends
ANSI P3 should prevent phantoms due to deletions and updates, not just creations
locking counterpart
Isolation Level Read Locks Write Locks
Locking Read Uncommitted
None Long† write locks
Locking Read Committed
Short* read locks (both) Long write locks
Locking Repeatable Read
Long item locks Short predicate locks Long write locks
Locking Serializable
Long read locks (both) Long write locks
Long†: Released after transaction commits Short*: Released after operation ends
still
W(A)
T1 T2
BEGIN BEGIN COMMIT COMMIT A = 10 W(A) A = 15
Root: Write-Write conflicts
before T1 commits or aborts.
violating invariants
B = 10 W(B) W(B) B = 15
ANSI isolation levels should include phenomenon P0
P0: W1[X]…W2[X]…(C1or A1) and (C2 or A2) in any order
Locking Isolation Level Proscribed Phenomena Read locks on data items and phantoms Write locks on data items and phantoms Degree 0 none none Short* write locks Degree 1 = Locking READ UNCOMMITTED P0 none Long† write locks Degree 2 = Locking READ COMMITTED P0, P1 Short read locks Long write locks Locking REPEATABLE READ P0, P1, P2
Long data-item read locks; Short phantom read locks
Long write locks Degree 3 = Locking SERIALIZABLE P0, P1, P2, P3 Long read locks Long write locks
Long†: Released after transaction commits Short*: Released after operation ends
version implementations
at T’s start time
those of any transaction which committed in the interval between T’s start time and commit time
T1: Change green to red T2: Change red to green
T1: Change green to red T2: Change red to green
T1: Change green to red T2: Change red to green
* * * * * * * *
Serial
committed transactions
Adya et al, SIGMOD ‘95
Serialization Graph (DSG)
(anti-dependency) (dependency)
Ti
s
− → Tj : ci < sj
Ti
ww
− − → Tj Ti
wr
− − → Tj Ti
rw
− − → Tj
Proscribes P0: W1[X] … W2[X] … (C1 or A1)
Now, proscribes G0: DSG(H) contains a directed cycle
consisting exclusively of WW edges
Concurrent transactions can modify the same object (as long as they don’t all commit)
T1 T2
ww ww
T1 T2 T1 T2 T3 T2 T3 T1
wr
<latexit sha1_base64="5lgCNYoEvSuUCW v76le0GQx+h0=">A B3nicdVDLTgJBEOzF +IL9ehlIjHxtNkVg3qSxItHNK6QAMHZYRYmzD4y06sh LMXDSeN3+PJX/Az/AMH0AM+KumkUlWd6Ro/kUKj47xbmbn5hcWl7HJuZXVtfSO/uXWt41Qx7rFYxqrmU82liLiHAiWvJYrT0Je86vfOxn71list4ugK+wlvhrQTiUAwika6vFOtfMG1nQnI/6Rw+vE6ugGASiv/1mjHLA15hExSreu k2BzQBUKJvkw10g1Tyjr0Q4fTO4bkj0jtUkQKzMRkok6k6Oh1v3QN8mQYlf/9MbiX149xeC4ORBRkiKP2PShIJUEYzIuS9pCcYaybwhlSpgLCetSR maL8mZ6o5dLB26RYf8Jt/VvQP7xHYvnEK5BFNkYQd2YR9cOI ynEMFPGAQwAM8wbNFrXvr0RpNoxnra2cbZmC9fALyLIv6</latexit> <latexit sha1_base64="wmU8E1cA4jstcm2 1QNSh70es60=">A B3nicdVC7TgJBFL2L 8QXamkzkZhQkV0xqJUkNpZoXCEBQmaHWZgw+8jMXQ0h1DYaKo3fo42/4GdY2DuAFvg4yU1Ozjk3c894sRQabfvNSs3NLywupZczK6tr6xvZza0rHSWKcZdFMlI1j2ouRchdFCh5LVacBp7kVa93Ovar1 xpEYWX2I95M6CdUPiCUT SxY1qZXNOwZ6A/E9yJ+/Po0b+46XSyr42 hFLAh4ik1TrumPH2BxQhYJ Psw0Es1jynq0w eT+4Zkz0ht4kfKTIhkos7kaKB1P/BM qDY1T+9sfiXV0/QP2oORBgnyEM2fchPJMGIjMuStlCcoewbQpkS5kLCulR huZLMqa6XSiWDpyiTX6T7+rufuG4 JzbuXIJpkjD uxCHhw4hDKcQ VcYOD HTzAo0WtW+veGk2jKetrZxtmYD19AlkqjdY=</latexit> <latexit sha1_base64="wmU8E1cA4jstcm2 1QNSh70es60=">A B3nicdVC7TgJBFL2L 8QXamkzkZhQkV0xqJUkNpZoXCEBQmaHWZgw+8jMXQ0h1DYaKo3fo42/4GdY2DuAFvg4yU1Ozjk3c894sRQabfvNSs3NLywupZczK6tr6xvZza0rHSWKcZdFMlI1j2ouRchdFCh5LVacBp7kVa93Ovar1 xpEYWX2I95M6CdUPiCUT SxY1qZXNOwZ6A/E9yJ+/Po0b+46XSyr42 hFLAh4ik1TrumPH2BxQhYJ Psw0Es1jynq0w eT+4Zkz0ht4kfKTIhkos7kaKB1P/BM qDY1T+9sfiXV0/QP2oORBgnyEM2fchPJMGIjMuStlCcoewbQpkS5kLCulR huZLMqa6XSiWDpyiTX6T7+rufuG4 JzbuXIJpkjD uxCHhw4hDKcQ VcYOD HTzAo0WtW+veGk2jKetrZxtmYD19AlkqjdY=</latexit> <latexit sha1_base64="wmU8E1cA4jstcm2 1QNSh70es60=">A B3nicdVC7TgJBFL2L 8QXamkzkZhQkV0xqJUkNpZoXCEBQmaHWZgw+8jMXQ0h1DYaKo3fo42/4GdY2DuAFvg4yU1Ozjk3c894sRQabfvNSs3NLywupZczK6tr6xvZza0rHSWKcZdFMlI1j2ouRchdFCh5LVacBp7kVa93Ovar1 xpEYWX2I95M6CdUPiCUT SxY1qZXNOwZ6A/E9yJ+/Po0b+46XSyr42 hFLAh4ik1TrumPH2BxQhYJ Psw0Es1jynq0w eT+4Zkz0ht4kfKTIhkos7kaKB1P/BM qDY1T+9sfiXV0/QP2oORBgnyEM2fchPJMGIjMuStlCcoewbQpkS5kLCulR huZLMqa6XSiWDpyiTX6T7+rufuG4 JzbuXIJpkjD uxCHhw4hDKcQ VcYOD HTzAo0WtW+veGk2jKetrZxtmYD19AlkqjdY=</latexit> <latexit sha1_base64="wmU8E1cA4jstcm2 1QNSh70es60=">A B3nicdVC7TgJBFL2L 8QXamkzkZhQkV0xqJUkNpZoXCEBQmaHWZgw+8jMXQ0h1DYaKo3fo42/4GdY2DuAFvg4yU1Ozjk3c894sRQabfvNSs3NLywupZczK6tr6xvZza0rHSWKcZdFMlI1j2ouRchdFCh5LVacBp7kVa93Ovar1 xpEYWX2I95M6CdUPiCUT SxY1qZXNOwZ6A/E9yJ+/Po0b+46XSyr42 hFLAh4ik1TrumPH2BxQhYJ Psw0Es1jynq0w eT+4Zkz0ht4kfKTIhkos7kaKB1P/BM qDY1T+9sfiXV0/QP2oORBgnyEM2fchPJMGIjMuStlCcoewbQpkS5kLCulR huZLMqa6XSiWDpyiTX6T7+rufuG4 JzbuXIJpkjD uxCHhw4hDKcQ VcYOD HTzAo0WtW+veGk2jKetrZxtmYD19AlkqjdY=</latexit> <latexit sha1_base64="oQz48/yjCuf3H6Z5cROKYh6eUCg=">A B3nicdVDLSgMxFL1TX7W+qi7dBIvgashYqboruHFZxbGFtpRMm lDMw+SO0opXbtRXCl+kr/g35g+XNTHgcDhnBPuPTdIlTRI6aeTW1peWV3Lrxc2Nre2d4q7e3cmyTQXPk9UohsBM0LJWPgoUYlGqgWLAiXqweBy4tfvhTYyiW9xmIp2xHqxDCVnaKWbB90pljyXTkH+JyWYo9YpfrS6Cc8iESNXzJimR1Nsj5hGyZUYF1qZESnjA9YTo+l+Y3JkpS4JE21fjGSqLuRYZMw CmwyYtg3P72J+JfXzDA8b49knGYoYj4bFGaKYEImZUlXasFRDS1hXEu7IeF9phlHe5KCrU7dcuXUK1Pym3xX90/cC9e7pqVqZX6DPBzAIRyDB2dQhSuogQ8cQniCV3hzmP oPDsvs2jOmf/ZhwU4718tcIkZ</latexit>wr
<latexit sha1_base64="5lgCNYoEvSuUCW v76le0GQx+h0=">A B3nicdVDLTgJBEOzF +IL9ehlIjHxtNkVg3qSxItHNK6QAMHZYRYmzD4y06sh LMXDSeN3+PJX/Az/AMH0AM+KumkUlWd6Ro/kUKj47xbmbn5hcWl7HJuZXVtfSO/uXWt41Qx7rFYxqrmU82liLiHAiWvJYrT0Je86vfOxn71list4ugK+wlvhrQTiUAwika6vFOtfMG1nQnI/6Rw+vE6ugGASiv/1mjHLA15hExSreu k2BzQBUKJvkw10g1Tyjr0Q4fTO4bkj0jtUkQKzMRkok6k6Oh1v3QN8mQYlf/9MbiX149xeC4ORBRkiKP2PShIJUEYzIuS9pCcYaybwhlSpgLCetSR maL8mZ6o5dLB26RYf8Jt/VvQP7xHYvnEK5BFNkYQd2YR9cOI ynEMFPGAQwAM8wbNFrXvr0RpNoxnra2cbZmC9fALyLIv6</latexit> <latexit sha1_base64="wmU8E1cA4jstcm2 1QNSh70es60=">A B3nicdVC7TgJBFL2L 8QXamkzkZhQkV0xqJUkNpZoXCEBQmaHWZgw+8jMXQ0h1DYaKo3fo42/4GdY2DuAFvg4yU1Ozjk3c894sRQabfvNSs3NLywupZczK6tr6xvZza0rHSWKcZdFMlI1j2ouRchdFCh5LVacBp7kVa93Ovar1 xpEYWX2I95M6CdUPiCUT SxY1qZXNOwZ6A/E9yJ+/Po0b+46XSyr42 hFLAh4ik1TrumPH2BxQhYJ Psw0Es1jynq0w eT+4Zkz0ht4kfKTIhkos7kaKB1P/BM qDY1T+9sfiXV0/QP2oORBgnyEM2fchPJMGIjMuStlCcoewbQpkS5kLCulR huZLMqa6XSiWDpyiTX6T7+rufuG4 JzbuXIJpkjD uxCHhw4hDKcQ VcYOD HTzAo0WtW+veGk2jKetrZxtmYD19AlkqjdY=</latexit> <latexit sha1_base64="wmU8E1cA4jstcm2 1QNSh70es60=">A B3nicdVC7TgJBFL2L 8QXamkzkZhQkV0xqJUkNpZoXCEBQmaHWZgw+8jMXQ0h1DYaKo3fo42/4GdY2DuAFvg4yU1Ozjk3c894sRQabfvNSs3NLywupZczK6tr6xvZza0rHSWKcZdFMlI1j2ouRchdFCh5LVacBp7kVa93Ovar1 xpEYWX2I95M6CdUPiCUT SxY1qZXNOwZ6A/E9yJ+/Po0b+46XSyr42 hFLAh4ik1TrumPH2BxQhYJ Psw0Es1jynq0w eT+4Zkz0ht4kfKTIhkos7kaKB1P/BM qDY1T+9sfiXV0/QP2oORBgnyEM2fchPJMGIjMuStlCcoewbQpkS5kLCulR huZLMqa6XSiWDpyiTX6T7+rufuG4 JzbuXIJpkjD uxCHhw4hDKcQ VcYOD HTzAo0WtW+veGk2jKetrZxtmYD19AlkqjdY=</latexit> <latexit sha1_base64="wmU8E1cA4jstcm2 1QNSh70es60=">A B3nicdVC7TgJBFL2L 8QXamkzkZhQkV0xqJUkNpZoXCEBQmaHWZgw+8jMXQ0h1DYaKo3fo42/4GdY2DuAFvg4yU1Ozjk3c894sRQabfvNSs3NLywupZczK6tr6xvZza0rHSWKcZdFMlI1j2ouRchdFCh5LVacBp7kVa93Ovar1 xpEYWX2I95M6CdUPiCUT SxY1qZXNOwZ6A/E9yJ+/Po0b+46XSyr42 hFLAh4ik1TrumPH2BxQhYJ Psw0Es1jynq0w eT+4Zkz0ht4kfKTIhkos7kaKB1P/BM qDY1T+9sfiXV0/QP2oORBgnyEM2fchPJMGIjMuStlCcoewbQpkS5kLCulR huZLMqa6XSiWDpyiTX6T7+rufuG4 JzbuXIJpkjD uxCHhw4hDKcQ VcYOD HTzAo0WtW+veGk2jKetrZxtmYD19AlkqjdY=</latexit> <latexit sha1_base64="wmU8E1cA4jstcm2 1QNSh70es60=">A B3nicdVC7TgJBFL2L 8QXamkzkZhQkV0xqJUkNpZoXCEBQmaHWZgw+8jMXQ0h1DYaKo3fo42/4GdY2DuAFvg4yU1Ozjk3c894sRQabfvNSs3NLywupZczK6tr6xvZza0rHSWKcZdFMlI1j2ouRchdFCh5LVacBp7kVa93Ovar1 xpEYWX2I95M6CdUPiCUT SxY1qZXNOwZ6A/E9yJ+/Po0b+46XSyr42 hFLAh4ik1TrumPH2BxQhYJ Psw0Es1jynq0w eT+4Zkz0ht4kfKTIhkos7kaKB1P/BM qDY1T+9sfiXV0/QP2oORBgnyEM2fchPJMGIjMuStlCcoewbQpkS5kLCulR huZLMqa6XSiWDpyiTX6T7+rufuG4 JzbuXIJpkjD uxCHhw4hDKcQ VcYOD HTzAo0WtW+veGk2jKetrZxtmYD19AlkqjdY=</latexit> <latexit sha1_base64="oQz48/yjCuf3H6Z5cROKYh6eUCg=">A B3nicdVDLSgMxFL1TX7W+qi7dBIvgashYqboruHFZxbGFtpRMm lDMw+SO0opXbtRXCl+kr/g35g+XNTHgcDhnBPuPTdIlTRI6aeTW1peWV3Lrxc2Nre2d4q7e3cmyTQXPk9UohsBM0LJWPgoUYlGqgWLAiXqweBy4tfvhTYyiW9xmIp2xHqxDCVnaKWbB90pljyXTkH+JyWYo9YpfrS6Cc8iESNXzJimR1Nsj5hGyZUYF1qZESnjA9YTo+l+Y3JkpS4JE21fjGSqLuRYZMw CmwyYtg3P72J+JfXzDA8b49knGYoYj4bFGaKYEImZUlXasFRDS1hXEu7IeF9phlHe5KCrU7dcuXUK1Pym3xX90/cC9e7pqVqZX6DPBzAIRyDB2dQhSuogQ8cQniCV3hzmP oPDsvs2jOmf/ZhwU4718tcIkZ</latexit>s
<latexit sha1_base64="WoQu8beNs9O+s6/rb3O/5y4h/lY=">A B3XicdVDLTgJBEOzF +IL9ehlIjHxtNkVg3qSxItHSFwhAQKzQy9MmH1kZtaE K5eNHrR+D+e/AU/wz9wAD3go5JOKlXVma7xE8GVdpx3K7OwuLS8kl3Nra1vbG7lt3euVZxKh 6LRSzrPlUoeISe5lpgPZFIQ19gzR9cTPzaDUrF4+hKDxNshbQX8YAzqo1UVe18wbWdKcj/pHD+8frYAYBKO/ W7MYsDTHSTFClGq6T6NaISs2ZwHGumSpMKBvQHo6m543JgZG6JIilmUiTqTqXo6FSw9A3yZDqv rpTcS/vEaqg9PWiEdJqjFis4eCVBAdk0lX0uUSmRZDQyiT3FxIWJ9KyrT5kZyp7tjF0rFbdMhv8l3dO7LPbLfqFMolmCELe7APh+DC ZThEirgAQOEO3iCZ6tj3Vr31sMsmrG+dnZhDtbLJx8Wi3o=</latexit> <latexit sha1_base64="p3L8L4+zcvVyUZH/FKE5E7jri7s=">A B3XicdVC7TgJBFL2L 8QXamkzkZhQbXbFoFaS2FhC4goJEJwdLjBh9pGZWRNCaG0 2mj8H238BT/Dwt4BtMDHSW5ycs65mXvGjwVX2nHerNTc/MLiUno5s7K6tr6R3dy6UFEiGXosEpGs+VSh4CF6m uBtVgiDXyBVb9/OvarVygVj8JzPYixGdBuyDucUW2kimplc67tTED+J7mT9+f7Rv7jpdzKvjbaEUsCD UTVKm6 8S6OaRScyZwlGk CmPK+rSLw8l5I7JnpDbpRNJMqMlEncnRQKlB4JtkQHVP/fTG4l9ePdGdo+aQh3GiMWT hzqJIDoi46 kzSUyLQaGUCa5uZCwHpWUafMjGVPdsQvFA7fgkN/ku7q3bx/b sXJlYowR p2YBfy4MIhlOAMyuABA4QbeIBH69K6tm6tu2k0ZX3tbM rKdPhgWNVg= </latexit> <latexit sha1_base64="p3L8L4+zcvVyUZH/FKE5E7jri7s=">A B3XicdVC7TgJBFL2L 8QXamkzkZhQbXbFoFaS2FhC4goJEJwdLjBh9pGZWRNCaG0 2mj8H238BT/Dwt4BtMDHSW5ycs65mXvGjwVX2nHerNTc/MLiUno5s7K6tr6R3dy6UFEiGXosEpGs+VSh4CF6m uBtVgiDXyBVb9/OvarVygVj8JzPYixGdBuyDucUW2kimplc67tTED+J7mT9+f7Rv7jpdzKvjbaEUsCD UTVKm6 8S6OaRScyZwlGk CmPK+rSLw8l5I7JnpDbpRNJMqMlEncnRQKlB4JtkQHVP/fTG4l9ePdGdo+aQh3GiMWT hzqJIDoi46 kzSUyLQaGUCa5uZCwHpWUafMjGVPdsQvFA7fgkN/ku7q3bx/b sXJlYowR p2YBfy4MIhlOAMyuABA4QbeIBH69K6tm6tu2k0ZX3tbM rKdPhgWNVg= </latexit> <latexit sha1_base64="p3L8L4+zcvVyUZH/FKE5E7jri7s=">A B3XicdVC7TgJBFL2L 8QXamkzkZhQbXbFoFaS2FhC4goJEJwdLjBh9pGZWRNCaG0 2mj8H238BT/Dwt4BtMDHSW5ycs65mXvGjwVX2nHerNTc/MLiUno5s7K6tr6R3dy6UFEiGXosEpGs+VSh4CF6m uBtVgiDXyBVb9/OvarVygVj8JzPYixGdBuyDucUW2kimplc67tTED+J7mT9+f7Rv7jpdzKvjbaEUsCD UTVKm6 8S6OaRScyZwlGk CmPK+rSLw8l5I7JnpDbpRNJMqMlEncnRQKlB4JtkQHVP/fTG4l9ePdGdo+aQh3GiMWT hzqJIDoi46 kzSUyLQaGUCa5uZCwHpWUafMjGVPdsQvFA7fgkN/ku7q3bx/b sXJlYowR p2YBfy4MIhlOAMyuABA4QbeIBH69K6tm6tu2k0ZX3tbM rKdPhgWNVg= </latexit> <latexit sha1_base64="p3L8L4+zcvVyUZH/FKE5E7jri7s=">A B3XicdVC7TgJBFL2L 8QXamkzkZhQbXbFoFaS2FhC4goJEJwdLjBh9pGZWRNCaG0 2mj8H238BT/Dwt4BtMDHSW5ycs65mXvGjwVX2nHerNTc/MLiUno5s7K6tr6R3dy6UFEiGXosEpGs+VSh4CF6m uBtVgiDXyBVb9/OvarVygVj8JzPYixGdBuyDucUW2kimplc67tTED+J7mT9+f7Rv7jpdzKvjbaEUsCD UTVKm6 8S6OaRScyZwlGk CmPK+rSLw8l5I7JnpDbpRNJMqMlEncnRQKlB4JtkQHVP/fTG4l9ePdGdo+aQh3GiMWT hzqJIDoi46 kzSUyLQaGUCa5uZCwHpWUafMjGVPdsQvFA7fgkN/ku7q3bx/b sXJlYowR p2YBfy4MIhlOAMyuABA4QbeIBH69K6tm6tu2k0ZX3tbM rKdPhgWNVg= </latexit> <latexit sha1_base64="3HkhEnNDHb92/BXAbRnIAIrc89M=">A B3XicdVDLSgMxFL2pr1pfVZdugkVwNcxYqboruH ZgmMLbamZN OGZh4kd4RSunWjuFL8JX/BvzF9uKiPA4HDOSfce26QKmnQdT9JbmV1bX0jv1nY2t7Z3SvuH9yZJN c+DxRiW4GzAglY+GjRCWaqRYsCpRoBMPrqd94ENrIJL7FUSo6EevHMpScoZXqpls eY47A/2flGCBWrf40e4lPItEjFwxY1qem2JnzDRKrsSk0M6MSBkfsr4Yz9ab0BMr9WiYaPtipDN1Kc iY0ZRYJMRw4H56U3Fv7xWhuFlZyzjNEMR8/mgMFMUEzrtSntSC45qZAnjWtoNKR8wzTjaixRsd cpV869skt/k+/q/plz5Xh1t1StLG6QhyM4hlPw4AKqcAM18IGDgCd4hTdyTx7JM3mZR3Nk8ecQlkDevwBaS4iZ</latexit>cycles consisting of write-write
a write-read or write-write edge without a start edge a cycle consisting of write-read/ write-write/start-edges, and a single read-write edge
wr wr wr
ww ww rw s s s ww
T1 T2
BEGIN BEGIN COMMIT COMMIT W(X= 10) W(Y= 90) W(Y= 50) W(X= 80)
T1 T2
BEGIN BEGIN COMMIT COMMIT R(Y= 50) R(X = 10) W(X = 90) W(Y=80)
Theory
Conflict Serializability MySQL Community Edition Multiversion Serializability Rococo Anomaly Serializability Oracle 12C
Semantic gap between how isolation guarantees are defined and how they are experienced by application programmers
Definiti Percepti
In terms of histories and operations invisible Properties of
≠
How isolation properties are formalized How applications perceive them
contracts specifying which values they can read (i.e. which states they can observe)
Crooks et al, 2017
R2(Y0) R2(Z1)
X: X0 Y: Y0 Z: Z0 X: X0 Y: Y1 Z: Z1 X: X0 Y: Y2 Z: Z1
Crooks et al, 2017
candidate read states
that narrows down which read states are acceptable
R2(Y0) R2(Z1)
X: X0 Y: Y0 Z: Z0 X: X0 Y: Y1 Z: Z1 X: X0 Y: Y2 Z: Z1
A storage system guarantees a specific isolation level I if it can produce an execution (a sequence
Crooks et al, 2017
If no read state prove suitable for some transaction, then I does not hold
X: X0 Y: Y0 Z: Z0 X: X0 Y: Y1 Z: Z1 X: X0 Y: Y2 Z: Z1 X: X1 Y: Y2 Z: Z1
T0 T2 T
Se
X: X0 Y: Y0 Z: Z0 X: X0 Y: Y1 Z: Z1 X: X0 Y: Y2 Z: Z1 X: X1 Y: Y2 Z: Z1
T0 T2 T
Se
X: X0 Y: Y0 Z: Z0 X: X0 Y: Y1 Z: Z1 X: X0 Y: Y2 Z: Z1 X: X1 Y: Y2 Z: Z1
T0 T2 T
X: X0 Y: Y0 Z: Z0 X: X0 Y: Y1 Z: Z1 X: X0 Y: Y2 Z: Z1
T0 T2 T
R(Z1) R(Y1)
Se
X: X0 Y: Y0 Z: Z0 X: X0 Y: Y1 Z: Z1 X: X0 Y: Y2 Z: Z1 X: X1 Y: Y2 Z: Z1
T0 T2 T
X: X0 Y: Y0 Z: Z0 X: X0 Y: Y1 Z: Z1 X: X0 Y: Y2 Z: Z1
T0 T2 T
R(Z1) R(Y1)
Se
serializability holds if there exists execution e such that for all T in T
COMPLETEe,T (sp)
T1 T2 T1 T2 T3 T2 T3 T1
ww
<latexit sha1_base64="9Im5U olgAN5R OfcG25irxKxTU=">A B3nicdVDLTgJBEOzF +IL9ehlIjHxtNlVg3qSxItHNK6QAMHZYRYmzD4y0ysh LMXDSeN3+PJX/Az/AMH0AM+KumkUlWd6Ro/kUKj47xbmbn5hcWl7HJuZXVtfSO/uXWj41Qx7rFYxqrqU82liLiHAiWvJorT0Je84nfPx37ljist4uga+wlvhLQdiUAwika6 vWa+YJrOxOQ/0nh7ON1dAsA5Wb+rd6KWRryCJmkWtdcJ8HGgCoUTPJhrp5qnlDWpW0+mNw3JHtGapEgVmYiJBN1JkdDrfuhb5IhxY7+6Y3Fv7xaisFJYyCiJEUeselDQSoJxmRclrSE4gxl3xDKlDAXEtahijI0X5Iz1R37sHjkHjrkN/mu7h3Yp7Z76R KRZgiCzuwC/vgwjGU4ALK4AGDAB7gCZ4tat1bj9ZoGs1YXzvbMAPr5RP5iYv/</latexit> <latexit sha1_base64="gXwapw3M6Cp4F16cVswLZjF6R/Q=">A B3nicdVC7TgJBFL2L 8QXamkzkZhQkV01qJUkNpZoXCEBQmaHWZgw+8jMXQkh1DYaKo3fo42/4GdY2DuAFvg4yU1Ozjk3c894sRQabfvNSs3NLywupZczK6tr6xvZza1rHSWKcZdFMlJVj2ouRchdFCh5NVacBp7kFa97NvYrN1xpEYVX2I95I6DtUPiCUT SZa/XzOacgj0B+Z/kTt+fR/X8x0u5mX2t yKWBDxEJqnWNceOsTGgCgWTfJipJ5rHlHVpmw8m9w3JnpFaxI+UmRDJRJ3J0UDrfuCZ ECxo396Y/Evr5agf9wYiDBOkIds+pCfSI RGZclLaE4Q9k3hDIlzIWEdai DM2XZEx1u3BQPHQObPKbfFd39wsnBefCzpWKMEUadmAX8uDAEZTgHMrgAgMf7uABHi1q3Vr31mgaTVlfO9swA+vpE2CHjds=</latexit> <latexit sha1_base64="gXwapw3M6Cp4F16cVswLZjF6R/Q=">A B3nicdVC7TgJBFL2L 8QXamkzkZhQkV01qJUkNpZoXCEBQmaHWZgw+8jMXQkh1DYaKo3fo42/4GdY2DuAFvg4yU1Ozjk3c894sRQabfvNSs3NLywupZczK6tr6xvZza1rHSWKcZdFMlJVj2ouRchdFCh5NVacBp7kFa97NvYrN1xpEYVX2I95I6DtUPiCUT SZa/XzOacgj0B+Z/kTt+fR/X8x0u5mX2t yKWBDxEJqnWNceOsTGgCgWTfJipJ5rHlHVpmw8m9w3JnpFaxI+UmRDJRJ3J0UDrfuCZ ECxo396Y/Evr5agf9wYiDBOkIds+pCfSI RGZclLaE4Q9k3hDIlzIWEdai DM2XZEx1u3BQPHQObPKbfFd39wsnBefCzpWKMEUadmAX8uDAEZTgHMrgAgMf7uABHi1q3Vr31mgaTVlfO9swA+vpE2CHjds=</latexit> <latexit sha1_base64="gXwapw3M6Cp4F16cVswLZjF6R/Q=">A B3nicdVC7TgJBFL2L 8QXamkzkZhQkV01qJUkNpZoXCEBQmaHWZgw+8jMXQkh1DYaKo3fo42/4GdY2DuAFvg4yU1Ozjk3c894sRQabfvNSs3NLywupZczK6tr6xvZza1rHSWKcZdFMlJVj2ouRchdFCh5NVacBp7kFa97NvYrN1xpEYVX2I95I6DtUPiCUT SZa/XzOacgj0B+Z/kTt+fR/X8x0u5mX2t yKWBDxEJqnWNceOsTGgCgWTfJipJ5rHlHVpmw8m9w3JnpFaxI+UmRDJRJ3J0UDrfuCZ ECxo396Y/Evr5agf9wYiDBOkIds+pCfSI RGZclLaE4Q9k3hDIlzIWEdai DM2XZEx1u3BQPHQObPKbfFd39wsnBefCzpWKMEUadmAX8uDAEZTgHMrgAgMf7uABHi1q3Vr31mgaTVlfO9swA+vpE2CHjds=</latexit> <latexit sha1_base64="gXwapw3M6Cp4F16cVswLZjF6R/Q=">A B3nicdVC7TgJBFL2L 8QXamkzkZhQkV01qJUkNpZoXCEBQmaHWZgw+8jMXQkh1DYaKo3fo42/4GdY2DuAFvg4yU1Ozjk3c894sRQabfvNSs3NLywupZczK6tr6xvZza1rHSWKcZdFMlJVj2ouRchdFCh5NVacBp7kFa97NvYrN1xpEYVX2I95I6DtUPiCUT SZa/XzOacgj0B+Z/kTt+fR/X8x0u5mX2t yKWBDxEJqnWNceOsTGgCgWTfJipJ5rHlHVpmw8m9w3JnpFaxI+UmRDJRJ3J0UDrfuCZ ECxo396Y/Evr5agf9wYiDBOkIds+pCfSI RGZclLaE4Q9k3hDIlzIWEdai DM2XZEx1u3BQPHQObPKbfFd39wsnBefCzpWKMEUadmAX8uDAEZTgHMrgAgMf7uABHi1q3Vr31mgaTVlfO9swA+vpE2CHjds=</latexit> <latexit sha1_base64="loY2TxzbvySFTQbK9jPKOmw3ar0=">A B3nicdVDLSgMxFL1TX7W+qi7dBIvgashYqboruHFZxbGFtpRMm lDMw+SO5ZSunajuFL8JH/BvzF9uPB1IHA454R7zw1SJQ1S+uHklpZXVtfy64WNza3tneLu3p1JMs2FzxOV6EbAjFAyFj5KVK RasGiQIl6MLic+vV7oY1M4lscpaIdsV4sQ8kZWulmO wUS5 LZyD/kxIsUOsU31vdhGeRiJErZkzToym2x0yj5EpMCq3MiJTxAeuJ8Wy/CTmyUpeEibYvRjJTv+VYZMwoCmwyYtg3P72p+JfXzDA8b49lnGYoYj4fFGaKYEKmZUlXasFRjSxhXEu7IeF9phlHe5KCrU7dcuXUK1Pym3xV90/cC9e7pqVqZXGDPBzAIRyDB2dQhSuogQ8cQniEF3h1mP gPDnP82jOWfzZh29w3j4BNM2JHg= </latexit>wr
<latexit sha1_base64="5lgCNYoEvSuUCW v76le0GQx+h0=">A B3nicdVDLTgJBEOzF +IL9ehlIjHxtNkVg3qSxItHNK6QAMHZYRYmzD4y06sh LMXDSeN3+PJX/Az/AMH0AM+KumkUlWd6Ro/kUKj47xbmbn5hcWl7HJuZXVtfSO/uXWt41Qx7rFYxqrmU82liLiHAiWvJYrT0Je86vfOxn71list4ugK+wlvhrQTiUAwika6vFOtfMG1nQnI/6Rw+vE6ugGASiv/1mjHLA15hExSreu k2BzQBUKJvkw10g1Tyjr0Q4fTO4bkj0jtUkQKzMRkok6k6Oh1v3QN8mQYlf/9MbiX149xeC4ORBRkiKP2PShIJUEYzIuS9pCcYaybwhlSpgLCetSR maL8mZ6o5dLB26RYf8Jt/VvQP7xHYvnEK5BFNkYQd2YR9cOI ynEMFPGAQwAM8wbNFrXvr0RpNoxnra2cbZmC9fALyLIv6</latexit> <latexit sha1_base64="wmU8E1cA4jstcm2 1QNSh70es60=">A B3nicdVC7TgJBFL2L 8QXamkzkZhQkV0xqJUkNpZoXCEBQmaHWZgw+8jMXQ0h1DYaKo3fo42/4GdY2DuAFvg4yU1Ozjk3c894sRQabfvNSs3NLywupZczK6tr6xvZza0rHSWKcZdFMlI1j2ouRchdFCh5LVacBp7kVa93Ovar1 xpEYWX2I95M6CdUPiCUT SxY1qZXNOwZ6A/E9yJ+/Po0b+46XSyr42 hFLAh4ik1TrumPH2BxQhYJ Psw0Es1jynq0w eT+4Zkz0ht4kfKTIhkos7kaKB1P/BM qDY1T+9sfiXV0/QP2oORBgnyEM2fchPJMGIjMuStlCcoewbQpkS5kLCulR huZLMqa6XSiWDpyiTX6T7+rufuG4 JzbuXIJpkjD uxCHhw4hDKcQ VcYOD HTzAo0WtW+veGk2jKetrZxtmYD19AlkqjdY=</latexit> <latexit sha1_base64="wmU8E1cA4jstcm2 1QNSh70es60=">A B3nicdVC7TgJBFL2L 8QXamkzkZhQkV0xqJUkNpZoXCEBQmaHWZgw+8jMXQ0h1DYaKo3fo42/4GdY2DuAFvg4yU1Ozjk3c894sRQabfvNSs3NLywupZczK6tr6xvZza0rHSWKcZdFMlI1j2ouRchdFCh5LVacBp7kVa93Ovar1 xpEYWX2I95M6CdUPiCUT SxY1qZXNOwZ6A/E9yJ+/Po0b+46XSyr42 hFLAh4ik1TrumPH2BxQhYJ Psw0Es1jynq0w eT+4Zkz0ht4kfKTIhkos7kaKB1P/BM qDY1T+9sfiXV0/QP2oORBgnyEM2fchPJMGIjMuStlCcoewbQpkS5kLCulR huZLMqa6XSiWDpyiTX6T7+rufuG4 JzbuXIJpkjD uxCHhw4hDKcQ VcYOD HTzAo0WtW+veGk2jKetrZxtmYD19AlkqjdY=</latexit> <latexit sha1_base64="wmU8E1cA4jstcm2 1QNSh70es60=">A B3nicdVC7TgJBFL2L 8QXamkzkZhQkV0xqJUkNpZoXCEBQmaHWZgw+8jMXQ0h1DYaKo3fo42/4GdY2DuAFvg4yU1Ozjk3c894sRQabfvNSs3NLywupZczK6tr6xvZza0rHSWKcZdFMlI1j2ouRchdFCh5LVacBp7kVa93Ovar1 xpEYWX2I95M6CdUPiCUT SxY1qZXNOwZ6A/E9yJ+/Po0b+46XSyr42 hFLAh4ik1TrumPH2BxQhYJ Psw0Es1jynq0w eT+4Zkz0ht4kfKTIhkos7kaKB1P/BM qDY1T+9sfiXV0/QP2oORBgnyEM2fchPJMGIjMuStlCcoewbQpkS5kLCulR huZLMqa6XSiWDpyiTX6T7+rufuG4 JzbuXIJpkjD uxCHhw4hDKcQ VcYOD HTzAo0WtW+veGk2jKetrZxtmYD19AlkqjdY=</latexit> <latexit sha1_base64="wmU8E1cA4jstcm2 1QNSh70es60=">A B3nicdVC7TgJBFL2L 8QXamkzkZhQkV0xqJUkNpZoXCEBQmaHWZgw+8jMXQ0h1DYaKo3fo42/4GdY2DuAFvg4yU1Ozjk3c894sRQabfvNSs3NLywupZczK6tr6xvZza0rHSWKcZdFMlI1j2ouRchdFCh5LVacBp7kVa93Ovar1 xpEYWX2I95M6CdUPiCUT SxY1qZXNOwZ6A/E9yJ+/Po0b+46XSyr42 hFLAh4ik1TrumPH2BxQhYJ Psw0Es1jynq0w eT+4Zkz0ht4kfKTIhkos7kaKB1P/BM qDY1T+9sfiXV0/QP2oORBgnyEM2fchPJMGIjMuStlCcoewbQpkS5kLCulR huZLMqa6XSiWDpyiTX6T7+rufuG4 JzbuXIJpkjD uxCHhw4hDKcQ VcYOD HTzAo0WtW+veGk2jKetrZxtmYD19AlkqjdY=</latexit> <latexit sha1_base64="oQz48/yjCuf3H6Z5cROKYh6eUCg=">A B3nicdVDLSgMxFL1TX7W+qi7dBIvgashYqboruHFZxbGFtpRMm lDMw+SO0opXbtRXCl+kr/g35g+XNTHgcDhnBPuPTdIlTRI6aeTW1peWV3Lrxc2Nre2d4q7e3cmyTQXPk9UohsBM0LJWPgoUYlGqgWLAiXqweBy4tfvhTYyiW9xmIp2xHqxDCVnaKWbB90pljyXTkH+JyWYo9YpfrS6Cc8iESNXzJimR1Nsj5hGyZUYF1qZESnjA9YTo+l+Y3JkpS4JE21fjGSqLuRYZMw CmwyYtg3P72J+JfXzDA8b49knGYoYj4bFGaKYEImZUlXasFRDS1hXEu7IeF9phlHe5KCrU7dcuXUK1Pym3xX90/cC9e7pqVqZX6DPBzAIRyDB2dQhSuogQ8cQniCV3hzmP oPDsvs2jOmf/ZhwU4718tcIkZ</latexit>wr
<latexit sha1_base64="5lgCNYoEvSuUCW v76le0GQx+h0=">A B3nicdVDLTgJBEOzF +IL9ehlIjHxtNkVg3qSxItHNK6QAMHZYRYmzD4y06sh LMXDSeN3+PJX/Az/AMH0AM+KumkUlWd6Ro/kUKj47xbmbn5hcWl7HJuZXVtfSO/uXWt41Qx7rFYxqrmU82liLiHAiWvJYrT0Je86vfOxn71list4ugK+wlvhrQTiUAwika6vFOtfMG1nQnI/6Rw+vE6ugGASiv/1mjHLA15hExSreu k2BzQBUKJvkw10g1Tyjr0Q4fTO4bkj0jtUkQKzMRkok6k6Oh1v3QN8mQYlf/9MbiX149xeC4ORBRkiKP2PShIJUEYzIuS9pCcYaybwhlSpgLCetSR maL8mZ6o5dLB26RYf8Jt/VvQP7xHYvnEK5BFNkYQd2YR9cOI ynEMFPGAQwAM8wbNFrXvr0RpNoxnra2cbZmC9fALyLIv6</latexit> <latexit sha1_base64="wmU8E1cA4jstcm2 1QNSh70es60=">A B3nicdVC7TgJBFL2L 8QXamkzkZhQkV0xqJUkNpZoXCEBQmaHWZgw+8jMXQ0h1DYaKo3fo42/4GdY2DuAFvg4yU1Ozjk3c894sRQabfvNSs3NLywupZczK6tr6xvZza0rHSWKcZdFMlI1j2ouRchdFCh5LVacBp7kVa93Ovar1 xpEYWX2I95M6CdUPiCUT SxY1qZXNOwZ6A/E9yJ+/Po0b+46XSyr42 hFLAh4ik1TrumPH2BxQhYJ Psw0Es1jynq0w eT+4Zkz0ht4kfKTIhkos7kaKB1P/BM qDY1T+9sfiXV0/QP2oORBgnyEM2fchPJMGIjMuStlCcoewbQpkS5kLCulR huZLMqa6XSiWDpyiTX6T7+rufuG4 JzbuXIJpkjD uxCHhw4hDKcQ VcYOD HTzAo0WtW+veGk2jKetrZxtmYD19AlkqjdY=</latexit> <latexit sha1_base64="wmU8E1cA4jstcm2 1QNSh70es60=">A B3nicdVC7TgJBFL2L 8QXamkzkZhQkV0xqJUkNpZoXCEBQmaHWZgw+8jMXQ0h1DYaKo3fo42/4GdY2DuAFvg4yU1Ozjk3c894sRQabfvNSs3NLywupZczK6tr6xvZza0rHSWKcZdFMlI1j2ouRchdFCh5LVacBp7kVa93Ovar1 xpEYWX2I95M6CdUPiCUT SxY1qZXNOwZ6A/E9yJ+/Po0b+46XSyr42 hFLAh4ik1TrumPH2BxQhYJ Psw0Es1jynq0w eT+4Zkz0ht4kfKTIhkos7kaKB1P/BM qDY1T+9sfiXV0/QP2oORBgnyEM2fchPJMGIjMuStlCcoewbQpkS5kLCulR huZLMqa6XSiWDpyiTX6T7+rufuG4 JzbuXIJpkjD uxCHhw4hDKcQ VcYOD HTzAo0WtW+veGk2jKetrZxtmYD19AlkqjdY=</latexit> <latexit sha1_base64="wmU8E1cA4jstcm2 1QNSh70es60=">A B3nicdVC7TgJBFL2L 8QXamkzkZhQkV0xqJUkNpZoXCEBQmaHWZgw+8jMXQ0h1DYaKo3fo42/4GdY2DuAFvg4yU1Ozjk3c894sRQabfvNSs3NLywupZczK6tr6xvZza0rHSWKcZdFMlI1j2ouRchdFCh5LVacBp7kVa93Ovar1 xpEYWX2I95M6CdUPiCUT SxY1qZXNOwZ6A/E9yJ+/Po0b+46XSyr42 hFLAh4ik1TrumPH2BxQhYJ Psw0Es1jynq0w eT+4Zkz0ht4kfKTIhkos7kaKB1P/BM qDY1T+9sfiXV0/QP2oORBgnyEM2fchPJMGIjMuStlCcoewbQpkS5kLCulR huZLMqa6XSiWDpyiTX6T7+rufuG4 JzbuXIJpkjD uxCHhw4hDKcQ VcYOD HTzAo0WtW+veGk2jKetrZxtmYD19AlkqjdY=</latexit> <latexit sha1_base64="wmU8E1cA4jstcm2 1QNSh70es60=">A B3nicdVC7TgJBFL2L 8QXamkzkZhQkV0xqJUkNpZoXCEBQmaHWZgw+8jMXQ0h1DYaKo3fo42/4GdY2DuAFvg4yU1Ozjk3c894sRQabfvNSs3NLywupZczK6tr6xvZza0rHSWKcZdFMlI1j2ouRchdFCh5LVacBp7kVa93Ovar1 xpEYWX2I95M6CdUPiCUT SxY1qZXNOwZ6A/E9yJ+/Po0b+46XSyr42 hFLAh4ik1TrumPH2BxQhYJ Psw0Es1jynq0w eT+4Zkz0ht4kfKTIhkos7kaKB1P/BM qDY1T+9sfiXV0/QP2oORBgnyEM2fchPJMGIjMuStlCcoewbQpkS5kLCulR huZLMqa6XSiWDpyiTX6T7+rufuG4 JzbuXIJpkjD uxCHhw4hDKcQ VcYOD HTzAo0WtW+veGk2jKetrZxtmYD19AlkqjdY=</latexit> <latexit sha1_base64="oQz48/yjCuf3H6Z5cROKYh6eUCg=">A B3nicdVDLSgMxFL1TX7W+qi7dBIvgashYqboruHFZxbGFtpRMm lDMw+SO0opXbtRXCl+kr/g35g+XNTHgcDhnBPuPTdIlTRI6aeTW1peWV3Lrxc2Nre2d4q7e3cmyTQXPk9UohsBM0LJWPgoUYlGqgWLAiXqweBy4tfvhTYyiW9xmIp2xHqxDCVnaKWbB90pljyXTkH+JyWYo9YpfrS6Cc8iESNXzJimR1Nsj5hGyZUYF1qZESnjA9YTo+l+Y3JkpS4JE21fjGSqLuRYZMw CmwyYtg3P72J+JfXzDA8b49knGYoYj4bFGaKYEImZUlXasFRDS1hXEu7IeF9phlHe5KCrU7dcuXUK1Pym3xX90/cC9e7pqVqZX6DPBzAIRyDB2dQhSuogQ8cQniCV3hzmP oPDsvs2jOmf/ZhwU4718tcIkZ</latexit>s
<latexit sha1_base64="WoQu8beNs9O+s6/rb3O/5y4h/lY=">A B3XicdVDLTgJBEOzF +IL9ehlIjHxtNkVg3qSxItHSFwhAQKzQy9MmH1kZtaE K5eNHrR+D+e/AU/wz9wAD3go5JOKlXVma7xE8GVdpx3K7OwuLS8kl3Nra1vbG7lt3euVZxKh 6LRSzrPlUoeISe5lpgPZFIQ19gzR9cTPzaDUrF4+hKDxNshbQX8YAzqo1UVe18wbWdKcj/pHD+8frYAYBKO/ W7MYsDTHSTFClGq6T6NaISs2ZwHGumSpMKBvQHo6m543JgZG6JIilmUiTqTqXo6FSw9A3yZDqv rpTcS/vEaqg9PWiEdJqjFis4eCVBAdk0lX0uUSmRZDQyiT3FxIWJ9KyrT5kZyp7tjF0rFbdMhv8l3dO7LPbLfqFMolmCELe7APh+DC ZThEirgAQOEO3iCZ6tj3Vr31sMsmrG+dnZhDtbLJx8Wi3o=</latexit> <latexit sha1_base64="p3L8L4+zcvVyUZH/FKE5E7jri7s=">A B3XicdVC7TgJBFL2L 8QXamkzkZhQbXbFoFaS2FhC4goJEJwdLjBh9pGZWRNCaG0 2mj8H238BT/Dwt4BtMDHSW5ycs65mXvGjwVX2nHerNTc/MLiUno5s7K6tr6R3dy6UFEiGXosEpGs+VSh4CF6m uBtVgiDXyBVb9/OvarVygVj8JzPYixGdBuyDucUW2kimplc67tTED+J7mT9+f7Rv7jpdzKvjbaEUsCD UTVKm6 8S6OaRScyZwlGk CmPK+rSLw8l5I7JnpDbpRNJMqMlEncnRQKlB4JtkQHVP/fTG4l9ePdGdo+aQh3GiMWT hzqJIDoi46 kzSUyLQaGUCa5uZCwHpWUafMjGVPdsQvFA7fgkN/ku7q3bx/b sXJlYowR p2YBfy4MIhlOAMyuABA4QbeIBH69K6tm6tu2k0ZX3tbM rKdPhgWNVg= </latexit> <latexit sha1_base64="p3L8L4+zcvVyUZH/FKE5E7jri7s=">A B3XicdVC7TgJBFL2L 8QXamkzkZhQbXbFoFaS2FhC4goJEJwdLjBh9pGZWRNCaG0 2mj8H238BT/Dwt4BtMDHSW5ycs65mXvGjwVX2nHerNTc/MLiUno5s7K6tr6R3dy6UFEiGXosEpGs+VSh4CF6m uBtVgiDXyBVb9/OvarVygVj8JzPYixGdBuyDucUW2kimplc67tTED+J7mT9+f7Rv7jpdzKvjbaEUsCD UTVKm6 8S6OaRScyZwlGk CmPK+rSLw8l5I7JnpDbpRNJMqMlEncnRQKlB4JtkQHVP/fTG4l9ePdGdo+aQh3GiMWT hzqJIDoi46 kzSUyLQaGUCa5uZCwHpWUafMjGVPdsQvFA7fgkN/ku7q3bx/b sXJlYowR p2YBfy4MIhlOAMyuABA4QbeIBH69K6tm6tu2k0ZX3tbM rKdPhgWNVg= </latexit> <latexit sha1_base64="p3L8L4+zcvVyUZH/FKE5E7jri7s=">A B3XicdVC7TgJBFL2L 8QXamkzkZhQbXbFoFaS2FhC4goJEJwdLjBh9pGZWRNCaG0 2mj8H238BT/Dwt4BtMDHSW5ycs65mXvGjwVX2nHerNTc/MLiUno5s7K6tr6R3dy6UFEiGXosEpGs+VSh4CF6m uBtVgiDXyBVb9/OvarVygVj8JzPYixGdBuyDucUW2kimplc67tTED+J7mT9+f7Rv7jpdzKvjbaEUsCD UTVKm6 8S6OaRScyZwlGk CmPK+rSLw8l5I7JnpDbpRNJMqMlEncnRQKlB4JtkQHVP/fTG4l9ePdGdo+aQh3GiMWT hzqJIDoi46 kzSUyLQaGUCa5uZCwHpWUafMjGVPdsQvFA7fgkN/ku7q3bx/b sXJlYowR p2YBfy4MIhlOAMyuABA4QbeIBH69K6tm6tu2k0ZX3tbM rKdPhgWNVg= </latexit> <latexit sha1_base64="p3L8L4+zcvVyUZH/FKE5E7jri7s=">A B3XicdVC7TgJBFL2L 8QXamkzkZhQbXbFoFaS2FhC4goJEJwdLjBh9pGZWRNCaG0 2mj8H238BT/Dwt4BtMDHSW5ycs65mXvGjwVX2nHerNTc/MLiUno5s7K6tr6R3dy6UFEiGXosEpGs+VSh4CF6m uBtVgiDXyBVb9/OvarVygVj8JzPYixGdBuyDucUW2kimplc67tTED+J7mT9+f7Rv7jpdzKvjbaEUsCD UTVKm6 8S6OaRScyZwlGk CmPK+rSLw8l5I7JnpDbpRNJMqMlEncnRQKlB4JtkQHVP/fTG4l9ePdGdo+aQh3GiMWT hzqJIDoi46 kzSUyLQaGUCa5uZCwHpWUafMjGVPdsQvFA7fgkN/ku7q3bx/b sXJlYowR p2YBfy4MIhlOAMyuABA4QbeIBH69K6tm6tu2k0ZX3tbM rKdPhgWNVg= </latexit> <latexit sha1_base64="3HkhEnNDHb92/BXAbRnIAIrc89M=">A B3XicdVDLSgMxFL2pr1pfVZdugkVwNcxYqboruH ZgmMLbamZN OGZh4kd4RSunWjuFL8JX/BvzF9uKiPA4HDOSfce26QKmnQdT9JbmV1bX0jv1nY2t7Z3SvuH9yZJN c+DxRiW4GzAglY+GjRCWaqRYsCpRoBMPrqd94ENrIJL7FUSo6EevHMpScoZXqpls eY47A/2flGCBWrf40e4lPItEjFwxY1qem2JnzDRKrsSk0M6MSBkfsr4Yz9ab0BMr9WiYaPtipDN1Kc iY0ZRYJMRw4H56U3Fv7xWhuFlZyzjNEMR8/mgMFMUEzrtSntSC45qZAnjWtoNKR8wzTjaixRsd cpV869skt/k+/q/plz5Xh1t1StLG6QhyM4hlPw4AKqcAM18IGDgCd4hTdyTx7JM3mZR3Nk8ecQlkDevwBaS4iZ</latexit>wr wr wr
ww ww rw s s s
snapshot isolation holds if there exists execution e such that for all T in T
COMPLETE ∃s ∈ Se. ∧
e,T (s)
snapshot isolation holds if there exists execution e such that for all T in T
COMPLETE ∃s ∈ Se. ∧
e,T (s)
∆(s, sp) WT ∩ = ∅ ∧( )
Read-Uncommitted
dirty reads: one transaction may see uncommitted state of another transaction
Read-Committed
no dirty reads or writes, but allows for non-repeatable reads
Repeatable Reads
non-repeatable range reads
It-That-Shall-Not-Be-Named
dirty writes - transaction modifies item previously modified by undecided transaction
Snapshot Isolation
none of the above, but write skew
Basically Available, Soft state, Eventually consistent
Transaction Guarantees
BASE Storage (e.g. put, get)
Implement Consistency
Storage Interface
Basically Available, Soft state, Eventually consistent
ACID Storage Application
Custom code for better performance Complexity gets quickly out of control
Database Programmer
Ease
Programming Performance
Help!
Transfer c ≥ $10? c := c-$10 s := s+$10 Transfer c ≥ $10? c := c-$10 s := s+$10
Transfer
Part1 c ≥ $10? c := c-$10 Part2 s := s+$10
Transfer
Part1 c≥$10? c := c-$10 Part2 s := s+$10
Time
Read c Read s Balance Transfer c ≥ $10? c := c-$10 s := s+$10
Transfer
Read c Read s Balance Part1 c ≥ $10? c := c-$10 Part2 s := s+$10
Finer Isolation for one transaction may affect all transactions!
Better Performance More Interleavings Greater Complexity
Vilfredo Pareto
not run frequently
are lightweight
20% of the causes account for 80% of the effects
Better Performance More Interleavings Greater Complexity
More Interleavings selectively
More Interleavings selectively
Acid txn alkaline txn alkaline txn
BASE transaction
alkaline txn alkaline txn
Different Isolation guarantees for different types of transactions
Atomicity Durability
To ACID transactions: a single, monolithic ACID transaction To BASE transactions: a sequence of small ACID transactions
Fine Isolation granularity between BASE transactions
BASE 1 BASE 2 BASE BASE
ACID
Coarse Isolation granularity to ACID transactions
How does the performance of Salt compare to ACID? How much programming effort is required to get that performance?
Latency (ms) 200 150 100 5 250 Fusion Ticket 1000 2000 3000 4000 5000 6000 7000 8000 Throughput (transactions/sec) ACID Salt
6.5x
Latency (ms) 2000 1500 1000 500 0 0 2000 4000 6000 8000 10000 12000 Throughput (transactions/sec) ACID Salt TPC-C
6.6X
Configuration
Running on MYSQL Cluster
PROGRAMMING EFFORT VS PERFORMANCE
Fusion Ticket Throughput (transactions/sec) 10000 8000 6000 4000 2000 Number of BASE-ified transactions
ACID 1 2 Raw ops
… …
3 6.5x 7.2x
TPC-C Throughput (transactions/sec)
10000 8000 6000 4000 2000
Number of BASE-ified transactions
1 2 3 4 ACID BASE 12000
Programming BASE transactions is still hard!
ACID
I
ACID
I
ACID
I
ACID
I
ACID
ACID
I
ACID
I
ACID
I
ACID
I
ACID
I
ACID
I
ACID
I
ACID
I
ACID
I
ACID
I
ACID
I
ACID
I
ACID
I
ACID
I
ACID
I
ACID
I
ACID
I
ACID
I
ACID
I
ACID
I
ACID
I
ACID
Uniform Abstraction Ease of Programming Uniformity Ease of Programming Conservative Mechanism Uniform Implementation
MODULAR CONCURRENCY CONTROL
Cross-Group CC Implementation ACID Abstraction
Txn Txn Txn Txn Txn Txn
Insight 1: Decouple Abstraction and Implementation
Specialized in-group CC
MODULAR CONCURRENCY CONTROL
Cross-Group CC Implementation ACID Abstraction
Txn Txn Txn Txn Txn Txn
Insight 2: Separation of Concerns Limited Scope Aggressive Optimizations
Specialized in-group CC
Goal: No dependency cycles over all transactions
Never conflict for transactions in the same group Always conflict for transactions in different groups
(unless both reading)
Minimal interference with group-specific CC
Txn 1
W(A)
W(C) Txn 2
W(A)
W(B) Txn 3 W(B) W(C)
T1 T3 T2 Group 1 Group 2
A A B
Time
B C C
Txn 1
W(A)
W(C) Txn 2
W(A)
W(B)
T1 T3 T2
Txn 3 W(B) W(C)
Time
ties depends on to completes before C1 C2 C3
A A B B C C
Txn 1
W(A)
W(C) Txn 2
W(A)
W(B) Txn 3 W(B) W(C)
T1 T3 T2 Group 1 Group 2
A A B
Time
B C C
depends on T2 T1 T2 T1 completes cannot start before
Nexus Lock Release Order
release its nexus locks releases its nexus locks
Txn 1
W(A)
W(C) Txn 3 W(B) W(C)
T1 T3 T2
Time
C1
A C
Txn 2
W(A)
W(B)
A B B C
Increase in-group concurrency while maintaining safety
Txn 1 R(A) W(A) W(B) Txn 2 W(A) W(C) Txn1-1 R(A) W(A) Txn 2-2 W(B) Txn 2-1 W(A) Txn 2-2 W(C)
Static Analysis
Shasha et al. ’95
Txn 1 R(A) W(A) W(B) Txn 2 W(A) W(C)
Shasha et al. ’95
R(A) W(A) W(B) W(A) W(C)
s s s
c c
Shasha et al. ’95
No SC cycle among all transactions
R(A) W(A) W(B)
s
c
W(A) W(C)
s
+MCC: within each group
Shasha et al. ’95
Txn 1
W(A) W(B) W(C)
Txn 1’
W(A) W(B) W(C)
c c c
W(A) W(B) W(C)
s s
W(A) W(B) W(C)
s s
W(A) W(B) W(C) W(A) W(B) W(C)
c
c c c
W(A) W(B) W(C)
s s
W(A) W(B) W(C)
s s
W(A) W(B) W(C) W(A) W(B) W(C)
c c c
W(A) W(B) W(C)
s s
W(A) W(B) W(C)
s s
W(A) W(B) W(C) W(A) W(B) W(C)
Accurate Detection
W(C) R(B) R(D) W(A)
T1 T2
R(A) R(B) W(B) W(C) W(C) R(B) R(D) W(A)
T1 T2
R(A) R(B) W(B) W(C) dep
tx
txn
txn txn txn txn txn tx tx tx tx
txn txn txn txn
Default Group Group 1 Group 2
This talk…
End-to-end performance
…but of course there’s more
What are the relative merits
What is the overhead
What is the effect of using different groupings?
CALLAS PERFORMANCE
Throughput (transactions/sec)
20000 16000 12000 8000 4000
TPC-C Fusion Ticket 3
MySQL Cluster TC TC+MCC Callas Salt Salt Callas TC+MCC MySQL Cluster TC
BENEFIT OVER ACID BASELINE
Throughput (transactions/sec)
20000 16000 12000 8000 4000
TPC-C Fusion Ticket 3
MySQL Cluster TC TC+MCC Callas Salt Salt Callas TC+MCC TC MySQL Cluster
TRANSACTION CHOPPING
Throughput (transactions/sec)
20000 16000 12000 8000 4000
TPC-C Fusion Ticket 3
MySQL Cluster TC TC+MCC Callas Salt Salt Callas TC+MCC TC MySQL Cluster
TRANSACTION CHOPPING + MCC
Throughput (transactions/sec)
20000 16000 12000 8000 4000
TPC-C Fusion Ticket 3
MySQL Cluster TC TC+MCC Callas Salt Salt Callas TC+MCC TC MySQL Cluster
CALLAS: MCC + RUNTIME PIPELINING
Throughput (transactions/sec)
20000 16000 12000 8000 4000
TPC-C Fusion Ticket 3
MySQL Cluster TC TC+MCC Callas Salt Salt Callas TC+MCC TC MySQL Cluster
WITHIN 5% OF SALT
Throughput (transactions/sec)
20000 16000 12000 8000 4000
TPC-C Fusion Ticket 3
MySQL Cluster SC Cycle SC+Grouping Callas Salt Salt Callas SC+Grouping SC Cycle MySQL Cluster
Cross-Group CC
Implementation
ACID Abstraction
txn tx tx tx tx tx