0Pricing
SQL Academy · 강의

다운타임 없는 열 이름 변경

새 열 추가, 이중 쓰기, 기존 데이터 채우기, 읽기 전환, 기존 열 삭제라는 표준 다운타임 없는 이름 변경 패턴을 배워보세요.

다운타임 없는 열 이름 변경은(는) CoddyKit의 무료 SQL Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 SQL Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

단순한 접근 방식의 문제

ALTER TABLE t RENAME COLUMN a TO b;는 메타데이터만 변경하므로 빠릅니다. BUT 애플리케이션은 열 "a"를 사용하므로 이름을 변경하면 "a"를 읽는 모든 쿼리가 중단됩니다.

전개 → 마이그레이션 → 축소 전략

널리 사용되는 중단 시간 없는 패턴은 다음과 같습니다.

  1. 전개 — 기존 열을 삭제하지 않고 새 열을 추가합니다.
  2. 한동안 애플리케이션이 두 열 모두에 쓰도록 합니다.
  3. 마이그레이션 — 과거 데이터를 새 열에 일괄 입력합니다.
  4. 읽기를 새 열로 전환합니다.
  5. 축소 — 기존 열을 삭제합니다.

단계별 예시: user_name → full_name 이름 변경

자세한 과정은 다음과 같습니다.

1단계 — 새 열 추가

온라인 방식입니다(PG 11 이상에서 상수 기본값을 사용하면 메타데이터만 변경됩니다).

ALTER TABLE users ADD COLUMN full_name VARCHAR(100);

2단계 — 이중 쓰기

두 열 모두에 쓰도록 코드를 배포합니다.

// App writes to both:
UPDATE users SET user_name = $1, full_name = $1 WHERE id = $2;
INSERT INTO users (..., user_name, full_name) VALUES (..., $name, $name);

3단계 — 기존 데이터 입력

과거 데이터를 여러 묶음으로 나누어 복사합니다.

UPDATE users SET full_name = user_name
WHERE full_name IS NULL
  AND id IN (
    SELECT id FROM users WHERE full_name IS NULL LIMIT 10000
  );
-- Run in a loop until 0 rows affected.

4단계 — NOT NULL 추가(온라인)

기존 데이터 입력이 끝난 후 안전하게 NOT NULL을 적용합니다.

ALTER TABLE users
  ADD CONSTRAINT fn_not_null CHECK (full_name IS NOT NULL) NOT VALID;
ALTER TABLE users VALIDATE CONSTRAINT fn_not_null;
ALTER TABLE users ALTER COLUMN full_name SET NOT NULL;
ALTER TABLE users DROP CONSTRAINT fn_not_null;

5단계 — 읽기 전환

user_name 대신 full_name을 읽도록 코드를 배포합니다.

6단계 — 이중 쓰기 중단

full_name에만 쓰도록 코드를 배포합니다.

7단계 — 기존 열 삭제

온라인 방식입니다(메타데이터만 변경).

ALTER TABLE users DROP COLUMN user_name;

절충점: 시간과 복잡성

단순한 이름 변경이 며칠 또는 몇 주에 걸친 4~7회의 배포로 바뀝니다. 사소하지 않은 운영 시스템에서는 이것이 유일하게 안전한 방법입니다.

테이블 이름 변경

비슷한 패턴이지만 더 어렵습니다. 임시 별칭으로 VIEW를 사용하십시오.

ALTER TABLE old_name RENAME TO new_name;
CREATE VIEW old_name AS SELECT * FROM new_name;
-- Deploy new code. Then drop the view.

요약

중단 시간 없는 열 이름 변경은 전개 → 마이그레이션 → 축소 순서로 진행합니다.

  • 새 열 추가
  • 이중 쓰기
  • 여러 묶음으로 기존 데이터 입력
  • 읽기 전환
  • 기존 열에 대한 쓰기 중단
  • 기존 열 삭제

빠른 확인

기존 열과 새 열 모두에 쓰도록 배포한 직후에 진행하는 단계는 무엇입니까?

자주 묻는 질문

“다운타임 없는 열 이름 변경” 강의는 무료인가요?

네 — “다운타임 없는 열 이름 변경” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 SQL Academy 강의 전체를 잠금 해제할 수 있습니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“다운타임 없는 열 이름 변경”에서 뭘 배우나요?

새 열 추가, 이중 쓰기, 기존 데이터 채우기, 읽기 전환, 기존 열 삭제라는 표준 다운타임 없는 이름 변경 패턴을 배워보세요. 브라우저에서 직접 실행하는 실습 코드로 SQL Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

SQL Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 SQL Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“다운타임 없는 열 이름 변경” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 SQL Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 SQL Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 온라인 마이그레이션: ALTER TABLE이 잠금을 사용하는 이유
  2. 동시 인덱스 생성(CREATE INDEX CONCURRENTLY)
  3. 다운타임 없는 열 이름 변경
  4. 도구: Flyway, Liquibase, Sqitch
← SQL Academy(으)로 돌아가기