CS Student’s SAP&Tech Journey✨

[SAP] ABAP 딕셔너리(Dictionary) (6) 테이블 성능 최적화 - 키 필드 / 인덱스 / 버퍼링 활용하기 본문

SAP/딕셔너리 Dictionary

[SAP] ABAP 딕셔너리(Dictionary) (6) 테이블 성능 최적화 - 키 필드 / 인덱스 / 버퍼링 활용하기

인포마틱 2025. 2. 14. 21:03

SAP 시스템에서 대량의 데이터를 다룰 때 성능 최적화는 매우 중요합니다. 잘 설계된 데이터베이스 구조와 최적화된 검색 기법을 활용하면 데이터 처리 속도를 획기적으로 개선할 수 있습니다.

본 글에서는 ABAP Dictionary에서 테이블의 검색 성능을 향상시키는 방법을 다룹니다. 키 필드 활용, 인덱스 설정, 버퍼링 기법 등을 적용하여 보다 빠른 데이터 검색이 가능하도록 최적화하는 방법을 살펴보겠습니다.

 

 

 

ABAP 딕셔너리(Dictionary) 테이블 생성하기와 관련된 포스팅 보러가기 ⬇️

 

[ABAP] ABAP 딕셔너리(Dictionary) (5) 객체 생성 - 데이터 베이스(DB) 테이블 생성하기

SAP 시스템에서 데이터를 효과적으로 관리하려면 데이터베이스 객체를 정확하게 설계하는 것이 중요합니다. ABAP Dictionary에서는 데이터베이스 테이블(DB Table)을 정의하여 데이터를 저장하고, 이

informatik.tistory.com


 

 1️⃣ 키 필드를 활용한 검색 최적화

테이블에서 데이터를 검색할 때 키 필드(KEY Field)를 사용하면 자동으로 이분 검색(Binary Search)이 수행됩니다.

SELECT * FROM zstudent_07 WHERE stdnr = '12345678'. " 키 필드 검색 (이분 검색 O)"
SELECT * FROM zstudent_07 WHERE stdbirth = '20250214'. " 키 필드가 아님 (이분 검색 X)"
  • 키 필드(STDNR) 기반 검색은 이분 검색을 수행하여 빠르게 검색 가능
  • 일반 필드(STDBIRTH) 검색은 전체 테이블을 탐색(Full Table Scan)하므로 속도가 느림

 

2️⃣ 인덱스(Index) 활용

인덱스(Index)를 활용하면 키 필드가 아닌 데이터도 빠르게 검색 가능합니다.

✅ 인덱스를 설정하면 일반 필드도 이분 검색 가능합니다.

  • 예를 들어, BIRTH 필드를 자주 조회한다면 인덱스를 생성하여 검색 속도를 개선 가능
  • 인덱스 확인 방법: SE11 → 테이블 선택 → Index 탭 → 더블 클릭하여 확인

 

✅ 인덱스 생성 방법

  1. Create INDEX: 직접 만든 테이블(ZSTUDENT_07)에 인덱스를 추가하는 경우, 항상 Z와 Y로 시작
  2. Create Extension INDEX: SAP 표준 테이블에 인덱스를 추가하는 경우

 

✅ 인덱스 종류

  • Primary Index: 키 필드로 자동 생성되는 기본 인덱스
  • Secondary Index: 수작업으로 생성하는 인덱스 (예: 생년월일 필드에 인덱스 추가)
CREATE INDEX zidx_birth ON zstudent_07 (stdbirth).

 

3️⃣ 테이블 버퍼링(Buffering) 활용

버퍼링을 사용하면 데이터베이스(DB)로 접근하지 않고, 메모리에서 데이터를 가져와 속도를 향상시킬 수 있습니다.

✅ 버퍼링을 활성화하면 DB 대비 100배 속도 향상 가능 

✅ 단, 버퍼 크기가 제한적이므로 적절한 설정이 필요

 

📌 버퍼링 종류

  1. Full Buffering (전체 버퍼링)
    • 테이블의 모든 데이터를 한 번에 메모리에 로드
    • 작은 크기의 테이블에서만 사용 가능 (32KB 이하)
  2. Generic Buffering (부분 버퍼링)
    • 특정 키 값을 기준으로 일부 데이터를 버퍼링
    • 테이블의 지메릭 키가 2로 설정되어있는 상태이면, 검색 조건에 해당하는 데이터를 찾고 해당하는 데이터와 앞 2개 필드가 같은 데이터들이 버퍼에 저장됩니다.
    • 예: 지메릭 키(Generic Key) = 키 필드 개수 - 1
  3. Single Record Buffering (단일 레코드 버퍼링)
    • 특정 한 건의 데이터를 캐싱
    • SELECT SINGLE * 쿼리를 사용할 때만 적용 가능

 

✅ 버퍼링 설정 방법

  • SE11 → 테이블 선택 → Technical Settings → Buffering 옵션 설정
  • buffering allowed but switched off → 설정했지만 동작 안 함 (활성화 필요)

 

✅ ZSTUDENT_07 테이블 버퍼링 예시

  • Generic Buffering 사용 가능 (지메릭 키 값은 1로 설정해야 함)
  • Full Buffering은 테이블이 크기 때문에 사용 불가능

 

4️⃣ 데이터베이스 옵티마이저(Database Optimizer)

ABAP에서 쿼리를 실행하면 데이터베이스 옵티마이저가 가장 적절한 검색 방법(키 검색, 인덱스, 버퍼링 등)을 결정합니다.

✅ 데이터 검색 최적화 과정

  1. 키 필드 검색 → 자동으로 이분 검색 수행
  2. 인덱스 검색 → 비-키 필드도 빠르게 조회 가능
  3. 버퍼링 사용 → DB 접근 없이 메모리에서 가져오기

💡 즉, ABAP에서 검색할 때 옵티마이저가 최적의 방법을 선택하여 실행합니다.