본문 바로가기
데이터베이스

데이터베이스 sequential, scattered

by 흰색남자 2023. 6. 8.

 

[ 목적 ]

오라클 공부하다가 데이터를 읽는 과정을 몰랐는데, 여러 방법이 있다는 것을 알게 되어서 기록하고자 정리한다.

[ db file sequential read ]

단일 블록 스토리지 i/o를 수행할 때 발생.

주로 인덱스를 거쳐 테이블에 랜덤 엑세스 할 경우 발생하고 많은 Wait time을 소모함.

대량 발생 시 주로 oltp 시스템에서 성능 저하를 일으킴.

랜덤 i/o 엑세스 된 블록이 버퍼 캐시에는 Sequential하게 저장됨.

 

-- 최적화 방안.

버퍼 캐시 늘리기. 왜냐면 MRU 부분에 페이지가 들어가므로 오래 남길 수 있음.

인덱스를 다시 빌딩하는건 도움이 되지 않는 부분이 대부분,

OLTP에서는 자연스러운 Wait event임. 

성능이 뛰어난 ssd를 고려해야함. 랜덤 i/o를 많이 소모하는 sql임

 

[ db file scattered read ]

멀티 블록 스토리지 i/o를 수행할 때 발생

full 스캔을 할 경우 발생함.

여러 블록을 한번에 엑세스함.

풀 스캔을 할 경우에는 블록들이 버퍼 캐시에는 일부분만 Scattered하게 보관됨.

 

랜덤 I/O로 엑세스한 블록은 버퍼풀의 MRU 부분에 들어가게 됨. 풀 스캔 엑세스는 블록들이 LRU 부분에 SCATTERED하게 보관됨.

많은 양의 데이터, 테이블을 스캔할 경우에는 버퍼풀을 경유하지 않고 스토리지에 direct read, write하게 된다.