HDD, SSD
데이터 저장 매체는 대부분 컴퓨터에서 느린 Disk(디스크)이다.
때문에 데이터베이스 성능 튜닝은 어떻게 디스크 I/O를 줄이느냐이다.
초당 처리 횟수를 분석하였을 때, Flash Memory를 사용하는 SSD는 HDD에 비해 엄청난 속도 차이를 보인다. 이 때문에 SSD는 DBMS로 사용할 서버로 많이 사용된다.
HDD의 경우
디스크에서 데이터를 읽어올 때, 하드 디스크의 드라이브 플래터(원판)을 돌려서 읽어야 할 데이터가 저장된 위치로 디스크 헤더(disk arm)을 이동 시킨 다음 데이터를 읽어온다.
순차 I/O 의 경우 원판을 돌려 읽어야 할 데이터가 저장된 위치까지 디스크 헤더를 이동시킨 다음 순차적으로 데이터를 읽으면 된다. 하지만 랜점 I/O의 경우 디스크 헤더의 위치, 이동횟수에서 큰 차이를 보인다. 즉, 데이터를 디스크에 쓰기 위해서 매번 디스크 해더를 움직여서 쓰고 쓸 위치로 이동시키는 시스템 콜을 호출하는 방법이다.
SSD의 경우
메모리 셀을 전자적으로 접근하기 때문에 디스크 헤더 이동이 필요없다. 따라서 랜덤 I/O에서도 높은 성능을 보여준다.
랜덤 I/O
- 특정 레코드나 데이터 블록을 찾기 위해 인덱스를 탐색하는 경우
- WHERE 절에 조건이 포함한 쿼리를 실행하여 특정 레코드를 찾는 경우
- 임의의 데이터 위치에 대한 갱신 또는 삭제 작업을 수행하는 경우
- 랜덤 I/O는 디스크 헤더가 여러 위치로 이동해야하므로 비교적 느린작업니다. 랜덤 I/O가 많이 발생하는 경우 성능 저하가 발생할 수 있다.
순차 I/O
- 테이블의 모든 레코드를 스캔하는 select 쿼리를 실행하는 경우
- 인덱스의 모든 블록을 읽거나 쓰는 경우
- 대량의 데이터를 정렬하거나 그룹화 하는 경우
- 순차 I/O는 디스크에서 연속적인 데이터를 읽거나 쓰므로 랜덤 I/O에 비해서 더 빠른 작업이다 . 따라서 순차 I/O는 대량의 데이터 액세스에 유리한 특정을 가지고 있다.
'Database' 카테고리의 다른 글
[데이터베이스] 인덱스 (2) | 2024.11.14 |
---|---|
[데이터베이스] B-Tree 인덱스와 B+Tree 인덱스 (0) | 2024.11.13 |
[데이터베이스] Pagination 구현 SQL (1) | 2024.11.08 |
[데이터베이스] SQL 안티패턴 (2) | 2024.11.07 |
[데이터베이스]Table 용어 정리 (0) | 2024.10.28 |