문제를 내볼게요
다음중 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이 더 느림
'DBMS > Oracle' 카테고리의 다른 글
[DBMS] 과연 Index scan(Random Acces)가 빠른것인가? (Random Access vs Sequential Access & Index Scan vs Full Scan) (0) | 2024.02.26 |
---|---|
[Oracle] Database Block, Clustering Factor란? (0) | 2024.02.26 |
[Oracle] Architecture(간단) (0) | 2024.02.25 |
SwingBench(stresstool) 사용하기 - Order Entry 스키마/데이터 생성 및 SwingBench 구동 (oewizard.bat ) (0) | 2024.02.25 |
SwingBench(stresstool) 사용하기 - 1 (디렉터리 살펴보기) (0) | 2024.02.22 |