[Spring Boot] MySQL Master/Slave 복제 설정과 Read/Write 자동 분기 처리 방법 정리
·
BackEnd/Spring & JPA
1. 시작하며사이드 프로젝트를 운영하면서 현재는 단일 데이터베이스만 사용 중이었습니다. 단순한 개인 프로젝트 수준이라면 큰 무리는 없겠지만, 운영 환경에서 안정성과 확장성을 확보하려면 최소한의 DB 이중화 구조는 반드시 필요하다는 생각이 들었습니다.특히, 현재 운영 중인 프로젝트는 전체 쿼리 중 약 80~90%가 읽기(Read) 작업으로 이루어져 있기 때문에, 읽기/쓰기 분리 구조를 미리 연습해보는 것만으로도 큰 도움이 되겠다는 판단이 들었습니다.물론 단일 DB로도 운영은 가능하지만, 실무에서는 장애 대응, 확장성, 성능 분산 등의 이유로 Master/Slave 구조(Master-Replica)를 도입하는 경우가 많습니다.이에 따라, MySQL Master/Slave Replication 구조를 설정하고..
[성능 개선] 여러 개의 업데이트를 하나의 트랜잭션으로 처리하기 (Feat. Mybatis, Bulk Update)
·
성능 개선
1. 시작하며최근 회사에서 Quartz 스케줄링을 통해 서버 디렉토리에 저장된 파일 상태와 데이터베이스의 기존 데이터를 비교하여 주기적으로 업데이트하는 작업을 개발했습니다.하지만 초기 구현 방식은 트랜잭션이 여러 번 발생하면서 성능 저하가 심각하게 발생했습니다. 이에 Bulk Update를 도입하여 성능을 대폭 개선한 사례를 공유하고자 합니다.회사 해당 프로젝트 코드는 반입이 금지되어 있으니 이 글에서는 여러 게시글 데이터를 한 번에 업데이트하는 방법과 함께 성능 최적화 및 Null 처리 시 주의사항을 설명합니다.2. 기존 방식의 문제점기존 코드는 애플리케이션단 코드에서 개별 데이터를 업데이트하는 쿼리를 반복적으로 실행하면서 트랜잭션이 여러 번 발생하는 문제가 있었습니다.2.1 기존 코드1) 기존 Myb..