Uber가 PostgreSQL을 MySQL로 바꾼 이유
https://eng.uber.com/mysql-migration/ 글을 읽었습니다. Postgres의 단점을 매우 잘 정리한 글입니다. 사실 이 글은 아래 그림 한 장으로 요약할 수 있습니다.

읽고 난 뒤 정리한 메모를 최대한 짧게 줄이면 다음과 같습니다.
| 항목 | PostgreSQL | MySQL (InnoDB) |
|---|---|---|
| secondary index | directly | indirectly |
| secondary key lookup | 유리 | 불리 (index 2개를 찾아야 하니) |
| row update 시 | 모든 index 업데이트 | 해당 row의 index만 업데이트 |
| replication | WAL을 보냄 | commands를 보냄 |
| MVCC | row를 항상 씀 | 변경전 row를 rollback segment에 복사. |
| cache | OS의 page cache | buffer pool |
| connection | conn 당 process 생성 | conn 당 thread 생성 |
| upgrade | downtime 필요. | downtime 없이 가능. |
덧붙이는 말입니다.
이 글에는 Postgres의 단점만 적혀 있습니다. 그러나 Postgres가 tuple 방식의 디자인을 선택한 것은 일종의 tradeoff이고, 장점도 많습니다. 다만 커넥션마다 프로세스를 새로 만드는 방식이 어떤 장점이 있는지는 아직 잘 모르겠습니다. 제가 모르는 이유가 있을 텐데, 어떤 기술을 비판하는 일은 결국 무지에서 비롯되는 경우가 많아 조심하려고 합니다.