■선행되야할것
아래 내용을 완전히 마스터하여 이제는
어떠한 복잡도의 요구사항, 필요 엔티티와 릴레이션의
개수가 상관없어질 정도
■공부해야할것
- 물리적 조인
- 인덱스란 무엇인지
- 선택도와 카디널리티
- 인덱스 아키텍처 (B-Tree와 RDB에서 인덱스의 아키텍처)
- 실행계획과 실행계획내 연산자들
- 패턴별 발생연산자와 해결 솔루션
- 인덱스 통계
- 데이터 스큐와 파라미터 스니핑
- 카디널리티 추정
- 옵티마이저
- 쿼리 플랜 생성 프로세스
- 데이터베이스의 메모리 관리
- Physical io, Logical io
- 서버, 데이터베이스, 세션, 쿼리 구문별 옵션들과 힌트
- 아마 더있을텐데 생각안남
- 나중에생각난것들 ↓
- Sarg와 Non-Sarg개념
■체득해야할것
(기반지식)
- 현재 서비스의 스키마를 꿰고 어떠한 비즈니스를 가질때때 성능이 최대로 나오는지 이해
- 기본키 속성의 도메인별 데이터 분포 이해
- 스키마와 데이터상태를 꿰고 머릿속에서 실행계획을 컴파일하여 io를 예측할 수 있는 수준
(인덱스통계류 문제 해결)
-비즈니스로직에 대한 완전한 이해로 인덱스 통계 변질유발 로직, 데이터 스큐에 의한 파라미터 스니핑 문제 식별능력 등등
(쿼리 성능 문제 해결)
- 비즈니스 로직이 가지는 조건이 테이블에서 대상이 되는 레코드 비율과 특성별 물리적 조인 선택 능력
- 페이지레벨에서의 중복된 경로를 최소화할 수 있는 쿼리 작성능력
- 등등
내가 아는내에서 당장생각나는 것만 적어봄
여러가지 필요지식들이 더 있을수도 있음
- dc official App
아 추가적으로 옵티마이저 판단도 체득해야됨 자세한 정보를 제공하지 않음 - dc App
존나귀한지식ㄱㅅ
아마 리마큐에서 저내용들 다 다룰껄 - dc App
해당 댓글은 삭제되었습니다.
이건 사후처리고 저내용을 완벽히 다 이해하면 처음짠 쿼리가 최적성능 쿼리가 될 수 있음 물론 나도 아직 완벽하게는 이해못함 - dc App
요정도만 알아줘도 중소 수준에서 전체 쿼리 평균 실행시간 100ms 언더로 끊을수 있음 - dc App
어차피 시간은 외부 요인에 의해 가변적인거라 비용을 봐야 맞는거 아님? 100ms 언더 중소에서 얼추 다맞는말이긴한데 시간 적게 나와도 비용 큰 쿼리 남겨두면 나중에 ㅈ같아짐
OLAP성 쿼리는 객관적으로 얘기할만한 기준이 없는데 일단 내가관리하는 DB는 최대 조회기준 10초 언더긴함 데이터 전체풀은 수십억행정도 하고 - dc App
CPU Time으로 얘기해도 될꺼같긴해 평균 83ms나오네 - dc App
이게 뭔가 나는 어플리케이션 까지 다 고려해서 한 말이라 조금 오해가 생길수도 있긴한듯 쿼리 자체로만 보면 빠르면 좋긴 하지 cost도 적고 근데 빠르긴한데 cost가 높으면 서버와 인프라 io 비용이 증가한다는 것을 말하고 싶었던 거임
데이터상태에 기반한 내용도 꽤있어서 그정도 제외하면 백엔드가 저기서 반만 알아도 Expert한 백엔드 개발자가 되는데 도움될꺼야 - dc App