인프런 커뮤니티 질문&답변

devin adkins님의 프로필 이미지

작성한 질문수

자바 ORM 표준 JPA 프로그래밍 - 기본편

실전 예제 1 - 요구사항 분석과 기본 매핑

운영서버에 index 설정하는 방법

24.06.06 11:12 작성

·

126

0

섹션 4 : 실전 예제 1 - 요구사항 분석과 기본 매핑

위 강의 19:30 부분에서

실무에서는 @Table 에 index 를 모두 명시하는 것이 바람직하다고 말씀하셨는데,

@Table 에 명시한 index 가 실제 DB 에 적용되려면, ddl-auto=update 이어야 하지 않나요?

그런데, 운영 서버에는 ddl-auto=update 를 사용하지 말라고 하셨는데, 그렇다면 운영중인 서버에 index 를 넣을 때는 어떤 방법으로 하는지 궁금합니다.

MySQL 클라이언트로 접속해서 직접 매뉴얼로 index 설정하는지요?

만약 그럴 경우, Entity 클래스의 설정과 실제 DB 의 설정이 따로 놀게 되는데, 괜찮은 건지 궁금합니다.

답변 1

0

인프런 AI 인턴님의 프로필 이미지

2024. 06. 06. 11:16

안녕하세요, 인프런 AI 인턴입니다.

devin adkins님의 질문에 대하여, 실제 사용 환경에서 index를 적용하는 방법에 대해 궁금해하시는 부분이 있으신 것 같습니다.

운영 서버에서 ddl-auto=update 옵션을 사용하는 것은 권장되지 않습니다. 이유는 ddl-auto=update 옵션을 사용할 경우, JPA가 관리하는 엔티티 구조 변경 시 자동으로 데이터베이스 스키마를 수정하는데, 이는 예기치 못한 데이터 손실이나 다운타임을 초래할 수 있기 때문입니다.

운영 환경에서 인덱스를 추가하는 안전한 방법은 다음과 같습니다:

  1. 개발 환경에서 변경 테스트: 개발 또는 테스트 환경에서 먼저 엔티티 변경을 포함한 모든 변경 사항을 테스트합니다. 이는 운영 환경으로 변경 사항을 이관하기 전에 문제를 사전에 파악하고 수정할 수 있도록 합니다.

  2. 수동 SQL 작성: 필요한 인덱스 추가 또는 기타 DDL 변경 사항에 대한 SQL을 수동으로 작성합니다. 이는 자동 생성된 DDL과 비교하여 더 세밀한 제어가 가능하고, 데이터베이스 전문가의 검토를 거칠 수 있는 장점이 있습니다.

  3. 변경 스크립트 관리: 운영서버에 반영할 SQL 스크립트는 버전 관리 시스템에 저장하여 변경 이력을 관리합니다. 이는 언제 어떤 변경사항이 적용되었는지 추적할 수 있게 해줍니다.

  4. 비즈니스 시간 외 배포: 업무에 큰 영향을 주지 않는 시간에 DB 관련 변경 작업을 수행하여 서비스에 미치는 영향을 최소화합니다.

  5. Entity 클래스와 DB 설정 일치: Entity 클래스에 설정된 인덱스 정보를 기반으로 작성된 SQL 스크립트를 적용하므로, Entity 클래스와 실제 데이터베이스의 설정이 일치하도록 유지합니다. 필요한 경우, Entity 클래스도 같이 업데이트하여 동기화시킵니다.

운영 환경에서의 변경 처리에 관한 더 상세한 지침과 모범 사례는 “운영환경에서 DDL 작성“과 “JPA와 DBMS 경계??“에서 찾아볼 수 있습니다. 이 자료들은 운영 환경에 적용해야 하는 중요한 고려사항과 JPA의 DDL 자동 생성 기능과 실제 DBMS의 경계에 대해 설명하고 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.