제 8절 데이터에 따른 성능

연쇄코딩마·2022년 10월 5일
0

개요

  • 대량의 데이터가 하나의 테이블에 집약 되어 있을때, 하나의 하드웨어 공간에 있으면 성능저하를 피하기 쉽지 않다. 처리하는 일의 양이 한군데 몰리는 현상은 어떤 업무에 있어서 중요한 업무에 해당되는 데이터가 특정 테이블에 있는 경우에 발생이 되는데 이런 경우 트랜잭션이 분산 처리 될수 있도록 테이블 단위에서 분할의 방법을 적용할 필요가 있다는 것이다.

사례

  • 하나의 테이블에 대량의 데이터가 존재하는 경우 : 인덱스의 트리 구조가 너무 커져 효울성이 떨어져 데이터를 처리(입력, 수정, 삭제, 조회)할 때 디스크 I/O를 많이 유발하게 된다. 또한, 인덱스를 생성 할 때 인덱스의 크기가 커지게 되고 그렇게 되면 인덱스를 찾아 가는 단계가 깊어서져서 조회 성능이 저하된다. 조회시에 인덱스의 크기가 다른 트랜잭션에 비해 성능 저하가 작지만 입력, 수정, 삭제하는 트랜잭션의 경우 인덱스의 특성상 성능 저하를 유발할수 있다.

  • 하나의 데이블에 많은 수의 칼럼이 존재 : 데이터가 여러블록에 존재하므로 인해 디스크에서 데이를 읽는 I/O 량이 많아 지게 되어 성능이 저하 된다. 또한, 물리적인 디스크에 여러 블록에 데이터가 저정되게 된다. 따라서 데이터를 처리할 때 여러 블록에서 데이터를 I/O 해야 된다는 단점이 있다.

  • 로우 길이가 너무 긴 경우 : 로우 체이닝과 로우 마이그레이션이 발생하여 많은 블록에 데이터가 저장되면, 데이터 베이스 메모리에서 디스크와 입출력이 발생 할때 불필요하게 입출력이 많이 발생한다.

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

예시

하나의 데이블에 많은 수의 칼럼이 존재

이때 어느 칼럼에 대해 집중적으로 발생하는지 분석하여 테이블을 쪼개어 주면 디스크 인풋아웃풋이 감소하게 된다.

도서정보 테이블에서는 전자출판유형에 대한 트랜잭션이 독립적으로 발생이 되는 경우가 많고 대체제품에 대한 유형의 트랜잭션이 독립적으로 발생되는 경우가 만이 있어 1:1 관계로 분리하였다. 분리된 테이블은 디스크에 적어진 칼럼이 저장이 되므로 로우마이그레이션과 로우체이닝이 많이 줄어들 수 있다. 따라서 성능이 개선될 수 있다.
많은 수의 칼럼을 가지는 테이블은 실전에서도 많이 보게 되는데 이 때, 트랜잭션을 분석하여 적절하게 1:1 관계로 분리함으로써 성능향상이 가능하도록 해야한다.

해결책

테이블에 많은 양의 데이터가 예상될 경우 파티셔닝을 적용하거나 PK에 의해 테이블을 분할하는 방법을 적용할 수 있다

위에 경우는 요금이라는 테이블을 파티션닝한 경우이다. 이 기법은 range partition 이고 가장 많이 사용되는 파티셔닝 기능이다. 대상 테이블을 날짜 또는 숫자값으로 분리가 가능하고 각 영역별로 트랜잭션이 분리 된다면 가능하다. 또한 데이터 보관주기에 따라 쉽게 지우는게 가능하다.

위에 경우는 사업소 코드별로 list partition를 적용한 사례이다. 이는 대용량 데이터를 특정값에 따라 분리하여 저장할 수 있으나 range partition 과 같이 삭제가 용이하진 않다.

  • HASH PARTITION 적용 : 기타 HASH PARTITION은 지정된 HASH 조건에 따라 해슁 알고리즘이 적용되어 테이블이 분리되며 설계자는 테이블에 데이터가 정확하게 어떻게 들어갔는지 알 수 없다. 이 기능 역시 데이터 보관주기에따라 쉽게 삭제하는 기능은 제공될 수 없다. 

테이블에 대한 수평분할 / 수직분할의 절차

  • 데이터 모델링을 완성
  • 데이터베이스 용량산정
  • 대량 데이터가 처리되는 테이블에 대해 트랜잭션 처리 패턴을 분석
  • 칼럼단위, 로우 단위로 집중화된 처리가 발생했는지 분석하여 테이블을 분리하는 것을 검토

컬럼수가 많다면 1:1형태로 분리, 컬럼수는 작고 데이터가 많은 경우 파티셔닝 검토

출처: https://eehoeskrap.tistory.com/56 [Enough is not enough:티스토리]

profile
只要功夫深,铁杵磨成针, 하고자 하면 쇠 막대기도 바늘로 만들 수 있다

0개의 댓글

관련 채용 정보