(MySQL) 파티션과 유니크 키

Min
May 9, 2021

RealMySQL 10장 파티션 정리 2

종류에 관계없이 테이블에 유니크 인덱스(프라이머리 키 포함)가 있으면 파티션 키는 모든 유니크 인덱스의 일부 또는 모든 칼럼을 포함해야 한다.

파티션을 생성할 수 없는 케이스

유니크 키와 파티션 키가 전혀 연관이 없기 때문에 실패
유니크 키 칼럼인 fd1 만으로 레코드가 저장돼 있는 파티션이 결정되지 않기 때문에 실패
fd1 컬럼 값 만으로 레코드가 저장돼 있는 파티션이 결정되지 않기 때문에 실패

유니크 키에 대해 값이 주어지면 해당 레코드가 어느 파티션에 저장돼 있는지 계산할 수 있어야 한다.

파티션 생성 가능 케이스

fd1, fd2, fd3 컬럼 값으로 레코드가 어느 파티션에 있는지 결정할 수 있음
fd1, fd2 컬럼값으로 레코드가 어느 파티션에 있는지 결정할 수 있음
fd1, fd2, fd3 컬럼 값으로 레코드가 어느 파티션에 있는지 결정할 수 있음

파티션 키를 선택해야 할때는

  1. 테이블에서 중복을 허용하지 않는, 프라이커리 키, 유니크 인덱스만 선별
  2. 프라이커리 키와 유니크 인덱스에 공통적으로 포함돼 있는 컬럼만 수집
  3. 2번에서 수집한 컬럼 중에서 일부 또는 전체를 사용할 표현식은 파티션 표현식으로 사용할 수 있다.

open_files_limit 파라미터

MySQL 에서는 일반적으로 테이블을 파일 단위로 관리하기 때문에 MySQL 서버에서 동시에 오픈된 파일의 개수가 상당히 많아질 수 있다. 파티션되지 않은 일반 테이블은 테이블 1개당 오픈된 파일의 개수가 2~3개 수준이지만 파티션 테이블에서는 (파티션의 개수 * 2~3) 개가 된다. 때문에 파티션을 많이 사용하는 경우에는 open_file_limit 시스템 변수를적절히 높은 값으로 설정해 줄 필요가 있다.

--

--