반응형
대량 데이터 발생에 따른 테이블 분할 개요

아무리 설계가 잘되어 있는 데이터 모델이라고 하더라도 대량의 데이터가 하나의 테이블에 집약되어 있고

하나의 하드웨어 공간에 저장되어 있으면 성능저하를 피하기 힘들다.

이런 원리는 하나의 고속도로 차선을 넓게 시공하여 건설해도 교통량이 많게 되면 이 넓은 도로가 정체 현상을 보이는 것과
비슷한 원리로 이해할수 있다. 일의 처리되는 양이 한군데에 몰리는 현상은 어떤 업무에 있어서 중요한 업무에 해당되는
데이터가 특정 테이블에 있는 경우에 발생이 되는데 이런 경우

트랜잭션이 분산 처리 될 수 있도록 테이블 단위에서 분할의 방법을 적용할 필요가 있는 것이다.

칼럼이 많아지게 되면 물리적인 디스크에 여러 블록에 데이터가 저장되게 된다.

 

프로젝트를 수행할 때, 때로는 하나의 테이블에 300개 이상의 칼럼을 가지고 있는 경우가 있다.

컴퓨터 화면 하나에는 볼 수가 없어서 스크롤을 하면서 하나의 테이블에 있는 칼럼을 구경해야 할 정도이다.

이렇게 많은 칼럼은 Row Chaining과 Row Migration이 많아지게 되어 성능이 저하된다.

 

  • Row-Chaining :
    Row(행) 길이가 너무 길어서 데이터 블록 하나에 데이터가 모두 저장되지 않고
    두개 이상의 블록에 걸쳐 하나의 로우가 저장되어 있는 형태
  • Row-Migration :
    데이터 블록에서 수정이 발생하면 수정된 데이터를 해당 데이터 블록에서 저장하지 못하고
    다른 블록의 빈 공간을 찾아 저장하는 방식

로우체이닝과 로우마이그레이션이 발생하여 많은 블록에 데이터가 저장되면
데이터베이스 메모리에서 디스크와 I/O(입출력)가 발생할 때 불필요하게 입출력이 많이 발생하여 성능이 저하된다.

로우체이닝이 발생할 정도로 한 테이블에 많은 칼럼들이 존재할 경우 조회 성능저하가 발생할 수 있다.
트랜잭션이 접근하는 칼럼유형을 분석하여 1:1로 테이블을 분리하면 디스크 I/O가 줄어들어 조회 성능을
향상 시킬 수 있다.

 

데이터 액세스 성능을 향상시키기 위해 적용하는 방법
하나의 테이블에 많은 양의 데이터가 저장되면 인덱스를 추가하고 테이블을 몇 개로 쪼개도 성능이 저하되는 경우가 있다. 이때 논리적으로는 하나의 테이블이지만 물리적으로는 여러 개의 테이블로 분리하여 데이터 액세스 성능도 향상시키고, 데이터 관리방법도 개선할 수 있도록 테이블에 적용하는 기법을 파티셔닝 이라고 한다.

 

# Reference:

 

대량 데이터에 따른 성능

1. 대량 데이터발생에 따른 테이블 분할 개요 아무리 설계가 잘되어 있는 데이터 모델이라고 하더라도 대량의 데이터가 하나의 테이블에 집약되어 있고 하나의 하드웨어 공간에 저장되어 있으

dataonair.or.kr

 

반응형

'Language > RDBMS' 카테고리의 다른 글

분산 데이터베이스의 성능  (0) 2023.03.07
데이터베이스 구조와 성능  (0) 2023.03.07
반정규화와 성능  (0) 2023.03.07
정규화와 성능  (0) 2023.03.07
성능 데이터 모델링  (0) 2023.03.07

+ Recent posts