CS Student’s SAP&Tech Journey✨
[SAP] ABAP 딕셔너리(Dictionary) (6) 테이블 성능 최적화 - 키 필드 / 인덱스 / 버퍼링 활용하기 본문
[SAP] ABAP 딕셔너리(Dictionary) (6) 테이블 성능 최적화 - 키 필드 / 인덱스 / 버퍼링 활용하기
인포마틱 2025. 2. 14. 21:03SAP 시스템에서 대량의 데이터를 다룰 때 성능 최적화는 매우 중요합니다. 잘 설계된 데이터베이스 구조와 최적화된 검색 기법을 활용하면 데이터 처리 속도를 획기적으로 개선할 수 있습니다.
본 글에서는 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 탭 → 더블 클릭하여 확인
✅ 인덱스 생성 방법
- Create INDEX: 직접 만든 테이블(ZSTUDENT_07)에 인덱스를 추가하는 경우, 항상 Z와 Y로 시작
- Create Extension INDEX: SAP 표준 테이블에 인덱스를 추가하는 경우
✅ 인덱스 종류
- Primary Index: 키 필드로 자동 생성되는 기본 인덱스
- Secondary Index: 수작업으로 생성하는 인덱스 (예: 생년월일 필드에 인덱스 추가)
CREATE INDEX zidx_birth ON zstudent_07 (stdbirth).
3️⃣ 테이블 버퍼링(Buffering) 활용
버퍼링을 사용하면 데이터베이스(DB)로 접근하지 않고, 메모리에서 데이터를 가져와 속도를 향상시킬 수 있습니다.
✅ 버퍼링을 활성화하면 DB 대비 100배 속도 향상 가능
✅ 단, 버퍼 크기가 제한적이므로 적절한 설정이 필요
📌 버퍼링 종류
- Full Buffering (전체 버퍼링)
- 테이블의 모든 데이터를 한 번에 메모리에 로드
- 작은 크기의 테이블에서만 사용 가능 (32KB 이하)
- Generic Buffering (부분 버퍼링)
- 특정 키 값을 기준으로 일부 데이터를 버퍼링
- 테이블의 지메릭 키가 2로 설정되어있는 상태이면, 검색 조건에 해당하는 데이터를 찾고 해당하는 데이터와 앞 2개 필드가 같은 데이터들이 버퍼에 저장됩니다.
- 예: 지메릭 키(Generic Key) = 키 필드 개수 - 1
- 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에서 쿼리를 실행하면 데이터베이스 옵티마이저가 가장 적절한 검색 방법(키 검색, 인덱스, 버퍼링 등)을 결정합니다.
✅ 데이터 검색 최적화 과정
- 키 필드 검색 → 자동으로 이분 검색 수행
- 인덱스 검색 → 비-키 필드도 빠르게 조회 가능
- 버퍼링 사용 → DB 접근 없이 메모리에서 가져오기
💡 즉, ABAP에서 검색할 때 옵티마이저가 최적의 방법을 선택하여 실행합니다.
'SAP > 딕셔너리 Dictionary' 카테고리의 다른 글
[SAP] Search Help 서치 헬프 (0) | 2025.02.24 |
---|---|
[SAP] ABAP 딕셔너리(Dictionary) (5) 객체 생성 - 데이터 베이스(DB) 테이블 생성하기 (0) | 2025.02.14 |
[SAP] ABAP 딕셔너리(Dictionary) (4) 글로벌 타입 - 테이블 타입(Table Type) 정의하기 (0) | 2025.02.14 |
[SAP] ABAP 딕셔너리(Dictionary) (3) 글로벌 타입 - 스트럭쳐(Structure) 정의하기 (0) | 2025.02.14 |
[SAP] ABAP 딕셔너리(Dictionary) (2) 글로벌 타입 - 데이터 엘리먼트(Data Element), 도메인(Domain) 정의하기 (0) | 2025.02.14 |