좋은 질문입니다.
R2DBC 기반 시스템에서 PostgreSQL을 주로 사용하는 이유는 단순한 호불호가 아니라, 기술적인 안정성과 지원 수준에서 차이가 있기 때문입니다.
| 항목 | PostgreSQL (postgresql-r2dbc) | MySQL (mariadb-r2dbc or mysql-r2dbc) |
|---|---|---|
| 공식 지원 | ✅ Spring 공식 지원 | ⚠️ MariaDB는 커뮤니티 드라이버 수준 |
| 성능 | ✅ R2DBC 최적화 잘됨 | ❌ 일부 기능 제한, 성능 이슈 있음 |
| 드라이버 안정성 | ✅ io.r2dbc:r2dbc-postgresql 매우 안정 | ⚠️ r2dbc-mysql, r2dbc-mariadb는 불안정 사례 있음 |
| 트랜잭션 지원 | ✅ 트랜잭션, DDL/DML 대응 잘됨 | ⚠️ 오토커밋, 세션 처리 이슈 많음 |
| JSON / Full-text 등 기능 | ✅ JSON, GIN Index, CTE, Window function 등 풍부 | ❌ 일부 기능 미지원 또는 성능 부족 |
| Reactive 커뮤니티 피드백 | ✅ 자료 많음, 이슈 대응 빠름 | ❌ 사용 사례 적음, 에러 처리 어려움 |
TransactionRollbackException: Transaction already closedNullPointerException on connection pool closeJOIN, CTE, RETURNING 같은 쿼리문 동작 안 함Spring 공식 문서
"현재 R2DBC는 PostgreSQL 드라이버가 가장 안정적이며, 상용에서도 우선 추천되는 선택입니다."
— Spring Data R2DBC Docs
WebFlux + R2DBC 기반에서는 PostgreSQL이 기술적 안정성, 기능 지원 면에서 더 적합합니다.
MySQL이나 MariaDB는 가능은 하지만 실무에서 문제가 자주 발생하며,
트러블슈팅 비용이 PostgreSQL보다 훨씬 큽니다.
물론, MySQL을 꼭 써야 한다면 사용 방법도 안내해드릴 수 있습니다.
실제 사용 DB가 MySQL인가요? PostgreSQL로 전환 여지가 있을까요?