PSA: Most databases do not do checksums by default
This is a follow up to my post: PSA: SQLite does not do checksums
My friend, who claims to be a bigger fan of SQLite than me (debatable), said that my previous blog post was unfair. My fren is right in a way. I wrote about SQLite because that’s what I’m most familiar with and what I use every day. But here’s a follow-up: most databases don’t have checksums enabled by default. As explained earlier, even a single bit flip can be devastating, and your database or application won’t even know about it. Alice would have lost money even on Postgres.
I thought I would make a list of databases which don’t have checksums, but it turns out it’s easier to make a list of databases which enable it by default. Postgres, Microsoft SQL Server, and many others don’t have checksums by default!
So, here’s a short list of databases that do enable checksums by default:
- TigerBeetle
- FoundationDB
- Oracle (I have no idea which version, check the documentation)
- MongoDB
- ClickHouse
- MySQL with InnoDB
Note that the upcoming Postgres 18 will have checksums enabled by default in cluster mode.
Did I miss any? Let me know.
Reading
- TigerBeetle’s safety page is a great read on this topic.
- Redundancy Does Not Imply Fault Tolerance: Analysis of Distributed Storage Reactions to Single Errors and Corruptions - link