Videos

MySQL vs PostgreSQL - Who Wins? | Systems Design Interview 0 to 1 with Ex-Google SWE - 8 mins

https://www.youtube.com/watch?v=n2Fluyr3lbc&ab_channel=Fireship

Reading

https://www.hellointerview.com/learn/system-design/deep-dives/postgres

Audio

NotebookLM Podcast on PostgreSQL Basics

NotebookLM Podcast on Intermediate PostgreSQL

Topics I Dug Into

Concurrency

→ Video I made on the topic:

https://youtu.be/oNCEXY83yuQ?si=xEI1ck3VKEbyEXyF

Computational Intensity Problem(s) What you’re solving Isolation Level Why it works Tradeoffs
Highest Banking Transfers
Inventory Reservation Your business would be adversely affected by this transaction if it goes wrong Serializable Uses Serializable Snapshot Isolation to detect possible anomalies The application needs to handle serialization failures (the error SSI throws)
Mid Financial calculations, order processing The task you are trying to accomplish is necessary enough to protect from most concurrency issues, but not so crucial that you can’t tolerate occasional errors. Repeatable Read Uses a single snapshot for the entire transaction Protect from some (but not all) phantom reads.
Best protection from concurrency issues given the overhead
Lowest Solves most problems, particularly UI / read-heavy problems.

This is the default isolation level in Postgres. | Best tradeoff in terms of balancing performance and concurrency | Read *Committed (also Read Uncommitted in Postgres)

**This is the default setting | It uses a new snapshot for each statement, so transactions can only see committed changes. | Risks Phantom Reads and non-repeatable reads (might get different data from different snapshots). Protects from Dirty Reads. |

bit.ly/minda-sd