남기다
홈 › 스키마 설계

스키마 설계

테이블 설계, 정규화, 마이그레이션에서 배운 것

이 카테고리의 글 4편

InnoDB 기본키 UUIDv4가 느려지는 이유와 UUIDv7·BIGINT 비교

무작위 UUIDv4 기본키가 InnoDB 클러스터드 인덱스에 페이지 분할과 버퍼 풀 낭비를 일으키는 과정을 따라가고, UUIDv7·BIGINT와 같은 조건에서 삽입 속도와 인덱스 크기를 재 본 기록입니다.

스키마 설계 ·

MySQL 온라인 DDL, INSTANT부터 gh-ost까지 고르는 법

MySQL 8.0에서 INSTANT 컬럼 추가가 되는 조건과 막히는 조건, INPLACE ALTER가 메타데이터 락에 걸려 서비스를 세우는 이유, gh-ost와 pt-online-schema-change를 꺼내는 기준을 마이그레이션 경험으로 정리했다.

스키마 설계 ·

대용량 테이블에 NOT NULL·외래 키를 무중단으로 추가하는 순서

PostgreSQL에서 CHECK NOT VALID, VALIDATE CONSTRAINT, SET NOT NULL을 차례로 써서 큰 테이블에 NOT NULL과 외래 키를 거는 절차입니다. 단계마다 잡는 잠금 수준과 lock_timeout 설정, 실제로 겪은 실수를 함께 적었습니다.

스키마 설계 ·

PostgreSQL ALTER TABLE, 다시 쓰는 DDL과 안 쓰는 DDL

PostgreSQL 11부터 ADD COLUMN DEFAULT가 순식간에 끝나는 원리와, int를 bigint로 바꾸는 것처럼 여전히 테이블 전체를 다시 쓰는 타입 변경을 구분합니다. 수천만 건 테이블에서 파일 번호와 잠금을 직접 확인하는 방법도 담았습니다.

스키마 설계 ·