파티션이란
파티션이란 사용자는 하나의 테이블로 읽고 쓰지만 MySQL 서버 입장에서 데이터를 별도의 테이블로 분리해서 저장을 하는것
파티션은 하나의 서버에서 테이블을 분산하는것이지, 원격 서버로 분산 시키는 건 아니다.
파티션 사용 이유
한 테이블이 너무 커서 인덱스 크기가 메모리보다 훨씬 크거나 데이터 특성상 삭제 작업이 필요한 경우
단일 INSERT 와 SELECT 의 빠른 처리
insert 작업처럼 레코드의 변경이 발생하면 인덱스의 변경을 위한 작업이 발생하게 되고
이때 index 크기가 너무 크다면 부하가 생길 수 있다.
파티션을 사용하면 index 에 크기도 작아지게 되서 성능 향상을 할 수 있다.
데이터의 물리적인 저장소 분리
파티션을 통해 파일의 크기를 조절하거나 각 파티션별 저장될 위치를 지정할 수 있다.
파티션 테이블의 쿼리
INSERT
파티션 키를 이용해서 레코드가 저장될 적절한 파티션을 결정
UPDATE
WHERE 조건에 파티션 키 컬럼 조건이 있다면 그 값으로 파티션에서 빠르게 대상 레코드 검색 가능
파티션 키 컬럼이 명시되지 않았다면 전체 파티션을 검색
SELECT
두가지 조건을 봐야한다
- WHERE 조건에 파티션이 있는지?
- WHERE 조건에 인덱스를 탈 수 있는지?
경우의 수로 보면
- 파티션 선택 가능 + 인덱스 탈 수 있음 : 가장 빠른 처리
- 파티션 불가 + 인덱스 가능 : 파티션 개수만큼 인덱스 레인지 스캔을 해서 결과를 가져온다.
- 파티션 가능 + 인덱스 불가: 각 파티션에 대해 풀 테이블 스캔
- 둘 다 불가: 모든 파티션 풀 테이블 스캔
파티션 테이블 주의 사항
MySQL에서는 테이블을 파일 단위로 관리해서 파티션이 많아지면 파일의 개수가 상당히 많아 질 수 있고
파티션의 개수가 늘어날 수록 성능이 떨어질 수 있다.
'프로그래밍 > 데이터베이스' 카테고리의 다른 글
[Real Mysql] 프로그램 연동 JDBC (0) | 2021.08.03 |
---|---|
[Real mysql] 쿼리 작성 및 최적화 (0) | 2021.08.02 |
[Real Mysql] 실행계획 - 쿼리 동작 방식 (0) | 2021.08.02 |
[Real Mysql] 실행 계획 (0) | 2021.07.30 |
[Real Mysql] 인덱스 (0) | 2021.07.30 |