The Life of an UPDATE

Follow a single SQL statement from client to disk — every buffer, log, and flush along the way.

UPDATE orders SET status = 'shipped' WHERE id = 42;
0 / 18
IN-MEMORY ON-DISK ① Client (app) ② Parser SQL → parse tree ③ Optimizer choose index & plan ④ Executor handler API → InnoDB ⑤ Buffer Pool page loaded, row modified in-memory, marked dirty 🔒 X Lock ⑦ Undo Tablespace old row → rollback / MVCC ⑧ Log Buffer redo record written to memory ⑨ Change Buffer secondary idx deferred ⑩ Redo Log (WAL) fsync → crash-safe ⑪ COMMIT ⑫ Doublewrite Buffer torn-page safety net ⑬ Tablespace (.ibd) orders.ibd on disk ⑭ OK → Client async page cleaner
Ready
Click Next Step to follow the UPDATE statement through every layer of InnoDB — from the TCP packet arriving at mysqld all the way to the dirty page being flushed to your .ibd file on disk.
Based on MySQL 9.x InnoDB internals · UPDATE orders SET status='shipped' WHERE id=42