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 없이 가능. |
덧,
- 사실 이 글을 보면 pg의 단점만 썼는데.
- pg가 tuple 방식의 디자인을 선택한건 tradeoff.
- 장점도 많다.
- 그래도 conn 당 process 를 생성하는건 어떤 장점이 있는지 아직 이해가 안 됨.
- 내가 모르는 이유가 있을지 모르지만.
- 어떤 기술을 비판하는 일은, 무지가 원인인 경우가 많아 조심.