primary key 2

[MySQL] 온라인 DDL

온라인 DDL이란? DDL(Data Definition Language)은 데이터를 정의하는 언어로, 데이터베이스의 구조를 변경하는 쿼리를 의미한다. 테이블을 생성하거나 변경하는 등의 쿼리가 이에 해당한다. 온라인 DDL은 테이블의 스키마를 변경하는 작업이 실행되는 중에도 다른 커넥션에서 해당 테이블의 데이터를 조회하거나 변경하는 작업을 가능하게 한다. MySQL 8.0 버전부터는 대부분의 스키마 변경 작업에 대해 MySQL 서버에 내장된 온라인 DDL 기능을 이용하는 것이 가능해졌다. 온라인 DDL 알고리즘 ALGORITHM과 LOCK 옵션을 이용해 어떤 알고리즘으로 스키마를 변경할 지 결정할 수 있다. MySQL 서버는 다음 순서로 스키마 변경에 적합한 알고리즘을 찾는다. ALGORITHM=INSTA..

[MySQL] 프라이머리 키가 일반 인덱스보다 특별한 이유 - InnoDB 클러스터링 인덱스

프라이머리 키(PK)는 테이블에 하나밖에 없는 값이다. 오늘은 프라이머리 키가 왜 특별한지, 다른 키(인덱스)와의 차이는 무엇인지 알아보자. 참고로 이 글에서는 키(key)와 인덱스(index)를 같은 의미로 사용한다. InnoDB 클러스터링 인덱스 프라이머리 키의 중요성을 알기 위해서는 프라이머리 키가 클러스터링 인덱스라는 것부터 시작해야한다. 클러스터링 인덱스란 프라이머리 키 값이 비슷한 레코드끼리 묶어서 저장하는 것을 의미한다. 프라이머리 키 값에 의해 레코드의 물리적인 저장 위치가 결정되는 것이다. MySQL에서 클러스터링 인덱스는 InnoDB 스토리지 엔진에서만 지원한다. 프라이머리 키를 기준으로 데이터가 물리적으로 정렬되어 있기 때문에 프라이머리 키 기반의 검색이 매우 빠른 장점이 있다. 대신..