본문 바로가기
반응형

NOT NULL2

PostgreSQL 11 에서의 add column not null & default 성능 개선 Aurora MySQL 5.7까지만 써본 경험에서 Online DDL 은 여전히 부담스럽다. 그럼에도 대량의 데이터가 쌓인 테이블에 DDL을 수행하는 것은 서비스를 운영하다보면 피할 수 없다. 100GB 이상의 테이블에 Online DDL로 컬럼을 추가해도 1시간이 넘도록 수행되던 경험을 해보면 가능한 기존 테이블에 컬럼을 추가하는 등의 DDL 작업은 피하고 싶어진다. 다만, MySQL과 다르게 PostgreSQL에서는 오래 전부터 일부 ALTER 작업에 대해서는 잠금 없는 변경이 가능하다. 이는 MySQL에서는 테이블 구조를 변경할때 전체 테이블의 데이터를 새로운 구조로 복사하는 방식을 취해서 테이블의 크기가 큰 경우 오래 걸리는 것과 다르게 PostgreSQL에서는 테이블 구조 변경 작업시 meta .. 2023. 8. 1.
Number와 boolean 은 최대한 Not Null로 선언하기 테이블 설계시 종종 받는 질문 중 하나가 Boolean과 Number 컬럼의 Not Null 유무이다. 비즈니스적으로 기본값이 있는 경우가 아니면 유연하게 하기 위해 nullable 로 선언하는 경우를 자주 본다. 테이블의 Boolean과 Number 타입 컬럼을 nullable 로 설정하면 여러 문제가 발생할 수 있어서 가급적 추천하지 않는다. 대표적으로 다음과 같은 문제가 있다. 1. 혼란스러운 의미 컬럼을 nullable 로 설정하면 기본값이 null 이 되므로, 데이터의 의미가 굉장히 혼란스럽게 된다. 예를 들어, boolean 컬럼이면 값이 true, false, null 세 가지 상태가 될 수 있다. 이는 '참', '거짓', '미확인' 의 세 가지 상태가 된다는 것이다. (일부 상황에서는 유용.. 2023. 6. 2.

728x90
반응형