문제를 내볼게요

다음중 DBMS 성능에 가장 영향을 미치는 것은? 

1. CPU

2. MEMORY 

3. I/O

 

바로 I/O이다 ( in memory DB가 아니라는 가정하에 )   

물론 cpu, memory 가 영향이 없다는 것은 아니다 . 

 

그럼 IO를 적게 하는 방법은 뭐가 있을까?

1. Storage 쪽 IO를 적게 한다 

2. IO자체를 빠르게 한다 

3. IO의 형태 (Random Access, Full Scan)를 조정한다 

 

고로 , IO 사전 지식이 필요하다 

 

DBMS 란 - 데이터를 효과적으로 저장하고, 갱신하고 조회하기 위한 시스템이다 

어떻게 저장을 해야 빠르게 저장/갱신/조회가 가능할까 ?

 

어떻게 저장하느냐에 따라 저장/검색 속도가 달라진다 .

1. 데이터을 임의의 공간에 보관할 경우( Random )

 - 데이터를 찾아야 할 경우, 정리가 안되어 있으니 느림

 - 데이터를 저장할 경우 , 정리안해도 되니 아무데나 비어있는데에 넣으면 되니 빠름

 - select 느림 / insert 빠름

 

2.  데이터를 정해진 공간에 넣을 경우 (Arrange)

 - 데이터를 찾아야 할 경우, 정리가 되어 있으니 빠름

 - 데이터를 저장할 경우 , 정리해야 되니 느림

 - select 빠름 / insert 느림

 

 

 

테이블 조회를 빠르게 하려면 "index" 를 쓰는게 방법이 될 수 있다.

 

index란 ?

- 테이블의 목차라고 생각하면 된다 

- 책을 볼때 목차에서 찾고 싶은 부분의 chapter 를 찾아 이동하는게 index scan

- 찾고 싶은 부분을 찾으려고 전체 책의 page를 다 보는게 full scan 

 

index scan이 무조건 빠른가?

  - index가 빠르고 full scan이라고 느린게 아니다. 상황에 따라 어떤 scan이 효율적인지는 DB Optimizer가 결정해줌 

  - 가져와야할 데이터가 많을 경우, index scan이 더 느림