ABAP 성능 최적화 진행해 보기.
1. SAP S/4 HANA vs 기존 DB
- 기존 DB(Oracle, My-SQL ...) => OLTP가 메인이야! DB가 micro초단위로 항상 바뀌기 때문이지.
- S/4 HANA => OLAP + OLTP => 변경도 하고 우린 DB로 빅데이터 분석을 할꺼야!
변경 : OLTP(네트워크 상의 온라인 사용자들의 Database 에 대한 일괄 트랜잭션 처리) 성격을 갖으므로 ,
Row(행 저장 방식 사용) = INSERT UPDATE DELETE가 메인이야.
조회 : OLAP(Data 를 분석하고 의미있는 정보로 치환하거나, 복잡한 모델링) 성격을 갖으므로,
Column(열 저장 방식 사용) = SELECT가 메인 이야.
1. Tcode - st12를 입력한다.
2.Current mode 클릭후
Comment 와 검증하고 싶은 프로그램의 Transaction code를 입력한다.
3. Execute / start trace 를 클릭한다.
4. Evaluate 의 ABAP Trace를 클릭한다.


다음과 같은 ABAP LOG가 나온다.
여기서 우리가 주목해야 할 부분은 DATABASE에 얼마나 많은 부하를 주는가?
를 확인해야 한다.
DATABASE에 부하가 많이 갈수록
NetWork를 많이 탄다는 증거,
즉 성능 저하와 비용 증가를 부른다.
# Tcode sat 를 확인해 보자.
1) short descriptioin을 작성하고 원하는 프로그램의 Tcode를 입력하자
2) Execute를 클릭한다.
3) TabStrip의 Profi.을 클릭후
DATA Accesses External -> Database -> DB:OPEN을 클릭해보자


실전 예제 )
다음과 같은 코드이 SQL LOG TRACE 시작. Tcode SAT.

log trace 결과.

분석 :
VBAK Table의 Hit 수를 보면 107,598번을 진행 ->
분명 SQL 1방을 날렸지만 실제 DB는 107,598번을 탄것!
DB Net 도 88%가 넘네?
%참고 : Net은 각 건이 걸린 시간이고 Net(%)는 비중입니다.
JAVA 에서는 JPA( 1 + N) 문제라고 부름.
튜닝 방법(기초 , Sub query 활용)


결과 분석 :
Hit 수도 약 10만 건에서 1건으로 Connection 수 대폭 줄임 (Slow Query의 튜닝)
Net % 도 80 -> 0.22 로 비용 감소!
결론 :
DB Connection 수를 최대한 줄이고
DB를 접근할때 최대한 많은 DB를 가져온 후 Buffer에서 메모리를 사용하도록 DB 튜닝을 하자.