• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

대규모의 레코드가 저장된 테이블 컬럼 추가시에는 어떤 방법을 쓰나요?

20.07.03 13:34 작성 조회수 435

3

강의 내용과는 관계가 없는 질문이지만...스키마 자동생성 옵션 사용시 운영에서는 create, create-drop, update 사용하지 않는것이 좋다는 말씀을 듣고 갑자기 궁금해졌습니다

create, create-drop 같은 경우는 테이블 drop 시켰다가 재생성 하는거라 레코드가 싹 다 날아가니 당연히 하면 안되는건 알겠는데

update같은 경우는 기능 적용하려면 어떻게든 컬럼 추가가 필수인데 외부에서 직접 ALTER TABLE 실행하더라도 똑같이 테이블 lock이 걸리지 않을까 생각합니다

저희 회사같은 경우는 레코드가 많아봤자 몇만건이라 길어봐야 몇초 내로 끝나기에 배포시간에 맞춰 ALTER TABLE 직접 실행하곤 합니다 (애초에 SPRING, JPA 사용도 안하는곳이라 이렇게 할 수 밖에 없지만...)

대기업의 경우 레코드가 엄청 많이 들어가있을거 같은데 이런 경우 테이블에 컬럼 추가가 필요하다면 어떻게 처리하시는지 궁금합니다

답변 1

답변을 작성해보세요.

2

안녕하세요. 빡친사람님!

데이터가 수천만 건 넘어가기 시작하면 ALTER TABLE이 점점 어려워집니다. 바로 LOCK이 걸리기 때문이지요. 

사실 컬럼을 추가할 때 락이 걸리는 것은 데이터베이스 마다 다르고, 같은 데이터베이스도 버전 마다 다릅니다. (그래서 DBA가 필요합니다^^;)

그래서 pt online schema change 같은 지원 도구도 존재합니다.

각각 데이터베이스 특성에 따라서 다르기 때문에 그때그때 상황에 맞추어 대응해야 합니다.

(보통 큰 기업은 DBA 분들이 챙겨줍니다^^)

감사합니다.