-
(2) 데이터베이스의 본질과 indexBackend/MYSQL 2021. 4. 28. 22:40
■ 데이터베이스의 본질
> 어떻게 입력하고 출력 하는가? - 가 본질이 된다
> CRUD 가 본질
1) 입력
- Create
- Update
- Delete
2) 출력
- Read
■ File vs Spread-sheet vs Database
> File로 무언가를 관리하기에 index가 없기 때문에... 검색이 매우 어려움
> Spread-sheet로 table화하여 데이터 관리 가능 but 수많은 데이터에 대해서 작업하기 어려움
( 데이터 숨김 기능, filtering 등이 있음 )
■ index란?
추가 참조 :
1) 정의 :
추가적인 [ 쓰기작업 + 저장공간 ](자명함) 을 활용하여 데이터베이스의 테이블 검색속도를 향상시키기 위한 자료구조
2) index 없는 경우
full scan을 수행해야하고, 반드시 전체에 대해 모두 한번은 조회를 해야하므로, 처리속도가 떨어짐
3) index 관리
인덱스가 적용된 column에 INSERT, UPDATE, DELETE가 수행하면 indexing위해 다음 연산을 추가로 작업해주어야 함
- INSERT: 새로운 데이터에 대한 인덱스를 추가함
- DELETE: 삭제하는 데이터의 인덱스를 사용하지 않는다는 작업을 진행함
- UPDATE: 기존의 인덱스를 사용하지 않음 처리하고, 갱신된 데이터에 대해 인덱스를 추가함
4) 장단점
(1) 장점:
- 테이블 조회 속도 향상, 성능 향상
- 전반적 시스템 부하 감소
(2) 단점:
- 10% 정도의 추가 저장공간
- index 관리위한 추가 작업
- 잘못 사용된 경우 성능 저하(ex INSERT/CREATE UPDATE DELTE가 빈번한 경우)
5) 사용하면 좋은 경우
- 규모가 작지 않은 테이블 == 커서 full scan시 성능 저하가 있을 수 있을 때
- INSERT/CREATE, UPDATE, DELETE가 자주 발생하지 않는 컬럼
- JOIN이나 WHERE 또는 ORDER BY에 자주 사용되는 컬럼
- 데이터의 중복도가 낮은 컬럼
6) indexing 자료구조
- hashing : 검색 O(1)이 기대되지만, 등호로 검색되는 경우는 빠르나, 부등호 쿼리에 경우 적합하지 않음
- b-Tree / b+Tree
추가 참조 :
■ DB indexing 주 사용 자료구조 : b+Tree
(1) 정의 : 자식 노드가 2개 이상인 b-tree 개선시킨 자료구조, n차 child node가 존재할 수 있음( n>=2)
(2) 작동 방식 :
- leaf-node(index + 데이터 value) + index-node 구조
- leaf-node 들은 linked-list로 연결
> linked list로 연결된 leaf-node에 의해 순차탐색이 필요한 부등호 쿼리 등에 잘 적용될 수 있음
참조 :
opentutorials.org/course/3162/19528
반응형'Backend > MYSQL' 카테고리의 다른 글
생활코딩( Database2 MySQL ) (4) - SQL과 테이블 구조 & 테이블 생성 (0) 2021.05.30 생활코딩( Database2 MySQL ) (3) - MySQL 서버와 접속 / Schema 생성과 사용 (0) 2021.05.30 생활코딩( Database2 MySQL ) (2) - MySQL 기본 구조 (0) 2021.05.27 생활코딩( Database2 MySQL ) (1) - MySQL 기본 & 셋업 (0) 2021.05.27 MYSQL (1) - 공부할 소스 정리 (0) 2021.04.28