Skip to content
Lynn LeeMYSQL / LEARNING LAB

LEARNING ROUTE / VERIFIED 2026-11-14

Read. Predict. Run. Explain.

Two university courses, six original exercises, one real InnoDB engine. Start with the invariant, then connect general DBMS principles to measured MySQL behavior.

The selected Spring 2026 courses and PDFs were checked on November 14, 2026. We link to the originals and do not redistribute their content or publish university assignment answers. These are current offerings of long-established DBMS ideas, not claims that transactions or MVCC were invented in 2026.

Download searchable resource catalog JSON · Unauthenticated link checks & hashes

Search also works offline: python scripts/curriculum.py MVCC. Your query stays in this page.

Carnegie Mellon University

15-445/645 · Intro to Database Systems

Spring 2026 · verified 2026-11-14

Prerequisites:Official syllabus: CMU 15-213/513; C++17 programming. Lab adaptation: SQL, Python, transactions and basic indexes; no BusTub implementation required.

Public reading:Schedule, selected linked lecture notes were readable without login. Textbook chapter references are reading pointers, not a claim that the complete textbook is freely licensed. No course content is redistributed here.

Enrollment / costs:Public reading does not provide CMU registration, credit, staff support or Gradescope access. Institutional enrollment and its costs are separate; no fee or free-credit claim is made.

Course · Syllabus · Schedule / readings

Massachusetts Institute of Technology

6.5830/6.5831 (formerly 6.814/6.830) · Database Systems

Spring 2026 · verified 2026-11-14

Prerequisites:Spring 2026 syllabus expects 6.1210 (formerly 6.006) or equivalent algorithms, computer systems familiarity (e.g. 6.1800/formerly 6.033), and software debugging ability. Prior databases are not required; course labs use Go.

Public reading:Syllabus, schedule, assigned-reading pages and selected lecture PDFs were readable without login. Recordings and third-party readings may have separate access conditions and are not promised here.

Enrollment / costs:MIT registration, graded submissions, staff support and credit are separate from public reading; enrollment may be limited. University lab/problem-set solutions must not be made public. This companion implements none of those assignments.

Course · Syllabus · Schedule / readings

U1 / State the invariant before choosing isolation

Predict:Enumerate both serial withdrawal orders. Can (0,0) occur if each request leaves at least one doctor?

python -c 'from scripts.invariant_oracle import serial_outcomes; print(serial_outcomes())'
python lab.py oncall --output .local/u1/oncall.json

Inspect / explain:Compare independently enumerated terminal states (0,1)/(1,0) with observer-read final_rows and oracle in every measured case.

The oracle models two fixed doctors and two requests, not arbitrary SQL serializability. This is an original Lab exercise, not a CMU/MIT assignment.

U2 / Separate a wait from a deadlock

Predict:Which second UPDATE creates the cycle? Must the same-order control also wait?

python lab.py run --output .local/u2/run.json
python scripts/validate.py .local/u2/run.json

Inspect / explain:Real data_lock_waits edge, matching waiting/granted locks, 1213 victim and final values; ordered control commits twice.

The detector resolves a complete cycle immediately. The before-cycle snapshot alone does not prove the entire cycle; use the deadlock excerpt too.

U3 / Predict snapshot and current reads

Predict:Under RR, does FOR UPDATE refresh the next plain SELECT? Predict all four reads before running.

python lab.py run --output .local/u3/run.json
python scripts/validate.py .local/u3/run.json

Inspect / explain:RC 100/200/200/200 and RR 100/100/200/100; the following writer has a measured lock wait.

General MVCC concepts explain multiple versions; InnoDB statement behavior must be checked separately. RR is not a synonym for serializable.

U4 / Repair write skew and test a flawed repair

Predict:If both sessions establish a snapshot before taking the same guard row with FOR UPDATE, will serialization of the guard fix RR? What changes under RC?

python lab.py oncall --output .local/u4/oncall.json
cp sql/oncall.json .local/u4/sql.json
python lab.py oncall --sql-file .local/u4/sql.json --output .local/u4/edited.json

Inspect / explain:Both commit in all cases. Compare unguarded, late_guard and guard_first with independent final state, read barriers and real B→A guard wait.

Every writer must follow the guard protocol; guard-first RR requires no earlier consistent read. No claim about arbitrary pre-existing transactions, inserts, deletes or throughput.

U5 / Lock the data used for a decision

Predict:Why can a locking roster read see one remaining doctor even after waiting? Is a row-local AND on_call=1 condition enough to protect a cross-row count?

python lab.py oncall --output .local/u5/oncall.json
python scripts/validate_oncall.py .local/u5/oncall.json

Inspect / explain:The follower's completed locking read returns one row; only one withdrawal occurs. The unguarded conditional updates still remove both doctors.

Fixed membership and a single shift only. Observed lock modes are recorded, not prescribed; this is not a phantom/range-insert proof. Guard rows serialize cooperating writers at the cost of contention.

U6 / Use an index without changing the answer

Predict:Which predicates narrow an index scan? Why compare result hashes only for matching projections?

python lab.py run --output .local/u6/run.json
python scripts/validate.py .local/u6/run.json

Inspect / explain:Complete returned rows, equal hashes within each pair, JSON plans and actual iterator rows. Seven fetch samples describe one warm-buffer run.

A plan estimate is not an actual row count, and an index is not guaranteed faster. No randomized crossover, cold-cache or production-capacity conclusion.

2026 publication status

CMU Fall 2026 is real and its schedule was updated November 11. The November 16 MVCC lecture is still future-dated at this check and has no linked notes/slides. We use the completed Spring edition. Later publication is unknown here. Official Fall schedule

Do the business-invariant exercise →