Committed means it survived the power cut
Durability promises that once a commit returns, the data survives whatever happens next: a crashed process, a kernel panic, a power cut.
That sounds obvious until you count the volatile layers sitting between your write and an actual flash cell. The row lands in the database's own buffers, then the operating system's page cache, then possibly a cache on the disk controller, and a power cut can vaporise all three.
The write-ahead log
The standard machinery is the write-ahead log. Before acknowledging a commit, the database appends a compact record of the change to a sequential log file and forces it through those caches to real storage. Only then does the commit return.
The table files themselves can be updated lazily, minutes later, because after a crash the database replays the log and rebuilds whatever the log promised. That is also why commits are fast: appending to a log is sequential, and the scattered writes into tables are deferred. The same idea powers message logs and most filesystems.
Durability is a dial with a price. Forcing data to disk costs you real time, roughly one to a few milliseconds, and it caps how many commits one of your connections can make.
So databases sell relaxations. Several will flush once a second instead of once per commit, and each option buys throughput by agreeing to lose up to a second of acknowledged writes in a crash. For your analytics counter that is fine. For your ledger it never is.
One machine's disk is still one machine. Serious systems extend the promise with synchronous replication, where a commit returns only once a second server also holds the log record. That turns surviving a crash into surviving the loss of the whole box, and costs a network round trip on every commit.
Worked example
Omar runs Postgres for a small invoicing SaaS on a single cloud VM. Chasing benchmark numbers, he sets synchronous_commit = off and enjoys a 4x jump in write throughput. Two months later the VM's host has a power event at 09:41. Postgres restarts cleanly and replays its WAL, but the last 600 ms of acknowledged commits were never fsynced: 3 invoices that customers saw confirmed on screen do not exist anymore. One customer, a plumbing company, calls asking why invoice 4417 vanished. Omar restores the setting, accepts that commits now cost 2 ms, and adds a streaming replica with synchronous_standby so a lone VM dying can no longer eat acknowledged data. The benchmark number got worse and the product got honest.