친절한 SQL 튜닝 - 3일차

DevSeoRex·2022년 9월 28일
0
post-custom-banner

1.3 데이터 저장 구조 및 I/O 매커니즘

SQL이 느린 이유

SQL이 느린 이유는 대부분 디스크 I/O 때문이다.
OS 또는 I/O 서브시스템이 I/O를 처리하는 동안 프로세스는 잠을 자기 때문이다.

여러 프로세스가 하나의 CPU를 공유할 수 있지만, 특정 순간에는 하나의 프로세스만 CPU를 사용할 수 있기 때문에 이런 메커니즘이 필요하다.

정해진 OS 함수를 호출(I/O Call)하고 CPU를 반환한채 알람을 설정하고 대기 큐(Wait Queue)에서 잠을 자는 것이다.

** 디스크 I/O가 SQL 성능을 좌우한다고 해도 과언이 아니다.

1.3.2 데이터베이스 저장 구조

테이블 스페이스란?

테이블 스페이스란 데이터를 저장하기 위해 생성해야 하는 세그먼트를 담는 콘테이너이다. 여러개의 데이터파일(디스크 상의 물리적인 OS 파일)로 구성된다.

블록, 익스텐트, 세그먼트, 테이블스페이스, 데이터파일을 정의하면 다음과 같다.

  • 블록 : 데이터를 읽고 쓰는 단위
  • 익스텐트 : 공간을 확장하는 단위, 연속된 블록 집합
  • 세그먼트 : 데이터 저장공간이 필요한 오브젝트(테이블, 인덱스, 파티션, LOB 등)
  • 테이블스페이스 : 세그먼트를 담는 콘테이너
  • 데이터파일 : 디스크 상의 물리적인 OS 파일

데이터베이스에서 데이터를 읽고 쓰는 단위는 블록 단위로 읽는다.
1Byte짜리 컬럼 하나만 읽고 싶어도 블록을 통째로 읽는다.

오라클은 기본적으로 8KB 크기의 블록을 사용하므로 1Byte를 읽기 위해 8KB를 읽는 셈이다.

출처 : 친절한 SQL 튜닝(디비안, 조시형 저)

post-custom-banner

0개의 댓글