1. 쿼리튜닝 어디서 시작할까?
-> explain analyze
- 갑자기 time이 점프하는 지점에 주목하라
2. 인덱스
- 클러스터링 인덱스 : 물리적으로 모여있다
- primary key = 클러스터링 인덱스
- secondary index : primary키를 가리킨다
따라서 secondary 인덱스로 search하면 일단 secondary 인덱스 접근해서 -> primary key를 찾고 -> 실제 데이터의 물리적인 위치로 간다
3. 클러스터링 인덱스는- 물리적으로 모여있기 때문에. 어떤 키를 primary key로 하는가가 중요하다
- auto-increment로 primary key 잡으면. 그냥 넣는 순서대로 sequential하게 들어가므로 insert할때 비용이 적게 든다
- 만약에 uuid같은 값을 primary key로 잡으면. 넣을때마다 데이터 순서의 조정이 필요하고. 페이지사이즈(MySQL의 경우, 16kb) 안에 넣기 위한 물리적인 조정이 계속필요하게 됨
- 데이터 분산이 일어나고, random I/O를 높여 read할때에도 성능이 떨어지게 된다.
4. secondary index왜 필요한가?
- examined되는 쿼리 양을 줄이기 위하여
- sort비용을 줄이기 위하여
- find max/min비용을 줄이기 위하여등등.
댓글 없음:
댓글 쓰기