Meme's IT

[SQLD] 대용량 데이터에 따른 성능 본문

공부/SQLD

[SQLD] 대용량 데이터에 따른 성능

Memez 2023. 10. 22. 23:58

데이터가 많아지면..

블록(= 테이블의 데이터 저장 단뒤)의 I/O(입출력) 횟수가 증가하고

그에 따라 디스크 I/O 성능 저하가 일어난다.

이 때 일어나는 두가지 현상

1. 로우 체이닝(Row Chaining): 행 길이가 너무 길어서 여러 블록에 걸쳐 저장되는 현상

2. 로우 마이그레이션(Row Migration): 수정된 데이터가 해당 블록이 아닌 다른 블록의 빈 공간에 저장되는 현상

그래서 이런현상을 방지하기 위해 트랜잭션을 분석해서 적절하게 1:1관계로 분리해서 관리

 

# 테이블 분할

반정규화 기법 중 하나

  • 수직 분할: 칼럼단위
  • 수평 분할: 행단위 / 파티셔닝

 

# 파티셔닝(Partitioning)

PK에 의해 테이블을 분할하는 방법

논리적으로는 한개의 테이블 / 물리적으로는 여러 데이터 파일에 분산 저장 → 데이터 조회 범위를 줄임 → 성능향상

  • Range Partition: 날짜 또는 숫자값같이 분리가 가능할 때 (ex.요금-0401)
  • List Partition: 지점, 사업소 등 핵심적인 코드값으로 PK가 구성되어 있을 때 (ex. 고객-서울)
  • Hash Partition: 해시함수를 적용해서 분할, DBMS가 알아서 분할 함, 우리는 데이터 위치를 알 수 없음
  • Composite Partition: 위의 기법을 복합적으로 사용해서 분할
더보기

파티션 인덱스

  • Global Index / Local Index: 여러 파티션에서 단일 인덱스 사용 / 파티션별로 각자 인덱스 사용
  • Prefixed Index / Non- Prefixed Index: 파티션키와 인덱스키 동일 / 구분

 

'공부 > SQLD' 카테고리의 다른 글

[SQLD] 분산 DB 데이터에 따른 성능  (0) 2023.10.26
[SQLD] DB의 구조와 성능  (0) 2023.10.23
[SQLD]★반정규화★  (0) 2023.10.22
[SQLD] ★정규화★와 성능  (0) 2023.10.18
[SQLD] 성능 데이터 모델링  (0) 2023.10.18