다운타임 없는 열 이름 변경
새 열 추가, 이중 쓰기, 기존 데이터 채우기, 읽기 전환, 기존 열 삭제라는 표준 다운타임 없는 이름 변경 패턴을 배워보세요.
다운타임 없는 열 이름 변경은(는) 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"를 읽는 모든 쿼리가 중단됩니다.
전개 → 마이그레이션 → 축소 전략
널리 사용되는 중단 시간 없는 패턴은 다음과 같습니다.
- 전개 — 기존 열을 삭제하지 않고 새 열을 추가합니다.
- 한동안 애플리케이션이 두 열 모두에 쓰도록 합니다.
- 마이그레이션 — 과거 데이터를 새 열에 일괄 입력합니다.
- 읽기를 새 열로 전환합니다.
- 축소 — 기존 열을 삭제합니다.
단계별 예시: 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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 온라인 마이그레이션: ALTER TABLE이 잠금을 사용하는 이유
- 동시 인덱스 생성(CREATE INDEX CONCURRENTLY)
- 다운타임 없는 열 이름 변경
- 도구: Flyway, Liquibase, Sqitch