If you have any trouble accessing any of these materials, please post a note on Piazza and we'll help.
- Slides: all animations, limited animations
- Outline
- Recording
- Supplemental Reading: Textbook §9.4 before §9.4.1, §9.5
- Explain why actually running schedules serially (not in parallel) has poor performance.
- Given a schedule of transactions, determine the final written state of any variables, as well as the results of any intermediate reads.
- Given multiple transactions, determine the conflicts among them.
- Given a schedule, determine the order of the conflicts
- Given a schedule, draw its conflict graph, and determine whether the schedule is conflict-serializable
- Given a schedule, apply locks according to 2PL (both the initial version and with reader-/writer- locks)
- Given a schedule that uses locks, determine whether it adheres to 2PL (both the initial version and with reader-/writer- locks)
- Given a schedule that uses 2PL but deadlocks, resolve the deadlock
- Explain why adding reader-/writer-locks improve the performance of 2PL