채널톡 아이콘

MySQL만 쓰던 개발자를 위한 PostgreSQL 실전 — MVCC·VACUUM·실행계획·인덱스를 직접 재현하며 배우기

MySQL로 서비스를 만들어 봤다면. 같은 SQL을 MySQL 8.4와 PostgreSQL 17에 나란히 돌려, 테이블이 4배로 커지는 UPDATE·다른 기본 격리 수준·40001 직렬화 오류·갭 락이 없는 잠금·트리로 읽는 실행계획·부분/GIN/BRIN 인덱스까지 40가지 차이를 실행 원문으로 직접 확인합니다.

1명 이 수강하고 있어요.

난이도 중급이상

수강기한 무제한

실행계획
실행계획
인덱스
인덱스
실습 중심
실습 중심
실행계획
실행계획
인덱스
인덱스
실습 중심
실습 중심

수강 후 이런걸 얻을 수 있어요

  • MySQL에서 옮긴 쿼리·DDL 중 PostgreSQL에서 다르게 동작하는 곳(대소문자 비교·번호·UPSERT·형변환·시간대·DDL 트랜잭션)을 점검표로 찾아냅니다.

  • 테이블이 왜 커졌는지 죽은 튜플·autovacuum 기록으로 설명하고, 청소를 막는 긴 트랜잭션을 찾아 끊습니다.

  • 같은 시나리오에서 MySQL과 결과가 갈리는 격리 수준·잠금 동작을 알고, 40001 재시도 코드를 넣을 곳을 정합니다.

  • EXPLAIN (ANALYZE, BUFFERS)를 트리로 읽고 낡은 통계·조인 방식·Index Only Scan 실패 원인을 숫자로 말합니다.

  • 부분·표현식·INCLUDE·GIN·BRIN 인덱스와 파티셔닝 중 맞는 것을 고르고, 운영에서 CONCURRENTLY 로 안전하게 만듭니다.

MySQL에서 당연했던 것이 PostgreSQL에서는 왜 다르게 동작할까요? 같은 SQL을 두 엔진에 나란히 돌려 직접 확인합니다.

MySQL로 서비스를 만들어 봤다면. 같은 SQL을 MySQL 8.4와 PostgreSQL 17에 나란히 돌려, 테이블이 4배로 커지는 UPDATE·다른 기본 격리 수준·40001 직렬화 오류·갭 락이 없는 잠금·트리로 읽는 실행계획·부분/GIN/BRIN 인덱스까지 40가지 차이를 실행 원문으로 직접 확인합니다.

PostgreSQL 강의는 대부분 문법과 기능 소개에서 끝납니다. 이 강의는 MySQL 경험을 출발점으로, 같은 데이터·같은 SQL을 두 엔진에 똑같이 돌려 무엇이 다르게 일어나는지를 매 장면 실행 원문으로 보여 줍니다. 행 버전과 VACUUM, 격리 수준과 잠금, 실행계획, 인덱스처럼 운영에서 장애로 이어지는 엔진 동작이 중심입니다. 대형 커머스 현직 DBA 팀장이 두 엔진을 운영하며 쓰는 점검 순서를 담았습니다.

이 강의를 마치면

  • MySQL에서 옮긴 쿼리·DDL 중 PostgreSQL에서 다르게 동작하는 곳(대소문자 비교·번호·UPSERT·형변환·시간대·DDL 트랜잭션)을 점검표로 찾아냅니다.

  • 테이블이 왜 커졌는지 죽은 튜플·autovacuum 기록으로 설명하고, 청소를 막는 긴 트랜잭션을 찾아 끊습니다.

  • 같은 시나리오에서 MySQL과 결과가 갈리는 격리 수준·잠금 동작을 알고, 40001 재시도 코드를 넣을 곳을 정합니다.

  • EXPLAIN (ANALYZE, BUFFERS)를 트리로 읽고 낡은 통계·조인 방식·Index Only Scan 실패 원인을 숫자로 말합니다.

  • 부분·표현식·INCLUDE·GIN·BRIN 인덱스와 파티셔닝 중 맞는 것을 고르고, 운영에서 CONCURRENTLY 로 안전하게 만듭니다.

이런 분께 추천합니다

  • MySQL(InnoDB)로 서비스를 만들어 봤고 새 프로젝트·이직으로 PostgreSQL을 맡게 된 백엔드 개발자

  • MySQL에서 PostgreSQL로 전환을 검토·진행 중인 팀

  • PostgreSQL 입문 강의를 마치고 엔진 동작을 깊게 알고 싶은 분

