Skip to content
Your SSD lies but that's ok | Postgres fsync episode artwork

May 25, 2023 30 min

Your SSD lies but that's ok | Postgres fsync

from The Backend Engineering Show with Hussein Nasser Hosted by Hussein Nasser

fsync is a linux system call that flushes all pages and metadata for a given file to the disk. It is indeed an expensive operation but required for durability especially for database systems. Regular writes that make it to the disk controller are often placed in the SSD local cache to accumulate more writes before getting flushed to the NAND cells. However when the disk controller receives this flush command it is required to immediately persist all of the data to the NAND cells. Some SSDs however don't do that because they don't trust the host and no-op the fsync. In this video I explain this in details and go through details on how postgres provide so many options to fine tune fsync 0:00 Intro 1:00 A Write doesn’t write 2:00 File System Page Cache 6:00 Fsync 7:30 SSD Cache 9:20 SSD ignores the flush 9:30 15 Year old Firefox fsync bug 12:30 What happens if SSD loses power 15:00 What options does Postgres exposes? 15:30 open_sync (O_SYNC) 16:15 open_datasync (O_DSYNC) 17:10 O_DIRECT 19:00 fsync 20:50 fdatasync 21:13 fsync = off 23:30 Don’t make your API simple 26:00 Database on metal?

Episode details come from the podcast's RSS feed.

Embed this episode

Ready to play

Your SSD lies but that's ok | Postgres fsync

0:00 30:04

No transcript yet.

Requests help us decide what to transcribe next.

Frequently asked questions

How long is this episode of The Backend Engineering Show with Hussein Nasser?

This episode is 30 minutes long.

When was this The Backend Engineering Show with Hussein Nasser episode published?

This episode was published on May 25, 2023.

Can I download this The Backend Engineering Show with Hussein Nasser episode?

Yes. Use the download control on the episode player to save the publisher-provided media file.