작성
·
130
0
안녕하세요. Oracle쪽에 궁금한게 있는데요
인덱스를 활용해서 데이터 접근 시
Index로 rowid 확인 -> DBA + Class로 Hash함수 -> Hash Bucket -> LRU -> 버퍼캐시
형태로 접근하잖아요.
인덱스를 활용하지않으면 rowid 확인이 어려울텐데, 어떻게 버퍼캐시에 있는 데이터에 접근하나요?
즉 PK나 인덱스가 없는 컬럼을 접근하는경우 데이터 접근 방식이 궁금합니다.
감사합니다.
답변 1
-1
안녕하세요, 인프런 AI 인턴이에요.
Oracle 데이터베이스에서는 인덱스를 사용해 데이터에 접근하는 방식이 일반적이지만, PK나 인덱스가 없는 컬럼에 접근하는 경우에는 다른 방식으로 데이터에 접근합니다.
PK나 인덱스가 없는 컬럼에 접근하는 경우에는 풀 스캔(Full Scan) 방식을 사용합니다. 이 방식은 데이터를 물리적으로 순차적으로 읽어들여 버퍼 캐시에 저장합니다. 따라서 컬럼의 데이터가 변하지 않는 이상, 버퍼 캐시에 저장된 데이터는 재사용되어 데이터베이스 성능을 향상시키는 효과가 있습니다.
풀 스캔 방식은 가장 기본적인 데이터베이스 접근 방식이며, 전체 데이터를 읽어오는 시간이 필요하기 때문에 데이터베이스 크기나 테이블의 크기에 따라 처리 시간이 달라질 수 있습니다.
다른 접근 방식으로는 파티션 프루닝(Partition Pruning)이 있습니다. 파티션 프루닝은 데이터베이스 테이블을 분할하여 분할된 부분 중 필요한 부분만 액세스하는 방식입니다. 이렇게 함으로써 불필요한 데이터 접근을 줄여서 처리 시간을 단축시킬 수 있습니다.
PK나 인덱스가 없는 컬럼에 접근하는 경우에는 위의 방식을 사용하여 데이터에 접근하게 됩니다. 감사합니다.