커리큘럼 (6섹션 · 40강 · 약 292분)

  • 섹션 1. 같은 SQL, 다른 결과 — 같은 UPDATE, 테이블은 4배, 접속부터 다르다 — 데이터베이스·스키마·역할, 번호와 타입 — AUTO_INCREMENT 대신 IDENTITY, 대소문자와 빈 문자열 — 같은 WHERE, 다른 건수, UPSERT와 형변환 — 옮기면 깨지는 SQL, NULL 정렬과 페이지네이션, 시간대 — DATETIME과 timestamptz

  • 섹션 2. MVCC와 VACUUM — 행이 쌓이는 곳이 다르다 — 행 버전이 사는 곳 — 언두 대신 테이블 안, 죽은 튜플과 테이블 크기, VACUUM과 VACUUM FULL은 다르다, 긴 트랜잭션이 청소를 막는다, autovacuum 기록 읽기, HOT 업데이트와 fillfactor, 인덱스도 부푼다 — REINDEX, 트랜잭션 ID 나이를 감시하라

  • 섹션 3. 트랜잭션과 락 — 같은 격리 수준, 다른 결과 — 기본 격리 수준이 다르다, 같은 REPEATABLE READ, 다른 결말 — 40001, 갭 락이 없다 — 대신 SERIALIZABLE, FOR UPDATE·NOWAIT·SKIP LOCKED, 애플리케이션 락 — advisory lock, DDL도 롤백된다 — 그리고 잠금 대기 줄, 타임아웃 안전장치 세 가지, 데드락 메시지 읽기

  • 섹션 4. 실행계획 — 트리로 읽고 숫자로 증명 — EXPLAIN을 트리로 읽기, EXPLAIN (ANALYZE, BUFFERS), 낡은 통계가 계획을 망친다, 칼럼끼리 얽힌 조건 — 확장 통계, 조인 방식 — Nested Loop·Hash·Merge, 클러스터드 인덱스가 없다 — 힙과 Index Only Scan, COUNT와 깊은 OFFSET의 비용, pg_stat_statements로 느린 쿼리 찾기

  • 섹션 5. 인덱스와 파티션 — MySQL에 없던 선택지 — 부분 인덱스 — 필요한 행만, 표현식 인덱스 — lower(email), 복합 인덱스와 INCLUDE, GIN과 JSONB, BRIN — 시간순 대용량 로그, 선언적 파티셔닝과 파티션 제외, CREATE INDEX CONCURRENTLY

  • 섹션 6. 옮겨 갈 때 — 커넥션 하나가 프로세스 하나, 정리: MySQL에서 PostgreSQL로 옮길 때 점검표

실습 환경

Docker 로 MySQL 8.4 와 PostgreSQL 17 을 한 쌍으로 띄우고, 같은 가상 쇼핑몰 데이터(고객 1만·상품 1천·주문 20만)를 양쪽에 넣습니다. 강마다 ./scenarios/sNN.sh 하나로 강의 화면을 그대로 재현합니다. 강의 화면의 모든 숫자와 오류 메시지, 실행계획은 이 실습을 실제로 실행한 결과입니다.

선수 지식

  • MySQL로 테이블·인덱스·트랜잭션을 다뤄 본 경험

  • SQL 조인

  • Docker 가 설치된 컴퓨터(메모리 4GB 이상 할당 권장)

이 강의에서 다루지 않는 것

  • SQL 기초 문법 처음부터

  • 복제·고가용성·백업·메이저 업그레이드 같은 서버 운영

  • 클라우드 관리형 DB 구성

  • ORM 매핑

안내

슬라이드 내레이션은 합성 음성입니다. 모든 데이터는 교육용 가상 데이터이며, 숫자는 실행 환경에 따라 달라질 수 있습니다.

이런 분들께
추천드려요

학습 대상은
누구일까요?

  • MySQL(InnoDB)로 서비스를 만들어 봤고 새 프로젝트·이직으로 PostgreSQL을 맡게 된 백엔드 개발자

  • MySQL에서 PostgreSQL로 전환을 검토·진행 중인 팀

  • PostgreSQL 입문 강의를 마치고 엔진 동작을 깊게 알고 싶은 분

선수 지식,
필요할까요?

  • MySQL로 테이블·인덱스·트랜잭션을 다뤄 본 경험

  • SQL 조인

  • Docker 가 설치된 컴퓨터(메모리 4GB 이상 할당 권장)

안녕하세요
데이터장인입니다.

커리어인증

20년 이상 데이터베이스와 IT 분야에서 경력을 쌓아온 데이터장인입니다. DBA 및 DB Platform 팀 매니저로 데이터베이스 플랫폼을 다루며, MySQL·PostgreSQL·Oracle·MongoDB와 SQL 튜닝, AWS·Terraform·Python을 전문 분야로 삼고 있습니다. 게임·금융·IT 서비스 분야의 경력을 바탕으로 데이터베이스와 클라우드 아키텍처를 설명합니다. 『오라클 실무튜닝 SQL 패턴 학습』과 『Oracle Pro*C 실무프로젝트 활용서』를 출간했으며, AWS Summit 2018·2019와 데이터야 놀자 2020에서 서버리스·데이터베이스 선택·멀티데이터베이스 전략을 발표했습니다. 최근에는 Bedrock LLM을 이용한 슬로우 쿼리 분석·튜닝 권고, DB 스펙 산정 자동화, DB 메타 MCP 서버와 Slack 봇을 통한 조회 흐름을 다루고 있습니다. 개발자를 위한 데이터베이스 자동화와 비개발자를 위한 AI 업무 활용을 각 과정의 대상과 목적에 맞는 실습으로 설명합니다. AI 제안을 그대로 적용하기보다 결과 동일성·실행 계획·관측 조건을 확인하고, 근거가 부족하면 보류하는 판단 기준을 전달합니다. 회사 운영 데이터와 인증값은 강의 자료에 포함하지 않습니다.

더보기

커리큘럼

전체

40개 ∙ (4시간 52분)

해당 강의에서 제공:

수업자료
강의 게시일: 
마지막 업데이트일: 

수강평

아직 충분한 평가를 받지 못한 강의입니다.
모두에게 도움이 되는 수강평의 주인공이 되어주세요!

데이터장인님의 다른 강의

지식공유자님의 다른 강의를 만나보세요!

비슷한 강의

같은 분야의 다른 강의를 만나보세요!

얼리버드 할인 중

₩44

20%

₩70,400

평생교육이용권 지원 강의