[MySQL] MySQL 성능 개선의 핵심, 인덱스 이해하기
·
DB/SQL
인덱스란?특정 컬럼을 기준으로 데이터를 빠르게 조회하기 위해 사용하는 자료구조이다. 일반적으로 인덱스는 B-Tree 구조로 구성되어있어 이진 탐색 방식을 활용하여 데이터를 검색하는 방식이다.인덱스를 생성하면 원본 테이블을 기준으로 새롭게 정렬된 노드 형태를 띄게되며, 자신이 정한 특정 컬럼값들만 저장하고, 그 값이 있는 row를 가리키는 포인터를 가지게 된다. CREATE INDEX idx_salary ON employee(salary);위와 같은 인덱스를 생성할 경우 아래와 같은 B-Tree 구조를 띄게 된다.salary를 기준으로 정렬된 인덱스 테이블이 생기게 되는 것이아니라 노드 구조를 생성한다는 것이다.각 노드에는 salary 값만 들어있게 되고 각 leaf 노드에는 실제 row의 주소 또는 실제..
[MySQL] DB 병목현상 왜 일어나는지, 해결하기 위한 가장 기본적인 방법은 무엇인지에 대해
·
DB/SQL
DB 병목현상 발생 원인동시 사용자의 증가로 인해 수 많은 요청에 대해 처리해야한다거나, 혹은 요청에 의한 응답으로 나가는 데이터 양의 증가, 비효율적인 SQL 발생 등이 원인이 될 수 있다. 이러한 병목은 단순히 애플리케이션 속도 저하로 끝나지 않고, 전체 서비스의 안정성과 사용자 경험에 치명적인 영향을 줄 수 있다. DB 성능 개선을 위한 접근 방식DB 성능을 개선하기 위해서는 다양한 방식들이 존재한다. - SQL 튜닝- 캐시 서버 활용(Redis)- Master/Slave 구조- 샤딩 (수평 분산)- 하드웨어 업그레이드 문제의 상황마다 다르겠지만 이중에서 가장 먼저 만져줘야 하는 부분은 SQL 튜닝 부분이다. 적절한 인덱스를 생성하므로써 성능을 향상 시켜주는 것이 첫번째로 이뤄줘야 하고, 그 후 해..
cheolhyeon
'DB/SQL' 카테고리의 글 목록