- Przypadek pierwszy
- Przypadek drugi
- Analiza wyników dla pierwszego przypadku przykładu.
- Analiza drugiego przypadku
- Scenariusze optymalizacji (metody)
- Przykładowa optymalizacja warunkowego przypadku próbki
- Porównanie metod optymalizacji
- Szablony ABAP i metody optymalizacji
- Przykład sferyczny.
W każdym systemie SAP istnieje kod Z i oczywiście kod Z działa powoli. Pojęcie „powolny” - jest względne, może to być godziny, a nawet dni, a gdzieś minuty lub sekundy. Praca na platformie SAP HANA pozwala przyspieszyć „długie” uruchamianie programów przy niewielkim wysiłku i osiągnąć wymaganą wydajność, nawet jeśli jest to sekunda.
Optymalizacja algorytmów (etapów) programów ABAP:
Definicja KPI - ile razy należy przyspieszyć program lub wymagany czas pracy w określonych warunkach uruchomienia.
Przeprowadzanie analizy wydajności - uruchamianie programu w określonych warunkach uruchomienia i zbieranie statystyk dotyczących wydajności operatorów.
Zidentyfikuj wąskie gardła i sposoby ich optymalizacji.
Optymalizacja programu.
Powtórzenie punktów 2-4, aż do otrzymania danego KPI lub uznania niemożliwości jego osiągnięcia.
Proces optymalizacji może być niemal „nieskończony” i oczywiście bardzo pracochłonny. Aby uniknąć dodatkowej pracy, konieczne jest określenie warunku zakończenia cyklu optymalizacji lub KPI. Przykładem KPI może być: program powinien przyspieszyć 100 razy lub program powinien działać nie dłużej niż 10 sekund. Oczywiście KPI powinny być realistyczne. Ponadto kluczowy wskaźnik wydajności musi uwzględniać parametry uruchamiania programu: na przykład w przypadku małych ilości danych (na przykład raport za 1 miesiąc) różnica czasu pracy z bazą danych w HANA, a nie w HANA, może być nieistotna, a optymalizacja wymaga znacznych kosztów pracy i dużych ilości danych pa) ta różnica będzie znacznie większa. Oczywiście dane muszą odpowiadać procesowi biznesowemu (nie jest konieczne prowadzenie raportu przez kilka lat, jeśli zawsze działa w ciągu jednego roku).
Przykład wyboru programu KPI
Tabela (rys. 1) pokazuje opcje wyboru KPI .
Rys.1 KPI opcji
Analiza wydajności to zbiór statystyk dotyczących czasów wykonania instrukcji programu ABAP.
Zalecam przeprowadzenie analizy wydajności w transakcji ST12, transakcja ta została zaprojektowana przez SAP AGS (SAP Active Global Support) do kompleksowej analizy wydajności ABAP. Możesz użyć transakcji SAT (stara SE30), jeśli ktoś lubi.
Więcej o ST12 w moim artykule. http://sapland.ru/articles/stats/2013/1/analiz-proizvoditelinosti-abap-programm.html .
Ważną cechą transakcji analizy wydajności są ograniczenia czasu gromadzenia danych i rozmiaru pliku, w którym zapisywane są dane śledzenia, a jeśli ten limit zostanie przekroczony, wynik śledzenia będzie nieistotny, a zatem niewystarczający. Dlatego w przypadku transakcji długoterminowych zaleca się przeprowadzenie analizy z parametrami, tak aby program działał przez około 20 minut, w którym to przypadku otrzymamy pełny ślad, rozkład czasu pracy dla operatorów zbliżonych do rzeczywistych, podczas gdy ślad nie będzie bardzo pracochłonny.
Po śledzeniu musisz posortować wyniki według pola Net (%) w porządku malejącym. Interesuje nas top 3-5, w zależności od rozkładu czasu i pożądane jest, aby połączenia były przypisane do kodu Z.
Przypadek pierwszy
Rysunek 2 to zrzut ekranu wyniku śledzenia transakcji testowej 1, top 3
Rys. 2 Wynik śledzenia transakcji 1 w ST12
W rozpatrywanym przypadku 50% czasu programu jest pobierane przez zapytanie do tabeli AUSP w obszarze Z. A 16% to połączenie FM READ_TEXT, które jest trudne do zoptymalizowania.
Przypadek drugi
Rys. 3 to zrzut ekranu wyniku śledzenia Transakcji testowej 2, top 3
Rys. 3 Wynik śledzenia transakcji 2 w ST12
W drugim przypadku (rysunek ... ..) 51% czasu pracy jest pobierane przez zapytanie w pętli do tabeli MATERIALID, wywołanie z programu standardowego, a 27% czasu jest pobierane przez zapytanie w pętli do tabeli IFLOS. W takich przypadkach analizujemy stos egzekucji.
Rys. 4 Analiza stosu wykonywania instrukcji dla transakcji 2 w ST12
Widzimy, że kod problemu znajduje się w interfejsie BAPI, który jest wywoływany w implementacji BADI. Istnieje więc możliwość optymalizacji, około 70%.
Po zebraniu śladu należy przeanalizować wąskie gardła w wydajności programu, a następnie opracować plan optymalizacji.
Analiza wydajności kodu programu ABAP poświęcona jest kilku kursom SAP, książkom, artykułom w Internecie. Mamy wiele różnych sytuacji, które trudno opisać w artykule, a nawet w książce. kiedy program ABAP ma niską wydajność Aby w pełni zrozumieć wszystkie zawiłości ABAP, musisz przeczytać sporo kursów, książek i mieć duże doświadczenie w programowaniu w ABAP.
Jednak rozważę kilka podstawowych wzorów sytuacji:
Tabela 1
Analiza wyników dla pierwszego przypadku przykładu.
Wynik śledzenia jest podawany dla transakcji testowej 1
Rys. 5 Wynik śledzenia transakcji 1 w ST12
Wyglądamy na kod ABAP
Widzimy ciężkie, szczególnie dla SAP HANA, zapytanie SELECT ... DLA WSZYSTKICH WPISÓW
Analiza drugiego przypadku
Rys.6 Wynik śledzenia transakcji 2 w ST12
Wywołanie BAPI w pętli (prawie 200 tys. Razy), w której nadmiarowe żądania
Rys. 7 Miejsce połączenia BAPI. Co jest przyczyną słabej wydajności
Scenariusze optymalizacji (metody)
Istnieją dwa scenariusze korzystania z HANA: „ ABAP w HANA ” i „ HANA Accelerator przez dodatkowe połączenie DB ”.
Najwygodniejszym przypadkiem jest ABAP na HANA, wtedy możemy użyć widoku zewnętrznego i ADMP (w poprzednim proxy bazy danych), a zapytania SQL ABAP OPEN są wykonywane w HANA, możemy także użyć Core Data Service zamiast widoku HANA
Wariant z akceleratorem HANA jest bardziej złożony i już egzotyczny, ponieważ jesteśmy ograniczeni w używaniu procedur przechowywanych (nie ma możliwości przekazania tablicy danych (tabela wewnętrzna) do parametrów procedury składowanej), musimy przekonwertować SELECT-OPTIONS na warunek WHERE. Jeśli optymalizacja ABAP (SELECT ... CONNECTION) nie jest wystarczająca, konieczne jest przeniesienie logiki programu ABAP do widoku obliczeń HANA.
Przykładowa optymalizacja warunkowego przypadku próbki
Istnieje program, w którym ślad wykazywał słabą wydajność w pętli LOOP
Program nie został całkowicie przepisany, zastąpiliśmy wolny cykl wywołaniem ADMP (procedura przechowywana), logika cyklu została przeniesiona do procedury składowanej
Ten sam przypadek, ale przy użyciu akceleratora HANA; Musiałem przepisać cały program w widoku HANA, który jest bardziej pracochłonny.
Porównanie metod optymalizacji
Optymalizacja ABAP jest najstarszą metodą, jest szczególnie przydatna, gdy HANA jest wykorzystywany jako akcelerator, czasami wystarczy wysłać żądanie do HANA (SELECT ... CONNECTION) i już osiągnąć znaczące wyniki.
Optymalizacja procedur przechowywanych przy użyciu HANA jest bardzo wygodna podczas korzystania z ADMP, pozwala szybko zoptymalizować kod problemu, bez przeprojektowywania całego programu, wygodne jest przenoszenie wewnętrznych tabel, ale nie jest wygodne używanie i przenoszenie warunków WHERE
Optymalizacja za pomocą silnika obliczeniowego HANA (w naszym przypadku graficznego) jest jednym z najbardziej czasochłonnych sposobów optymalizacji, ma sens optymalizować duże obszary problemowe programów lub w pełni przenosić logikę ABAP do HANA, ale jednocześnie uzyskać znaczne przyspieszenie (setki razy). Możesz użyć SELECT-OPTIONS, aby ograniczyć dane w widoku HANA (jako widok Exteranl).
Optymalizacja za pomocą usługi Core Data Service (CDS) jest taka sama jak w przypadku widoku HANA, ale bardziej elastyczna ze względu na użycie języka SQL. Zaleca się używanie zamiast widoku HANA Poniżej przedstawiono niektóre typowe szablony ABAP i sposób ich optymalizacji (przenoszone do HANA)
Szablony ABAP i metody optymalizacji
Tabela 2
Ogólne porady.
Wszystkie przetwarzanie danych to wybór, kombinacja lub agregacja danych. Postaraj się więc przedstawić logikę danych w tej formie. Następnie spróbuj przenieść logikę z ABAP do normalnego SQL, Google pomaga. Ponadto, jeśli używasz CE i CDS, ten SQL może zostać przeniesiony do funkcji CE.
Przykład sferyczny.
ABAP:
Ograniczony dostęp
Aby przeczytać pełną wersję artykułu, musisz zalogować się jako zarejestrowany użytkownik.