시중 책에 없다
공부할게 많다는 뜻
db에서 네트워크, 쿼리,
왜 빠른가?
https://sungwookkang.com access pattern data structure
optimal path?
- 최적화
-최단거리
db base 쿼리가 빠르냐 느리냐 옵티마이저(디비의 뇌)로 참조
튜닝 포인트
- 비즈니스 얼마나 아느냐, 알고리즘가지고는 택도 없다
- ㅇ
튜닝의 목적: 일관된 성능, 꾸준히 평균이 이렇게 나온다. 그니깐 100page 100000호출이 더 효율적
디비 튜닝은 하드웨어 친화적 특히 I/o
튜닝을 잘하기 위해서
기계가 생각하는 방식으로 튜닝 해야한다. (optimisal 을 위한)
table: data가 저장되는 가장 적은 공간
- heap 바이너리가 저장된 것. heap table이라고 한다.
인덱스를 넣으면 클러스터(정렬) 인덱스 구조가 된다.
클러스터(index) - heap table 구조
인덱스 유무에 따라 이름 달라짐
data page Structure
- 디스크에 실제로 쓰이는 저장 단위
- page : sql 서버 기본 저장 단위
- 1page : 8k
extents
page가 8개가 모이면 extents라고 한다. - 논리적으로 연속된 8개 페이지 묶음
믹스 extents
유니폼 extenst
인덱스를 잘못잠기면 extensts를 묶음이 다 lock이 걸리는 문제 가 생간다.
- 페이지 타입
- data
- index
- text/image : 큰 데이터 형식 받을 때 - 참조변수의 주소값을 넣어준다. 원래는 8k 이하면 공간에 값이 들어가는데 이런거는 따로 저장된 주소에 들어간다
- pfs
- iam
index
- table
- heap
- 뭐였지
- clustered index
- b tree
- heap
clustered index(정렬)
- index는 abc순서대로 해야하므로 웬만하면 정렬이 보장된 데이터를 원함
- cluster은 pk가 아니므로 유니크하지 않다. 그래서 숨겨진 4byte가 있어서 유니크 cluster을 사용 권장
non clustered index
- table과 별개로 인덱스 키로만 구성된 별도의 b tree 인덱스 영역
- mysql 에서 pk
- 2개 개념 중요
- non cluster index (heap)
- non cluster index (cluster)
b tree에 데프리??/ 가 중요하데///
rdb는 컬럼 순서가 상관 없다.
- access type
- sequence access 데이터를 차례대로 읽음 / 큰 범위 검색 유리 포인트로 읽을 때 불필요한 데이터 까지 읽음, 데ㅐ이터 많을 수록, 시작점점 문제
- random access?????????????????
- scan
- 테이블 전체 또는 인덱스의 리프 레벨을 모두 읽는 방식
- 할당 순서 scan
- 인덱스 정렬 scan
- seek
- index 트리 타고 하나의 값을 검색하는 방식
- seek scan
- lookup
- non cluster index
- key lookup: index 영역에서 검색
- rib lookup - heap 영역에서 검색
- covered index - lookup 발생 안함 / 컬럼 합치면서 유니크해질수 있어서
- selectivity - 비율이 낮을 수록 좋다
- access patterns type
- table scan: 힙 구조 scan함 / 소형 table은 걍 스캔 때리고 상황마다 다름
- 클러스터 인덱스 스캔
- db에서 굳이 정렬해서 읽지마 - order by 조심해 -> 받아내고 app에서 정렬하는게 비용을 줄인다.
- 정렬이 정말 보장되기 위해선 order by 사용 - 클러스터 table이여도 필요함
- 페이지 스플릿
- db sequence + uuid (app 에서 사용)
- coverd index scan
- 데이터를 정렬된걸 가져올 때 order by 비용 == sort비용이 있으면 index로 정렬된 column을 order by로 사용해야 sort 비용을 줄일 수 있다.
index, orderby, in (), <, seek, scan, cluster, 등등 으로 튜닝을 하네?
range Scan, lookup-없는거 찾는거
그때 2가지 꼭 나중에 알아야된다는 거 - 정규화랑 동일함
클러스-넌클러스
넌클러스-클러스
db의 i/o 비용은 고객이 들어올때 비례하게 오르는게 아니라 로켓곡선을 그려서 ㅁ