[요약집] 데이터베이스 성능
Updated:
데이터베이스 성능
- 시스템 세계에서 성능은 2가지의 지표에 의해 측정된다.
- 처리 시간(processing time) or 응답 시간(response time) : 특정 처리의 시작부터 종료까지 걸린 시간을 나타낸다.
- 처리율(Throughput) : 특정 처리(트랜잭션)를 단위 시간에 몇 건 처리할 수 있는지를 나타내는 나타내는 지표이다.
-
TPS(Transaction Per Second): 초당 처리율
-
버틀넥 포인트(Bottleneck Point) : ‘병목’이라고 하며, 응답 시간이 상승하고 처리율이 떨어지기 시작하는 최초로 한계에 이른 자원을 말한다.
-
사이징(Sizing) or 캐퍼시티 플랜(Capacity Plan) : 처리량의 정점을 상정한 자원을 확보해 두는것을 말한다.
- 예측할 수 없는 집중에 대응할 수 있는 수단으로 ‘클라우드(cloud)’ 가 있다. 클라우드는 다음과 같은 특징이 있다.
- 가상화를 기반으로 자원량을 유연하게 변동
- 스케일 업(Scale Up) : 고성능 장비 도입
- 스케일 아웃(Scale Out) : 장비 추가 도입
- 튜닝 : 애플리이션을 효율화해 같은 양의 자원이라도 성능을 향상하게 하는 기술을 말한다.
- 데이터베이스는 전통적으로 튜닝 기술이 발달했다. –> SQL의 처리 속도
- SQL 내부 프로세스(튜닝 과정)
- 파스(Parse): 파서(Paser)가 SQL문의 문법적인 유효성 체크
- 옵티마이저(Optimizer) : ‘통계 정보(statistics)’를 참조해 ‘실행 계획(execution plan)’을 세워 어떻게 해야 더 빠르게 할지를 결정한다.
- 통계 정보
- 통계 정보에 포함되는 대표적인 데이터로는 아래과와 같은 것이 있다.
- 테이블의(대강의)행수와 열수
- 각 열의 길이와 데이터형
- 테이블의 크기
- 열에 대한 기본키나 NOT NULL 제약의 정보
- 열 값의 분산과 편향
- MySQL 에서는 show table status; 혹은 show index from 테이블명; 같은 명령으로 살펴볼 수 있다.
- 통계 정보에 포함되는 대표적인 데이터로는 아래과와 같은 것이 있다.
- 실행 계획
- 풀스캔 : 특정 열의 모든 행들을 전부 읽음(액세스), ex) SELECT * …
- 레인지 스캔 : 특정 행의 일부 행들만 읽음(액세스), ex) WHERE…
- 인덱스 : ‘색인’으로써 레인지 스캔으로 데이터를 찾을 때 사용
- B-tree : 인덱스의 구조이며 정렬된 상태의 tree이다. 이진 탐색을 사용하여 데이터를 빠르게 찾는다. 데이터의 양에 비례해 효과가 증가한다.
- 인덱스를 만드는 기준
- 크기가 큰 테이블만 만든다
- 작은 테이블은 풀스캔이나 레인지 스캔이나 차이가 없다.
- 기본키 제약이나 유일성 제약이 부여된 열에는 불필요하다.
- 자동으로 인덱스가 작성되기 때문이다.
- Cardinality 가 높은 열에 만든다.
- Cardinality가 낮은 열의 인덱스 트리는 따라가는 조작이 증가할 수록 오버헤드가 증가해 혜택을 받지 못한다.
- Cardinality : 특정 열에 대한 값의 종류
- 크기가 큰 테이블만 만든다
Leave a comment