SQLite and Postgres both rely on fsync() plus write ordering to guarantee that a committed transaction survives a power loss, and both batch writes into a single fsync (group commit) because one fsync on spinning disk can cost 5-20 milliseconds. Skipping the barrier between two dependent writes is exactly how the classic 'transfer $100, crash mid-way, money disappears' bug happens in real financial software.