Search
Duplicate
📒

아키텍쳐 & 대규모 시스템 설계] 05-2. 데이터베이스의 가용성, 확장성, 성능 개선기술

상태
완료
수업
아키텍쳐 & 대규모 시스템 설계
주제
CS
연관 노트
3 more properties
참고

데이터베이스 성능개선

NOTE
데이터베이스의 성능을 개선하는 방식에는 다양한 종류가 있지만 핵심 요소만 알아보자!
다양한 경우에 따른 DB 최적화고민 (왤케 많음?)
고민을 계속해서 어떻게 최적화할지 결정함. (사실 뭔소린지 모르겠다)

인덱싱

NOTE
테이블에 대한 검색속도를 높여주는 자료구조이다!
LosAngeles를 검색할때 1,3 행만 조회를 한다.
특정 테이블의 컬럼을 인덱싱(Indexing)하면 검색을 할 때 레코드를 전부 다 확인하는 것이 아니라, 인덱싱 되어있는 자료구조를 통해서 검색한다.
검색 속도(Read)는 빨라지지만 삽입(Insert), 삭제(Delete), 갱신(Update)이 느려진다.
인덱스 자료구조
해시 테이블(Hash Table)
B-Tree
B-Tree를 통한 검색속도 증가

데이터베이스 복제

NOTE
2개 이상의 DBMS 시스템을 Master/Slave 로 나눠서 동일한 데이터를 저장하는 방식이다.
Master - Insert, Update, Delete Slave - Read(Select)
Master에는 데이터의 수정사항을 반영하고, Replication을 하여 Slave에 실제 데이터를 복사한다.
장점
Query대부분은 보통 Read(Select)가 차지하므로, 부하를 낮추기 위해 Slave를 생성하게 된다면 성능효과를 얻을 수 있다.
비동기 방식으로 지연시간이 거의 없다.
단점
노드들 간의 데이터 동기화가 보장되지 않아 일관성 있는 데이터를 얻지 못할 수 있다.
Master Node 다운 시 복구 및 대처가 까다롭다.

데이터베이스 파티셔닝/샤딩

NOTE
데이터베이스를 분할하는 방법은 크게 샤딩(shading)파티셔닝(partitioning)이 있다!
파티셔닝 - 하나의 DB에서 분리 tield - 여러 DB로 분리
파티셔닝(Partitioning)
MySQL의 파티셔닝 종류
매우 큰 테이블을 여러개의 테이블로 분리하는 작업
테이블을 나눠 저장하기 떄문에 쿼리 성능이 개선될 수 있다.
물리적으로 여러 테이블로 분산하여 저장되지만, 하나의 테이블에 접근하는것과 같이 사용할 수 있다!
MySQL의 경우 파티셔닝을 지원하는 스토리지 엔진이 InnoDB와 NDB이다.
샤딩(Sharding)
동일한 스키마를 가지고 있는 여러대의 데이터베이스 서버들에 데이터를 작은 단위로 나누어 분산 저장하는 기법이다.
파티셔닝은 동일 컴퓨터에 저장하지만, 샤딩은 다른 컴퓨터에 분산시킴
쿼리 성능 향상과 더불어 부하가 분산되는 효과까지 얻는다. (수평 확장)