PL/SQL Hierarchical Profiler jako zaawansowana metoda strojenia wydajności aplikacji

Wielkość: px
Rozpocząć pokaz od strony:

Download "PL/SQL Hierarchical Profiler jako zaawansowana metoda strojenia wydajności aplikacji"

Transkrypt

1 XVI Konferencja PLOUG Kościelisko Październik 2010 PL/SQL Hierarchical Profiler jako zaawansowana metoda strojenia wydajności aplikacji Piotr Węsław Roche Polska Sp. z o.o. piotr.weslaw@roche.com Abstrakt. PL/SQL Hierarchical Profiler jest nowym narzędziem dostarczanym z bazą danych Oracle 11g. Służy ono do diagnozowania problemów wydajnościowych w kodzie PL/SQL owym, które przy zastosowaniu dotychczasowych narzędzi były trudne lub wręcz niemożliwe do wykrycia. Jego użycie jest bardzo proste i sprowadza się do włączenia narzędzia, uruchomienia analizowanego kodu oraz wygenerowania zbioru raportów. Ilość informacji dostarczonych w tych raportach jest jednak tak duża, ze ich interpretacja jest kłopotliwa bez wcześniejszego zrozumienia modelu koncepcyjnego. Niniejsze opracowanie koncentruje się na przedstawieniu tego modelu wraz z kilkoma przykładami oraz zaprezentowaniu metody pozwalającej ocenić przydatność użycia PL/SQL Hierarchical Profilera w konkretnych sytuacjach. Informacja o autorze. Piotr Węsław jest aktualnie pracownikiem farmaceutycznej firmy Roche Polska Sp. z o.o. Jeszcze podczas studiów na Wydziale Elektroniki i Technik Informacyjnych Politechniki Warszawskiej zajmował się zagadnieniami związanymi z bazami danych ze szczególnym uwzględnieniem technologii Oracle. Od początku kariery zawodowej skupia się na tematyce dotyczącej współbieżności i strojenia wydajności dużych baz danych Oracle, zarówno hurtowni danych, jak i systemów transakcyjnych.

2

3 PL/SQL Hierarchical Profiler jako zaawansowana metoda strojenia wydajności aplikacji Wstęp Strojenie wydajności aplikacji jest zagadnieniem złożonym, często opisywanym w publikacjach oraz omawianym podczas konferencjach informatycznych. Z biznesowego punktu widzenia tematyka ta z reguły sprowadza się do jednego założenia określone zadania systemu informatycznego powinny wykonywać się w określonym z góry przedziale czasowym. Jeśli ten warunek nie jest spełniony, wtedy osoby zajmujące się projektowaniem lub utrzymaniem aplikacji zaczynają pracować się strojeniem wydajności. Z technicznego punktu widzenia, problem ten można analizować na wielu różnych płaszczyznach. Często analiza problemu zaczyna się od obszaru, którym zajmuje się konkretna osoba przypisana do poprawy wydajności aplikacji. Może to być próba optymalizacji samej aplikacji lub jednego z wielu komponentów, na których jest ona uruchomiona, takich jak: serwer aplikacji, baza danych czy systemy operacyjne. Niestety takie podejście może skutkować sytuacją, w której wysiłek podejmowany jest w nieoptymalnym miejscu. Na przykład, w sytuacji gdy większość czasu aplikacja spędza na wykonywaniu zapytań SQL, nie ma sensu optymalizacji serwera aplikacyjnego. Najlepsze rezultaty przynosi podejście, w którym wysiłek koncentrowany jest w tym miejscu, w którym potencjalnie może przynieść największe rezultaty. Jednym z dylematów, przed którym mogą stanąć osoby zajmujące się strojeniem wydajności baz danych, dotyczy oceny czy lepsze rezultaty przyniesie optymalizacja zapytań SQL czy kodu napisanego w PL/SQL u. W bazie danych Oracle dostępnych jest kilka narzędzie, które pomagają podjąć tą decyzję. Można podzielić je na dwie grupy: narzędzia śledzące wykonywanie zapytań SQL lub poleceń PL/SQL (np. SQL trace, DBMS_PROFILER) narzędzia śledzące sposób wykonywania programów, łącznie z pełną historia wywołań poszczególnych podprogramów (np. PL/SQL Hierarchical Profiler) PL/SQL Hierarchical Profiler może być pomocy zarówno w podjęciu decyzji o tym, czy optymalizacja powinna dotyczyć programów PL/SQL owych, jak i sposobu analizy tego kodu. Jego przydatność może być jeszcze bardziej widoczna w sytuacjach, w których osoba zajmująca się strojeniem wydajności nie jest autorem rozwiązania, a jednocześnie jest ono na tyle skomplikowane, że analiza kodu źródłowego jest niemożliwa. W praktyce jedyną rzeczą jaką można zrobić jest uruchomienie aplikacji i obserwacja tego co dzieje się w bazie danych. 2. Profilowanie oparte o śledzenie poleceń Tradycyjne podejście do optymalizacji kodu aplikacji na poziomie bazy danych opiera się na śledzeniu zapytań SQL lub poleceń PL/SQL. Rozwiązania ułatwiające takie profilowanie dostępne są już od dłuższego czasu poprzez takie narzędzia jak: SQL trace (np. polecenie ALTER SESSION SET sql_trace = TRUE;) oraz tkprof pakiet DBMS_TRACE pakiet DBMS_PROFILER Podczas wykonywania analizowanego kodu, narzędzia te rejestrują ilości wykonań poszczególnych zapytań SQL owych lub poleceń PL/SQL oraz związany z tym czas. W sytuacji, w której słaba wydajność aplikacji spowodowana jest konkretnym zapytaniem lub poleceniem, podejście te umożliwia w łatwy sposób znalezienie miejsca w aplikacji, którego optymalizacja przyniesie wymierne korzyści. W tym momencie mogą pojawić się pewne trudności jeśli optyma-

4 42 Piotr Węsław lizacji wymaga sposób w jaki poszczególne podprogramy wewnątrz pakietu PL/SQL owego współpracują między sobą. Takie informacje nie są niestety rejestrowane podczas wykonywania kodu. W przypadku optymalizacji zapytań SQL zasadniczo ten problem nie występuje, ponieważ dokładny sposób realizacji zapytań dostępny jest w planach ich wykonań. Narzędzia używane do profilowania opartego o śledzenie poleceń mają bogate możliwości konfiguracji (np. rejestrowanie wartości zmiennych wiązanych). Jednak u podstaw zasady ich działania leżą założenia, które powodują, że następujące informacje nie są dostępne: wywołania poszczególnych podprogramów wewnątrz pakietu PL/SQL owego. Przykładowo, jeśli pakiet składa się z 10 funkcji wywołujących się wzajemnie, informacja o tym fakcie jest niedostępna. W praktyce poziom zagnieżdżenia może być dużo większy i zrozumienie kolejności wywołań na podstawie zadanych wartości parametrów wejściowych oraz czytania kodu źródłowego, może być niemożliwe. ilość czasu spędzonego wewnątrz samej procedury/funkcji (bez uwzględniania wywoływanych podprogramów) versus całkowity czas spędzony na sama procedurę/funkcję łącznie ze wszystkimi wywoływanymi podprogramami. Powyższe informację są doskonałym punktem startowym do pracy nad optymalizacją kodu PL/SQL owego. Profilowanie hierarchiczne oraz rozwiązania dostępne w bazie Oracle od wersji 11g umożliwiają ich uzyskanie. 3. Model koncepcyjny profilowania hierarchicznego Podstawowa różnica między profilowaniem opartym o śledzenie zapytań a profilowaniem hierarchicznym polega na tym, ze w drugim przypadku zapamiętywany jest kontekst wywołania. PL/SQL Hierarchical Profiler obserwuje w jaki sposób i w jakiej kolejności wywoływane są kolejne podprogramy. Oczywiście dla danego podprogramu jego zachowanie (a co za tym idzie wywoływanie kolejnych podprogramów) może być różne w zależności wartości parametrów wejściowych. Profilowanie hierarchiczne bazuje na konkretnym eksperymencie (tj. uruchamiamy procedurę z zadanymi parametrami wejściowymi), więc można spodziewać się, że zmiana parametrów wejściowych spowoduje zmianę wyników. Profilowanie hierarchiczne, w przeciwieństwie do opartego o śledzenie zapytań, dostarcza następujące informacje: pełna historia wywołań każde wywołanie podprogramu jest zapamiętywane czas spędzony pomiędzy poszczególnymi wywołaniami Na ich podstawie można obliczyć następujące statystyki związane z działaniem danego podprogramu: czas spędzony na wykonanie kodu wewnątrz podprogramu (self time) czas spędzony na oczekiwaniu aż wywoływane podprogramy skończą swoje działanie (calles time) całkowity czas spędzony na wykonanie danego podprogramu (subtree time) ilość wywołań badanego podprogramu wszystkie wywołane podprogramy oraz ich ilość z perspektywy badanego podprogramu

5 PL/SQL Hierarchical Profiler jako zaawansowana metoda strojenia wydajności aplikacji 43 Caller_1 Subtree = Self + Callees Caller_2 Subtree = Self + Callees... Caller_N Subtree = Self + Callees n 1 n 2 n N Number of calls = n 1 + n n N Some_Subprogram Subtree time = Self time + Callees time c 1 c 2 c N Callee_1 Subtree = Self + Callees Callee_2 Subtree = Self + Callees... Callee_N Subtree = Self + Callees Rys. 1. Model koncepcyjny profilowania hierarchicznego Rys. 1 przedstawia model koncepcyjny profilowania hierarchicznego. W centrum analizy jest procedura o nazwie Some_Subprogram(), która wywoływana była podczas eksperymentu przez podprogramy Caller_1(), Caller_2() aż do Caller_N(). Procedura Some_Subprogram() nie wykonywała całej pracy samodzielnie korzystała z pomocy podprogramów Callee_1(), Callee_2() aż do Callee_N(). Ilość wywołań poszczególnych podprogramów oznaczona jest odpowiednio n 1, n 2 n N oraz c 1, c 2 c N. Czas spędzony na wykonywaniu danego podprogramu (subtree time) jest to suma czasu spędzonego na wykonywanie kodu zawartego w tym podprogramie dla wszystkich jego wywołań (self time) oraz czasu spędzonego na oczekiwanie aż wywoływane podprogramy wykonają swoje zadania (callees time). Subtree time = Self time + Callees time Dla każdego podprogramu wywołującego (Caller_1(), Caller_2() Caller_N()) można zaobserwowac następujące fakty: ilośc wywołań podprogramu Some_Subprogram() procentowy udział całkowitego czasu spędzonego przez podprogramu Some_Subprogram() za jaki odpowiedzialny jest dany podprogram wywołujący na podstawie ilość wywołań Dla każdego podprogramu wywoływanego (Callee_1(), Callee_2() Callee_N()) można zaobserwować następujące fakty: ile razy był wywołany przez podprogram Some_Subprogram() czas spędzony na wykonanie tego podprogramu w sytuacji gdy był on wywołany przez podprogram Some_Subprogram() W rzeczywistych systemach reprezentacja struktury w postaci przestawionej na rys.1 jest praktycznie niemożliwa, ponieważ ilość podprogramów oraz ich wzajemnych wywołań jest bardzo duża. Dlatego raporty generowane przez PL/SQL Hierarchical Profiler a reprezentowane są

6 44 Piotr Węsław w postaci zbioru powiązanych ze sobą tabel (np. jako strony HTML). Przykład jednej z nich zaprezentowany jest poniżej. Subtree Self Callees Calls Function time (function) time (descendants) time Some_Subprogram Caller_ Caller_ Caller_N Callee_ Callee_ Callee_N Tabela 1. Reprezentacja wyników pracy PL/SQL Hierarchical Profilera w postaci tabeli Na podstawie powyższych wyników eksperymentu, analizę kodu źródłowego należałoby zacząć od podprogramu Some_Subprogram(), ponieważ ma największy czas wykonania (subtree time). W dalszej kolejności byłby podprogram Callee_1() z dużym czasem przeznaczonym na wykonanie zadań własnych (self time) oraz wzajemny sposób współpracy tych dwóch podprogramów. Zrozumienie modelu koncepcyjnego przedstawionego powyżej bardzo ułatwi interpretację raportów dostarczonych przez omawiane narzędzie. 4. Przygotowanie profilera hierarchicznego do pracy PL/SQL Hierarchical Profiler dostarczany jest razem z bazą danych Oracle od wersji 11g. W początkowych wersjach nie zawierał on narzędzia, które konwertowałoby pliki śladu tworzone podczas jego pracy do zbioru stron HTML. Co prawda można było próbować analizować je samemu, ale wiązało się to ze znaczna ilość pracy. Alternatywą jest załadowanie wyników pracy PL/SQL Hierarchical Profilera do dedykowanych tabel i stworzenie własnych zapytań SQL lub wykonanie upgrade u bazy danych do wersji i skorzystanie z możliwości automatycznego generowania stron HTML. Użycie PL/SQL Hierarchical Profilera nie wymaga instalacji ani konfiguracji. Jednak trzeba wykonań kilka czynności, aby z niego korzystać Utworzenie dedykowanego katalogu Na poziomie systemu operacyjnego powinien zostać utworzony katalog, do którego będą zapisywane pliki śladu oraz strony HTML. Przykładowo w systemie Windows może to być katalog d:\hprof, do którego prawa zapisu ma użytkownik przy pomocy którego została zainstalowana baza danych. Następnie w bazie danych również należy utworzyć katalog przy pomocy następującego polecenia: CREATE DIRECTORY plshprof AS d:\hprof ;

7 PL/SQL Hierarchical Profiler jako zaawansowana metoda strojenia wydajności aplikacji Utworzenie dedykowanego użytkownika Użytkownika, który będzie przeznaczony do pracy z PL/SQL Hierarchical Profilerem można utworzyć w następujący sposób: CREATE USER hprof_user IDENTIFIED BY password; GRANT CREATE SESSION, RESOURCE TO hprof_user; GRANT EXECUTE ON DBMS_HPROF to hprof_user; GRANT READ, WRITE ON DIRECTORY plshprof TO hprof_user; 4.3. Uruchomienie PL/SQL Hierarchical Profiler a Na tym etapie można przystąpić do wykonania eksperymentu. W poniższym przykładzie procedura o nazwie MY_PROC() poddana jest profilowaniu. Kod ten powinien zostać uruchomiony przez dedykowanego użytkownika hprof_user. BEGIN END; DBMS_HPROF.START_PROFILING( plshprof, My_Run_1.trc ); MY_PROC(); DBMS_HPROF.STOP_PROFILING(); Po wykonaniu powyższego kodu w katalogu d:\hprof utworzony zostanie plik o nazwie My_Run1.trc zawierający statystyki z uruchomienia procedury MY_PROC() Wygenerowanie stron HTML Jeżeli profilowanie odbywa się na bazie danych w wersji lub nowszej, plik otrzymany w poprzednim kroku można przekonwertować do zbioru stron HTML przy pomocy następującego polecenia: D:\Hprof> plshprof output My_Run_1 My_Run_1.trc Analizę procedury można rozpocząć od otwarcia pliku My_Run_1.html w przeglądarce internetowej. Na ekranie otrzymamy linki do kilkunastu raportów umożliwiających pracę nad poprawą wydajności omawianej procedury Tworzenie własnych raportów Jeżeli profilowanie odbywa się w bazie danych w wersji starszej niż , wtedy raporty niestety trzeba utworzyć we własnych zakresie. Oracle dostarcza jedynie zbioru tabel i narzędzia do załadowania ich danymi z eksperymentu. Tabele te można utworzyć przy pomocy następującego skryptu: $ORACLE_HOME/rdbms/admin/dbmshptab.sql Dane do tabel można załadować wykorzystując procedurę DBMS_HPROF.ANALYZE(). 5. Przykłady użycia profilera hierarchicznego Praktyczne wykorzystanie modelu koncepcyjnego profilera hierarchicznego zaprezentowane jest w poniższych przykładach. Ich istotą jest przedstawienie sposobu w jaki można znaleźć nieefektywnie działający fragment programu na podstawie eksperymentu czyli uruchomienia apli-

8 46 Piotr Węsław kacji. Przykłady prezentują również kilka typowych wniosków, które wypływają z analizy raportów. Z tego punktu widzenia, nie jest istotne jakie zadania wykonuje konkretny program oraz w jaki sposób można go zoptymalizować. Ważne jest, że przy pomocy PL/SQL Hierarchical Profiler a można udowodnić, że dany fragment aplikacji działa nieefektywnie oraz podać potencjalne powody takiego zachowania. W rzeczywistości poprawa wydajności często może wiązać się ze zmiana projektu całego rozwiązania Przykład 1 strojenie wydajności zapytań SQL czy kodu PL/SQL Celem pierwszego przykładu jest ilustracja sposobu znalezienia odpowiedzi na pytanie dotyczące rodzaju optymalizacji jaki przyniesie największe korzyści: optymalizacja zapytań SQL optymalizacja kodu PL/SQL. Po wykonaniu eksperymentu i wygenerowaniu raportów narzędziem plshprof można przystąpić do ich analizy. Trzy z nich ma nazwę zaczynającą się od Namespace Elapsed Time i różnią się jedynie sposobem sortowania. W tym kontekście namespace może przyjmować jedynie dwie wartości: PLSQL dotyczy wykonywania poleceń PL/SQL SQL dotyczy wykonywania zapytań SQL Na rys. 2 przedstawiony jest fragment takiego raportu. Na jego podstawie można stwierdzić, że 90.3% czasu przeznaczone było na wykonywanie zapytań SQL, a jedynie 9.7% na kod PL/SQL. Jest to dowód na to, że optymalizacja w tym wypadku powinna dotyczyć zapytań SQL. Podczas pracy nad rzeczywistymi systemami dostępność takiej informacji pozwala od razu skoncentrować wysiłek zespołu we właściwym miejscu. Rys. 2. Fragment raportu Namespace Elapsed Time 5.2. Przykład 2 identyfikacja niewydajnego podprogramu Celem drugiego przykładu jest ilustracja sposobu znalezienia procedury, w której powinien zostać zoptymalizowany kod PL/SQL. Struktura wywołań programu użytego do eksperymentu przedstawiona jest na rys. 3. Nie jest ona niezbędna do analizy raportów otrzymanych z PL/SQL Hierarchical Profilera, ale ułatwi ich zrozumienie. W tym przypadku program główny uruchomiony jest za pomoca procedury Main(), która wywołuje procedury P1(), P2(), P3(), P4() oraz P5(). Procedury P2(), P3() oraz P4() korzystają z podprogramu pomocniczego Helper(). Ilość i kolejność wywołań podprogramów nie jest przedstawiona na rysunku.

9 PL/SQL Hierarchical Profiler jako zaawansowana metoda strojenia wydajności aplikacji 47 Main P1 P2 P3 P4 P5 Helper Rys. 3. Struktura wywołań programu użytego w przykładzie 2 Na podstawie raportu Function Elapsed Time, Data sorted by Total Function Elapsed Time otrzymanego po wykonaniu eksperymentu, stworzona została tabela 2. Zawiera ona dane dotyczące całkowitego czasu wykonania podprogramu (subtree time), czasu spędzonego wewnątrz podprogramu (self time) oraz czas spędzonego na oczekiwaniu aż wywołane podprogramy wykonają swoje zadania (callees time). Subtree Self (function) Callees (descendants) time [s] time [s] time [s] Calls Function P P P P P MAIN HELPER Tabela 2. Czasy wykonania podprogramów przed optymalizacją procedury P3 Na podstawie danych w tabeli 2 widać, że największy całkowity czas na wykonanie podprogramu dotyczy procedury Main() ( s) oraz P3() ( s). W przypadku pierwszej z nich czas na własne zadania jest minimalny ( s), a praktycznie cały czas jej wykonania związany jest z oczekiwaniem aż wywołane podprogramy skończą swoje działanie ( s). Nie jest to zaskoczeniem, ponieważ programy są pisane właśnie w taki sposób działanie programu głównego sprowadza się do wywołania kilku podprogramów. Z kolei procedura P3() zdecydowaną większość czasu spędziła na wykonywaniu zadań własnych ( s), a czas spędzony na oczekiwaniu na wykonanie wywołanych podprogramów jest minimalny ( s). Na tej podstawie można wnioskować, ze właśnie procedura P3() jest miejscem, gdzie należy szukać możliwości optymalizacji. Optymalizacja czasu jej wykonania w największym stopniu przyczyni się do krótszego wykonania całego programu. Czasy wykonania poszczególnych podprogramów po optymalizacji procedury P3() przedstawione są w tabeli 3. Wyraźnie widać, ze czas na zadania własne tej procedury spadł do s, a co za tym idzie również czas całkowity (subtree time) procedury Main().

10 48 Piotr Węsław Subtree Self (function) Callees (descendants) time [s] time [s] time [s] Calls Function P P P P P MAIN HELPER Tabela 3. Czasy wykonania podprogramów po optymalizacji procedury P3 Podany przykład ilustruje, że procedury, które mają duży czas przeznaczony na zadania własne (self time), a jednocześnie czas oczekiwania na inne podprogramy (callees time) jest niewielki, są dobrymi kandydatami do optymalizacji Przykład 3 koszt mechanizmu wywołania podprogramu Kolejny przykład ilustruje koszt mechanizmu wywołania podprogramów oraz jego wpływ na wydajność aplikacji w sytuacji, gdy jest on używany bardzo wiele razy. Struktura programu użytego w tym przykładzie przedstawiona jest na rys. 4. Program główny wywołuje kolejno funkcje od F1() do F5(). Ilość wywołań dla każdej kolejnej funkcji stopniowo rośne i jest zaznaczona na rysunku. Main F1 F2 F3 F4 F5 Rys. 4. Struktura wywołań programu użytego w przykładzie 3 Kod każdej z funkcji jest identyczny i sprowadza się jedynie do zwrócenia stałej wartości Przykładowo, kod funkcji F5() przedstawiony jest poniżej: function f5 return integer is begin return 5; end f5; Wyniki na podstawie przeprowadzonego eksperymentu oraz otrzymanych raportów zostały przedstawione w tabeli 4. Niepokojący jest fakt, ze główny program Main() ma stosunkowo duży czas na zadania własne ( s), mimo, że w zasadzie nie wykonuje on żadnych zadań, a jedynie woła funkcje od F1() do F5(). Jednocześnie funkcja F5() czas na zadania własne ma bardzo duży ( s) w porównaniu do tego co wykonuje w rzeczywistości ciało tej funkcji jest puste, co widać w kodzie przedstawionym powyżej. Z drugiej strony czas jej oczekiwania na wykonanie podprogramów wynosi 0 s. Nie jest to zaskoczeniem, ponieważ funkcja F5() nie wywołuje żadnych podprogramów.

11 PL/SQL Hierarchical Profiler jako zaawansowana metoda strojenia wydajności aplikacji 49 Analizując dalej czasy funkcji od F4() do F1() poświęcone na zadania własne (self time) widać, że maleją one mniej więcej proporcjonalnie do ilości wywołań (calls). Na podstawie powyższych faktów można przypuszczać, że większość czasu działania programu poświęcana jest na sam machizm wywoływania podprogramów. Subtree Self (function) Callees (descendants) time [s] time [s] time [s] Calls Function MAIN F F F F F1 Tabela 4. Czas wykonania podprogramów przed użyciem mechanizmu inline Aby zredukować ilość wywołań podprogramów, jednocześnie zachowując funkcjonalność całego programu, można użyć mechanizmu inline. Mechanizm ten przed kompilacją programu modyfikuje w sposób automatyczny kod źródłowy w taki sposób, że miejsca wywołań danego podprogramu zastępowane są jego ciałem. Mechanizm inline może być użyty w następujący sposób: pragma Inline(f5, 'yes'); Po wprowadzeniu powyższej modyfikacji i wykonaniu eksperymentu, czasy wykonań poszczególnych podprogramów przedstawione zostały w tabeli 5. Czas całkowity programu Main() spadł z s do s, czyli około 6 razy jest to znaczna poprawa wydajności. Jednocześnie funkcja F5() całkowicie znikła z listy podprogramów. Wynika to z istoty działania mechanizmu inline. Po jego zastosowaniu funkcja F5() nie była już wywoływana, ponieważ jej zawartość została wstawiona w miejsce jej wywołań. Subtree Self (function) Callees (descendants) time [s] time [s] time [s] Calls Function MAIN F F F F1 Tabela 5. Czas wykonania podprogramów po użyciu mechanizmu inline Przykład ten ilustruje sytuację, w której słaba wydajność aplikacji związana jest z dużą liczbą wywołań podprogramów. Rozwiązaniem może być użycie mechanizmu inline Przykład 4 wydajność podprogramu zależna od miejsca wywołania Wydajność podprogramu może być zależna od miejsca, w którym został on wywołany. Związane jest to z wartościami przekazanych argumentów. Przykładowo, uruchamiając program o strukturze przedstawionej na rys 3., może okazać się że 80% czasu działania podprogramu Helper() związane jest z jego wywołaniem przez podprogram P4(). Wywołania z podprogramów P2() oraz P3() stanowią zaledwie 20%. W takiej sytuacji konieczne będzie przeanalizowanie kodu źródło-

12 50 Piotr Węsław wego, aby zrozumieć czym różnią się te wywołania, np. podprogram P4() używa bardziej szczegółowego logowania wykonywanych zadań. PL/SQL Hierarchical Profiler a umożliwia potwierdzenia faktu, że takie zjawisko ma miejsce. Raporty otrzymane na podstawie przeprowadzonych eksperymentów zawierają szczegółowe sekcje dotyczące każdego podprogramu oraz miejsc, z którego był on wywoływany. Dla każdego nadrzędnego podprogramu podany jest jego procentowy udział w całkowitym czasie wykonania badanego podprogramu. Dzięki takiej informacji łatwo jest wskazać miejsce w kodzie aplikacji, z którego wywołania trwają nadspodziewanie długo. 6. Wpływ profilowania hierarchicznego na czas eksperymentu Profilowania hierarchiczne bazuje na rejestracji informacji o kolejnych wywołaniach procedur i funkcji. Informacje takie zapisywane są do pliku, co z kolej przekłada się na wydłużenie czasu eksperymentu. Jego wydłużenie zależy od ilości wywołań. Im więcej informacji jest zapamiętywanych, tym wpływ profilowania hierarchicznego jest większy. W tableach 6, 7 i 8 przedstawione są czasy z przebiegu trzech eksperymentów (różne programy testowe) w zależności od ilości wywołań podprogramów. Wyraźnie widać, ze wraz ze wzrostem liczby wywołań rzeczywisty czas eksperymentu znacznie rośne. Nie jest to powodem do zmartwienia, ponieważ czas ten w zasadzie nie ma wpływu na przeprowadzona później analizę. Natomiast czas podany przez PL/SQL Hierarchical Profiler a jest podstawą do analizy problemu wydajnościowego. Na podstawie zaprezentowanych wyników widać, ze czas ten również jest w pewien sposób zaburzony przez eksperyment. Na szczęście nie odbiega on znacząco od czasu wykonania programu bez użycia profilowania hierarchicznego. Ilość wywołań funkcji w całym eksperymencie 112 Czas zmierzony profilowanie wyłączone s Czas zmierzony profilowanie włączone s Czas podany przez profilera s Tabela 6. Wpływ profilowania na czas eksperymentu 112 wywołań podprogramów Ilość wywołań funkcji w całym eksperymencie Czas zmierzony profilowanie wyłączone s Czas zmierzony profilowanie włączone s Czas podany przez profilera s Tabela 7. Wpływ profilowania na czas eksperymentu wywołań podprogramów Ilość wywołań funkcji w całym eksperymencie Czas zmierzony profilowanie wyłączone s Czas zmierzony profilowanie włączone s Czas podany przez profilera s Tabela 8. Wpływ profilowania na czas eksperymentu wywołań podprogramów Przeprowadzając strojenie wydajności w rzeczywistym systemie warto mieć na uwadze fakt, że informacje widoczne w raportach obarczone są pewnym błędem, którego nie można całkowicie wyeliminować.

13 PL/SQL Hierarchical Profiler jako zaawansowana metoda strojenia wydajności aplikacji Rola profilowania hierarchicznego w strojeniu wydajności aplikacji Użycie profilowania hierarchicznego w strojeniu wydajności aplikacji może dostarczyć informacji, które pomogą podjąć decyzje gdzie i w jaki sposób podjąć próby jej poprawy. Poniżej zaprezentowana została lista wskazówek, która w połączeniu z analizą raportów z profilowania hierarchicznego ułatwi przeprowadzenie efektywnej optymalizacji. Kolejność zalecanych czynności nie jest przypadkowa i powinna być wykonywana w następującej kolejności: jeżeli czas wykonania programu zdominowany jest przez polecenia SQL zajmij się strojeniem wydajności zapytań. jeżeli występuje jeden podprogram PL/SQL owy ze znacznym czasem przeznaczonym na zadania własne (self time) zajmij się poprawą implementacji tego podprogramu. Jeśli analiza podprogramu poprzez jego czytanie nie jest wystarczająca profilowanie oparte o śledzenie poleceń.może być pomocne. jeżeli podprogramy wywoływany i wywołujący mają duże czas przeznaczone na zadania własne (self time) oraz ilość wywołań jest duża użyj mechanizmu inline, aby zmniejszyć koszt wywołań. jeżeli podprogram ma duży czas przeznaczony na zadania własne (self time), wywoływany jest z wielu miejsc, a czas jego wykonania zależy od miejsca wywołania sprawdź te miejsce wywołania, z którego czas wykonania jest największy. jeżeli powyższe przypadki nie mają zastosowania przeanalizuj tą część raportu (a następnie kodu PL/SQL), która ma największy całkowity czas wykonania. Rozwiązanie problemu może wymagać zmiany projektu aplikacji. 8. Podsumowanie PL/SQL Hierarchical Profiler jest kolejnym narzędziem dostarczonym przez Oracle przeznaczonym do optymalizacji wydajności aplikacji. Jego funkcjonalność umożliwia wskazanie problemów w kodzie PL/SQL, które do tej pory były trudne do znalezienia, a tym bardziej do udowodnienia. Opisany w niniejszym opracowaniu model koncepcyjny oraz zawarte przykłady ułatwią analizę dostarczanych przez te narzędzie raportów. W dalszej kolejności może przełożyć się to do bardziej efektywnej pracy zespołów zajmujących się strojeniem wydajności aplikacji. Bibliografia [Llew09] [Orcl08] Llewellyn B.: Using the PL/SQL Hierarchical Performance Profiler, Materiały Konferencyjne Oracle Open Word 2009, San Francisco, USA. Oracle Corporation: Using the PL/SQL Hierarchical Profiler, Oracle Database Advanced Application Developer's Guide 11g Release 1 (11.1), Part Number B , chapter 9.

Usługi analityczne budowa kostki analitycznej Część pierwsza.

Usługi analityczne budowa kostki analitycznej Część pierwsza. Usługi analityczne budowa kostki analitycznej Część pierwsza. Wprowadzenie W wielu dziedzinach działalności człowieka analiza zebranych danych jest jednym z najważniejszych mechanizmów podejmowania decyzji.

Bardziej szczegółowo

Pakiety podprogramów Dynamiczny SQL

Pakiety podprogramów Dynamiczny SQL Pakiety podprogramów Dynamiczny SQL Pakiety podprogramów, specyfikacja i ciało pakietu, zmienne i kursory pakietowe, pseudoinstrukcje (dyrektywy kompilatora), dynamiczny SQL 1 Pakiety Pakiet (ang. package)

Bardziej szczegółowo

Plan. Wprowadzenie. Co to jest APEX? Wprowadzenie. Administracja obszarem roboczym

Plan. Wprowadzenie. Co to jest APEX? Wprowadzenie. Administracja obszarem roboczym 1 Wprowadzenie do środowiska Oracle APEX, obszary robocze, użytkownicy Wprowadzenie Plan Administracja obszarem roboczym 2 Wprowadzenie Co to jest APEX? Co to jest APEX? Architektura Środowisko Oracle

Bardziej szczegółowo

Bazy danych. Zenon Gniazdowski WWSI, ITE Andrzej Ptasznik WWSI

Bazy danych. Zenon Gniazdowski WWSI, ITE Andrzej Ptasznik WWSI Bazy danych Zenon Gniazdowski WWSI, ITE Andrzej Ptasznik WWSI Wszechnica Poranna Trzy tematy: 1. Bazy danych - jak je ugryźć? 2. Język SQL podstawy zapytań. 3. Mechanizmy wewnętrzne baz danych czyli co

Bardziej szczegółowo

Projektowanie baz danych za pomocą narzędzi CASE

Projektowanie baz danych za pomocą narzędzi CASE Projektowanie baz danych za pomocą narzędzi CASE Metody tworzenia systemów informatycznych w tym, także rozbudowanych baz danych są komputerowo wspomagane przez narzędzia CASE (ang. Computer Aided Software

Bardziej szczegółowo

PHP: bazy danych, SQL, AJAX i JSON

PHP: bazy danych, SQL, AJAX i JSON 1 PHP: bazy danych, SQL, AJAX i JSON SYSTEMY SIECIOWE Michał Simiński 2 Bazy danych Co to jest MySQL? Jak się połączyć z bazą danych MySQL? Podstawowe operacje na bazie danych Kilka dodatkowych operacji

Bardziej szczegółowo

Jak ustawić cele kampanii?

Jak ustawić cele kampanii? Jak ustawić cele kampanii? Czym są cele? Jest to funkcjonalność pozwalająca w łatwy sposób śledzić konwersje wygenerowane na Twojej stronie www poprzez wiadomości email wysłane z systemu GetResponse. Mierzenie

Bardziej szczegółowo

GNU GProf i GCov. przygotował: Krzysztof Jurczuk Politechnika Białostocka Wydział Informatyki Katedra Oprogramowania ul. Wiejska 45A Białystok

GNU GProf i GCov. przygotował: Krzysztof Jurczuk Politechnika Białostocka Wydział Informatyki Katedra Oprogramowania ul. Wiejska 45A Białystok GNU GProf i GCov przygotował: Krzysztof Jurczuk Politechnika Białostocka Wydział Informatyki Katedra Oprogramowania ul. Wiejska 45A 15-351 Białystok Streszczenie: Dokument zawiera podstawowe informacje

Bardziej szczegółowo

NETBEANS PROFILER TOMASZ ŁUKASZUK

NETBEANS PROFILER TOMASZ ŁUKASZUK NETBEANS PROFILER TOMASZ ŁUKASZUK STRESZCZENIE: Dokument zawiera podstawowe informacje dotyczące programu NetBeans Profiler. Stanowi uproszczoną instrukcję jego używania. Dotyczy NetBeans Profiler w wersji

Bardziej szczegółowo

Wdrożenie modułu płatności eservice. dla systemu Magento 1.4 1.9

Wdrożenie modułu płatności eservice. dla systemu Magento 1.4 1.9 Wdrożenie modułu płatności eservice dla systemu Magento 1.4 1.9 - dokumentacja techniczna Wer. 01 Warszawa, styczeń 2014 1 Spis treści: 1 Wstęp... 3 1.1 Przeznaczenie dokumentu... 3 1.2 Przygotowanie do

Bardziej szczegółowo

System. Instalacja bazy danych MySQL. Autor : Piotr Zielonka tel Piotrków Tryb., sierpień 2018r.

System. Instalacja bazy danych MySQL. Autor : Piotr Zielonka tel Piotrków Tryb., sierpień 2018r. System FOKUS Instalacja bazy danych MySQL Autor : Piotr Zielonka tel. 601 99-73-79 pomoc@zielonka.info.pl Piotrków Tryb., sierpień 2018r. W wersji 2018.7.0 systemu FoKus wprowadzono funkcje umożliwiające

Bardziej szczegółowo

Język PL/SQL Procedury i funkcje składowane

Język PL/SQL Procedury i funkcje składowane Język PL/SQL Procedury i funkcje składowane Podprogramy, procedury i funkcje składowane, typy argumentów, wywoływanie procedur i funkcji, poziomy czystości funkcji 1 Podprogramy Procedury (wykonują określone

Bardziej szczegółowo

Instalacja SQL Server Express. Logowanie na stronie Microsoftu

Instalacja SQL Server Express. Logowanie na stronie Microsoftu Instalacja SQL Server Express Logowanie na stronie Microsoftu Wybór wersji do pobrania Pobieranie startuje, przechodzimy do strony z poradami. Wypakowujemy pobrany plik. Otwiera się okno instalacji. Wybieramy

Bardziej szczegółowo

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main. Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo

Bardziej szczegółowo

Monitoring procesów z wykorzystaniem systemu ADONIS

Monitoring procesów z wykorzystaniem systemu ADONIS Monitoring procesów z wykorzystaniem systemu ADONIS BOC Information Technologies Consulting Sp. z o.o. e-mail: boc@boc-pl.com Tel.: (+48 22) 628 00 15, 696 69 26 Fax: (+48 22) 621 66 88 BOC Management

Bardziej szczegółowo

DECLARE VARIABLE zmienna1 typ danych; BEGIN

DECLARE VARIABLE zmienna1 typ danych; BEGIN Procedury zapamiętane w Interbase - samodzielne programy napisane w specjalnym języku (właściwym dla serwera baz danych Interbase), który umożliwia tworzenie zapytań, pętli, instrukcji warunkowych itp.;

Bardziej szczegółowo

Wdrożenie modułu płatności eservice. dla systemu oscommerce 2.3.x

Wdrożenie modułu płatności eservice. dla systemu oscommerce 2.3.x Wdrożenie modułu płatności eservice dla systemu oscommerce 2.3.x - dokumentacja techniczna Wer. 01 Warszawa, styczeń 2014 1 Spis treści: 1 Wstęp... 3 1.1 Przeznaczenie dokumentu... 3 1.2 Przygotowanie

Bardziej szczegółowo

Język PL/SQL Pakiety podprogramów

Język PL/SQL Pakiety podprogramów Język PL/SQL Pakiety podprogramów Pakiety podprogramów, specyfikacja i ciało pakietu, zmienne i kursory pakietowe, pseudoinstrukcje (dyrektywy kompilatora) 1 Pakiety Pakiet (ang. package) grupuje powiązane

Bardziej szczegółowo

Wdrożenie modułu płatności eservice. dla systemu Zen Cart 1.3.9 1.5

Wdrożenie modułu płatności eservice. dla systemu Zen Cart 1.3.9 1.5 Wdrożenie modułu płatności eservice dla systemu Zen Cart 1.3.9 1.5 - dokumentacja techniczna Wer. 01 Warszawa, styczeń 2014 1 Spis treści: 1 Wstęp... 3 1.1 Przeznaczenie dokumentu... 3 1.2 Przygotowanie

Bardziej szczegółowo

REFERAT PRACY DYPLOMOWEJ Temat pracy: Projekt i realizacja serwisu ogłoszeń z inteligentną wyszukiwarką

REFERAT PRACY DYPLOMOWEJ Temat pracy: Projekt i realizacja serwisu ogłoszeń z inteligentną wyszukiwarką REFERAT PRACY DYPLOMOWEJ Temat pracy: Projekt i realizacja serwisu ogłoszeń z inteligentną wyszukiwarką Autor: Paweł Konieczny Promotor: dr Jadwigi Bakonyi Kategorie: aplikacja www Słowa kluczowe: Serwis

Bardziej szczegółowo

Szkolenie: Testowanie wydajności (Performance Testing)

Szkolenie: Testowanie wydajności (Performance Testing) Szkolenie: Testowanie wydajności (Performance Testing) Testy niefunkcjonalne aplikacji to nieodłączna część pracy dobrego testera. Do tego typu testów zaliczamy między innymi taką właściwość systemu jak

Bardziej szczegółowo

Diagram wdrożenia. Rys. 5.1 Diagram wdrożenia.

Diagram wdrożenia. Rys. 5.1 Diagram wdrożenia. Diagram wdrożenia Zaprojektowana przez nas aplikacja bazuje na architekturze client-server. W tej architekturze w komunikacji aplikacji klienckiej z bazą danych pośredniczy serwer aplikacji, który udostępnia

Bardziej szczegółowo

Aplikacje WWW - laboratorium

Aplikacje WWW - laboratorium Aplikacje WWW - laboratorium PHP + bazy danych Celem ćwiczenia jest przygotowanie prostej aplikacji internetowej wykorzystującej technologię PHP. Aplikacja pokazuje takie aspekty, współpraca PHP z bazami

Bardziej szczegółowo

Zaawansowane aplikacje internetowe

Zaawansowane aplikacje internetowe Zaawansowane aplikacje internetowe EJB 1 Rozróżniamy dwa rodzaje beanów sesyjnych: Stateless Statefull Celem tego laboratorium jest zbadanie różnic funkcjonalnych tych dwóch rodzajów beanów. Poszczególne

Bardziej szczegółowo

KOMPUTEROWY SYSTEM WSPOMAGANIA OBSŁUGI JEDNOSTEK SŁUŻBY ZDROWIA KS-SOMED

KOMPUTEROWY SYSTEM WSPOMAGANIA OBSŁUGI JEDNOSTEK SŁUŻBY ZDROWIA KS-SOMED KOMPUTEROWY SYSTEM WSPOMAGANIA OBSŁUGI JEDNOSTEK SŁUŻBY ZDROWIA KS-SOMED Podręcznik użytkownika Katowice 2010 Producent programu: KAMSOFT S.A. ul. 1 Maja 133 40-235 Katowice Telefon: (0-32) 209-07-05 Fax:

Bardziej szczegółowo

Szkolenie autoryzowane. MS 6232 Wdrażanie bazy danych Microsoft SQL Server 2008 R2

Szkolenie autoryzowane. MS 6232 Wdrażanie bazy danych Microsoft SQL Server 2008 R2 Szkolenie autoryzowane MS 6232 Wdrażanie bazy danych Microsoft SQL Server 2008 R2 Strona szkolenia Terminy szkolenia Rejestracja na szkolenie Promocje Opis szkolenia Szkolenie, gdzie uczestnicy zapoznają

Bardziej szczegółowo

Wdrożenie modułu płatności eservice. dla systemu Gekosale 1.4

Wdrożenie modułu płatności eservice. dla systemu Gekosale 1.4 Wdrożenie modułu płatności eservice dla systemu Gekosale 1.4 - dokumentacja techniczna Wer. 01 Warszawa, styczeń 2014 1 Spis treści: 1 Wstęp... 3 1.1 Przeznaczenie dokumentu... 3 1.2 Przygotowanie do integracji...

Bardziej szczegółowo

SQL w 24 godziny / Ryan Stephens, Arie D. Jones, Ron Plew. Warszawa, cop Spis treści

SQL w 24 godziny / Ryan Stephens, Arie D. Jones, Ron Plew. Warszawa, cop Spis treści SQL w 24 godziny / Ryan Stephens, Arie D. Jones, Ron Plew. Warszawa, cop. 2016 Spis treści O autorach 11 Podziękowania 12 Część I Wprowadzenie do języka SQL 13 Godzina 1. Witamy w świecie języka SQL 15

Bardziej szczegółowo

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki 2011. Promotor dr inż. Paweł Figat

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki 2011. Promotor dr inż. Paweł Figat Grzegorz Ruciński Warszawska Wyższa Szkoła Informatyki 2011 Promotor dr inż. Paweł Figat Cel i hipoteza pracy Wprowadzenie do tematu Przedstawienie porównywanych rozwiązań Przedstawienie zalet i wad porównywanych

Bardziej szczegółowo

Projekt ZSWS. Instrukcja uŝytkowania narzędzia SAP Business Explorer Analyzer. 1 Uruchamianie programu i raportu. Tytuł: Strona: 1 z 31

Projekt ZSWS. Instrukcja uŝytkowania narzędzia SAP Business Explorer Analyzer. 1 Uruchamianie programu i raportu. Tytuł: Strona: 1 z 31 Strona: 1 z 31 Explorer Analyzer 1 Uruchamianie programu i raportu PoniŜsze czynności uruchamiają program Bex Analyzer oraz wybrany raport z hurtowni danych. 1. uruchom z menu Start>Programy>Business Explorer>Analyzer

Bardziej szczegółowo

REFERAT PRACY DYPLOMOWEJ

REFERAT PRACY DYPLOMOWEJ REFERAT PRACY DYPLOMOWEJ Temat pracy: Projekt i implementacja środowiska do automatyzacji przeprowadzania testów aplikacji internetowych w oparciu o metodykę Behavior Driven Development. Autor: Stepowany

Bardziej szczegółowo

Instrukcja instalacji i obsługi programu Szpieg 3

Instrukcja instalacji i obsługi programu Szpieg 3 COMPUTER SERVICE CENTER 43-300 Bielsko-Biała ul. Cieszyńska 52 tel. +48 (33) 819 35 86, 819 35 87, 601 550 625 Instrukcja instalacji i obsługi programu Szpieg 3 wersja 0.0.2 123 SERWIS Sp. z o. o. ul.

Bardziej szczegółowo

Oracle PL/SQL. Paweł Rajba.

Oracle PL/SQL. Paweł Rajba. Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 5 Wprowadzenie Tworzenie i wykonywanie procedur i funkcji Instrukcja RETURN Parametry procedur i funkcji oraz ich przesyłanie Metadane

Bardziej szczegółowo

Problemy optymalizacji, rozbudowy i integracji systemu Edu wspomagającego e-nauczanie i e-uczenie się w PJWSTK

Problemy optymalizacji, rozbudowy i integracji systemu Edu wspomagającego e-nauczanie i e-uczenie się w PJWSTK Problemy optymalizacji, rozbudowy i integracji systemu Edu wspomagającego e-nauczanie i e-uczenie się w PJWSTK Paweł Lenkiewicz Polsko Japońska Wyższa Szkoła Technik Komputerowych Plan prezentacji PJWSTK

Bardziej szczegółowo

Uruchomienie nowego kontekstu aplikacji

Uruchomienie nowego kontekstu aplikacji Uruchomienie nowego kontekstu aplikacji Niniejsza instrukcja (przygotowana dla systemów Debian) dotyczy uruchomienia nowej aplikacji w sytuacji, gdy mamy już jedną działającą. Działanie takie trzeba wykonać

Bardziej szczegółowo

Optimed24 Przenoszenie bazy danych PostrgreSQL

Optimed24 Przenoszenie bazy danych PostrgreSQL Przenoszenie bazy danych PostrgreSQL Dotyczy wersji: Spis treści 1. Tworzenie... kopii zapasowej bazy danych 3 2. Przywracanie... kopii zapasowej na innym serwerze 4 3. Tworzenie... nowego pliku połączeniowego

Bardziej szczegółowo

Monitoring procesów z wykorzystaniem systemu ADONIS. Krok po kroku

Monitoring procesów z wykorzystaniem systemu ADONIS. Krok po kroku z wykorzystaniem systemu ADONIS Krok po kroku BOC Information Technologies Consulting Sp. z o.o. e-mail: boc@boc-pl.com Tel.: (+48 22) 628 00 15, 696 69 26 Fax: (+48 22) 621 66 88 BOC Management Office

Bardziej szczegółowo

Oracle Designer. Oracle Designer jest jednym z głównych komponentów pakietu Oracle Developer Suite. Oracle Designer wspiera :

Oracle Designer. Oracle Designer jest jednym z głównych komponentów pakietu Oracle Developer Suite. Oracle Designer wspiera : Oracle Designer Oracle Designer jest jednym z głównych komponentów pakietu Oracle Developer Suite. Oracle Designer wspiera : - modelowanie procesów biznesowych - analizę systemu informatycznego - projektowanie

Bardziej szczegółowo

System magazynowy małego sklepu.

System magazynowy małego sklepu. System magazynowy małego sklepu. dokumentacja użytkownika. Mariusz Grabowski e-mail: mariosh@interia.pl Jabber ID: mariosh@jabber.autocom.pl Spis treści 1 Wstęp. 2 2 Przed uruchomieniem. 3 3 Korzystanie

Bardziej szczegółowo

Rozdział 17. Zarządzanie współbieżnością zadania

Rozdział 17. Zarządzanie współbieżnością zadania Rozdział 17. Zarządzanie współbieżnością zadania Transakcja DML 1. Uruchom narzędzie Oracle SQL Developer i przyłącz się do bazy danych. Następnie rozpocznij nową transakcję, zmieniając pracownikowi o

Bardziej szczegółowo

D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44

D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44 Zaawansowane aplikacje internetowe EJB 1 Rozróżniamy dwa rodzaje beanów sesyjnych: Stateless Statefull Celem tego laboratorium jest zbadanie różnic funkcjonalnych tych dwóch rodzajów beanów. Poszczególne

Bardziej szczegółowo

VinCent v.1.40 zmiany w programie

VinCent v.1.40 zmiany w programie VinCent v.1.40 zmiany w programie W związku z wprowadzaną ustawą RODO, nakładającą na podmioty szereg nowych obowiązków związanych z ochroną danych osobowych, wprowadziliśmy kilka zmian które mogą pomóc

Bardziej szczegółowo

Migracja XL Business Intelligence do wersji

Migracja XL Business Intelligence do wersji Migracja XL Business Intelligence do wersji 2019.0 Copyright 2018 COMARCH Wszelkie prawa zastrzeżone Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci

Bardziej szczegółowo

Tworzenie raportów XML Publisher przy użyciu Data Templates

Tworzenie raportów XML Publisher przy użyciu Data Templates Tworzenie raportów XML Publisher przy użyciu Data Templates Wykorzystanie Szablonów Danych (ang. Data templates) jest to jedna z metod tworzenia raportów w technologii XML Publisher bez użycia narzędzia

Bardziej szczegółowo

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

Modelowanie hierarchicznych struktur w relacyjnych bazach danych Modelowanie hierarchicznych struktur w relacyjnych bazach danych Wiktor Warmus (wiktorwarmus@gmail.com) Kamil Witecki (kamil@witecki.net.pl) 5 maja 2010 Motywacje Teoria relacyjnych baz danych Do czego

Bardziej szczegółowo

Spis treści. Przedmowa

Spis treści. Przedmowa Spis treści Przedmowa V 1 SQL - podstawowe konstrukcje 1 Streszczenie 1 1.1 Bazy danych 1 1.2 Relacyjny model danych 2 1.3 Historia języka SQL 5 1.4 Definiowanie danych 7 1.5 Wprowadzanie zmian w tabelach

Bardziej szczegółowo

Aplikacje WWW - laboratorium

Aplikacje WWW - laboratorium Aplikacje WWW - laboratorium PHP + bazy danych Celem ćwiczenia jest przygotowanie prostej aplikacji internetowej wykorzystującej technologię PHP. Aplikacja pokazuje takie aspekty, współpraca PHP z bazami

Bardziej szczegółowo

Tworzenie aplikacji bazodanowych

Tworzenie aplikacji bazodanowych Wydział Informatyki Politechnika Białostocka Studia stacjonarne Tworzenie aplikacji bazodanowych Prowadzący: pokój: E-mail: WWW: Małgorzata Krętowska, Agnieszka Oniśko 206 (Małgorzata Krętowska), 207 (Agnieszka

Bardziej szczegółowo

Instrukcja obsługi Systemu monitorowania pomocy publicznej DEMINIMIS (v. 2.00)

Instrukcja obsługi Systemu monitorowania pomocy publicznej DEMINIMIS (v. 2.00) Instrukcja obsługi Systemu monitorowania pomocy publicznej DEMINIMIS (v. 2.00) Spis treści: 1. Informacje ogólne o Systemie monitorowania pomocy publicznej DEMINIMIS 1.1 Informacje techniczne 1.2 Zastosowania

Bardziej szczegółowo

Procedury i funkcje składowane

Procedury i funkcje składowane Procedury i funkcje składowane Zmienne podstawienia i zmienne wiązane, podprogramy, procedury składowane, typy argumentów, wywoływanie procedur, funkcje składowane, poziomy czystości funkcji, funkcje tablicowe

Bardziej szczegółowo

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik Technologia Przykłady praktycznych zastosowań wyzwalaczy będą omawiane na bazie systemu MS SQL Server 2005 Wprowadzenie

Bardziej szczegółowo

Gerard Frankowski, Zespół Bezpieczeństwa PCSS. Nowoczesne technologie bliżej nas Poznań, 04.03.2010

Gerard Frankowski, Zespół Bezpieczeństwa PCSS. Nowoczesne technologie bliżej nas Poznań, 04.03.2010 Bezpieczeństwo interoperacyjnego hostingu Gerard Frankowski, Zespół Bezpieczeństwa PCSS 4. Konferencja MIC Nowoczesne technologie bliżej nas Poznań, 04.03.2010 1 Agenda Wprowadzenie Zespół Bezpieczeństwa

Bardziej szczegółowo

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery http://xqtav.sourceforge.net XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery dr hab. Jerzy Tyszkiewicz dr Andrzej Kierzek mgr Jacek Sroka Grzegorz Kaczor praca mgr pod

Bardziej szczegółowo

Win Admin Monitor Instrukcja Obsługi

Win Admin Monitor Instrukcja Obsługi Win Admin Monitor Instrukcja Obsługi czerwiec 2019 wersja dokumentu 1.7 dla wersji aplikacji 2.1.1.0 Spis treści: I. Wstęp 3 II. Wymagania systemowe 4 III. Ograniczenia funkcjonalne wersji demo 5 IV. Instalacja

Bardziej szczegółowo

Usługa: Testowanie wydajności oprogramowania

Usługa: Testowanie wydajności oprogramowania Usługa: Testowanie wydajności oprogramowania testerzy.pl przeprowadzają kompleksowe testowanie wydajności różnych systemów informatycznych. Testowanie wydajności to próba obciążenia serwera, bazy danych

Bardziej szczegółowo

FUNKCJONALNOŚ C PORTAL B2B KAMELEON.ŚQL 7.5.60

FUNKCJONALNOŚ C PORTAL B2B KAMELEON.ŚQL 7.5.60 FUNKCJONALNOŚ C PORTAL B2B KAMELEON.ŚQL 7.5.60 W KAMELEON.SQL 7.5.60 została dodana funkcjonalność klasy B2B (na tą funkcjonalność wymagana jest dodatkowa licencja, którą można wykupić w naszej firmie)

Bardziej szczegółowo

Oracle11g: Programowanie w PL/SQL

Oracle11g: Programowanie w PL/SQL Oracle11g: Programowanie w PL/SQL OPIS: Kurs pozwala zrozumieć zalety programowania w języku PL/SQL. Studenci uczą się tworzyć bloki kodu wykonywanego po stronie serwera, który może być współużytkowany

Bardziej szczegółowo

Zarządzanie kontami użytkowników w i uprawnieniami

Zarządzanie kontami użytkowników w i uprawnieniami 106 Plan prezentacji 107 Zarządzanie kontami użytkowników w i uprawnieniami Schematy a użytkownicy Tworzenie użytkowników, uwierzytelnianie Przywileje systemowe i obiektowe, role Profile kontrola wykorzystania

Bardziej szczegółowo

Nie przegrzewaj mózgu wrzuć dane do bazy!

Nie przegrzewaj mózgu wrzuć dane do bazy! Nie przegrzewaj mózgu wrzuć dane do bazy! System zarządzania bazami danych, czyli jak zorientować się, o co chodzi w Accessie Wpisywanie i wyszukiwanie informacji, czyli jak sensownie korzystać z bazy

Bardziej szczegółowo

enova Systemowe Narzędzia Projektowe

enova Systemowe Narzędzia Projektowe enova Systemowe Narzędzia Projektowe Sebastian Wabnik Spis treści Opis rozwiązania...3 Dostęp do narzędzia...3 Wywoływanie narzędzia...4 Zakładka Logi czasu...4 SQL Stat...5 Zakładka Liczniki...7 Zakładka

Bardziej szczegółowo

15. Funkcje i procedury składowane PL/SQL

15. Funkcje i procedury składowane PL/SQL 15. Funkcje i procedury składowane PLSQL 15.1. SQL i PLSQL (Structured Query Language - SQL) Język zapytań strukturalnych SQL jest zbiorem poleceń, za pomocą których programy i uŝytkownicy uzyskują dostęp

Bardziej szczegółowo

Oracle10g: Programowanie w PL/SQL

Oracle10g: Programowanie w PL/SQL Oracle10g: Programowanie w PL/SQL OPIS: Szkolenie dotyczy użytkowników Oracle8i, Oracle9i i Oracle10g. Ten kurs pozwala zrozumieć zalety tego potężnego narzędzia programowania do PL/SQL. Studenci uczą

Bardziej szczegółowo

Migracja Business Intelligence do wersji 11.0

Migracja Business Intelligence do wersji 11.0 Migracja Business Intelligence do wersji 11.0 Copyright 2012 COMARCH Wszelkie prawa zastrzeżone Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest

Bardziej szczegółowo

Oracle PL/SQL. Paweł Rajba. pawel@ii.uni.wroc.pl http://www.kursy24.eu/

Oracle PL/SQL. Paweł Rajba. pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 4 Wyjątki PL/SQL Mechanizmy dotyczące błędów Typy wyjątków Obsługa wyjątków PL/SQL Obsługa błędów predefiniowanych, użytkownika

Bardziej szczegółowo

Wstęp. Opis ten dotyczy wydziałów orzeczniczych.

Wstęp. Opis ten dotyczy wydziałów orzeczniczych. Wstęp. Opis ten dotyczy wydziałów orzeczniczych. W związku z przekształceniem 79 Sądów w Wydziały Zamiejscowe i związane z tym liczne zapytania odnośnie strony technicznej i sposobu przygotowania baz danych

Bardziej szczegółowo

Tworzenie bazy danych w środowisku OpenOffice.org Base tabela, formularz, kwerenda, raport

Tworzenie bazy danych w środowisku OpenOffice.org Base tabela, formularz, kwerenda, raport Tworzenie bazy danych w środowisku OpenOffice.org Base tabela, formularz, kwerenda, raport W programie OpenOffice.org Base można uzyskać dostęp do danych zapisanych w plikach baz danych o różnych formatach.

Bardziej szczegółowo

!!!!!!!!!!! PORTFOLIO: Analiza zachowań użytkowników serwisów internetowych. Autorzy: Marek Zachara

!!!!!!!!!!! PORTFOLIO: Analiza zachowań użytkowników serwisów internetowych. Autorzy: Marek Zachara PORTFOLIO: Analiza zachowań użytkowników serwisów internetowych Autorzy: Marek Zachara Opis merytoryczny Cel naukowy (jaki problem wnioskodawca podejmuje się rozwiązać, co jest jego istotą, co uzasadnia

Bardziej szczegółowo

S P I S T R E Ś C I. Instrukcja obsługi

S P I S T R E Ś C I. Instrukcja obsługi S P I S T R E Ś C I Instrukcja obsługi 1. Podstawowe informacje o programie.................................................................................... 2 2. Instalacja programu.....................................................................................................

Bardziej szczegółowo

System Zarządzania Dystrybucją

System Zarządzania Dystrybucją PRI - Projekt System Zarządzania Dystrybucją Leszek Krupiński 13 czerwca 2003 Spis treści 1 Opis dziedziny problemowej 2 2 Cel 3 3 Zakres 4 4 Kontekst 5 5 Opis wymagań 6 5.1 Wymagania funkcjonalne......................

Bardziej szczegółowo

Cele. Definiowanie wyzwalaczy

Cele. Definiowanie wyzwalaczy WYZWALACZE Definiowanie wyzwalaczy Cele Wyjaśnić cel istnienia wyzwalaczy Przedyskutować zalety wyzwalaczy Wymienić i opisać cztery typy wyzwalaczy wspieranych przez Adaptive Server Anywhere Opisać dwa

Bardziej szczegółowo

Plan. Formularz i jego typy. Tworzenie formularza. Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza

Plan. Formularz i jego typy. Tworzenie formularza. Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza 4 Budowa prostych formularzy, stany sesji, tworzenie przycisków Plan Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza 2 Formularz i jego typy Tworzenie formularza

Bardziej szczegółowo

Currenda EPO Instrukcja Konfiguracji. Wersja dokumentu: 1.3

Currenda EPO Instrukcja Konfiguracji. Wersja dokumentu: 1.3 Currenda EPO Instrukcja Konfiguracji Wersja dokumentu: 1.3 Currenda EPO Instrukcja Konfiguracji - wersja dokumentu 1.3-19.08.2014 Spis treści 1 Wstęp... 4 1.1 Cel dokumentu... 4 1.2 Powiązane dokumenty...

Bardziej szczegółowo

Język PL/SQL. Rozdział 5. Pakiety podprogramów. Dynamiczny SQL

Język PL/SQL. Rozdział 5. Pakiety podprogramów. Dynamiczny SQL Język PL/SQL. Rozdział 5. Pakiety podprogramów. Dynamiczny SQL Pakiety podprogramów, specyfikacja i ciało pakietu, zmienne i kursory pakietowe, pseudoinstrukcje (dyrektywy kompilatora), dynamiczny SQL.

Bardziej szczegółowo

Instrukcja migracji danych z bazy Derby do bazy Oracle

Instrukcja migracji danych z bazy Derby do bazy Oracle Instrukcja migracji danych z bazy Derby do bazy Oracle wersja 5.14.0.2 Wrocław.2015r. Wszelkie prawa zastrzeżone. Dokument może być reprodukowany lub przechowywany bez ograniczeń tylko w całości. Żadna

Bardziej szczegółowo

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1 Bazy danych Wykład IV SQL - wprowadzenie Copyrights by Arkadiusz Rzucidło 1 Czym jest SQL Język zapytań deklaratywny dostęp do danych Składnia łatwa i naturalna Standardowe narzędzie dostępu do wielu różnych

Bardziej szczegółowo

Pracownia internetowa w szkole ZASTOSOWANIA

Pracownia internetowa w szkole ZASTOSOWANIA NR ART/SBS/07/01 Pracownia internetowa w szkole ZASTOSOWANIA Artykuły - serwery SBS i ich wykorzystanie Instalacja i Konfiguracja oprogramowania MOL Optiva na szkolnym serwerze (SBS2000) Artykuł opisuje

Bardziej szczegółowo

Zapewnij sukces swym projektom

Zapewnij sukces swym projektom Zapewnij sukces swym projektom HumanWork PROJECT to aplikacja dla zespołów projektowych, które chcą poprawić swą komunikację, uprościć procesy podejmowania decyzji oraz kończyć projekty na czas i zgodnie

Bardziej szczegółowo

Instrukcja aktualizacji programu Integra 7

Instrukcja aktualizacji programu Integra 7 Instrukcja aktualizacji programu Integra 7 Aktualizacje programu dostępne są na stronach internetowych Integra Software www.integra.com.pl w Strefie Integra Support dla Klientów posiadających aktywny Abonament

Bardziej szczegółowo

Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework

Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework Uniwersytet Zielonogórski Wydział Elektrotechniki, Informatyki i Telekomunikacji Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework mgr inż. Łukasz Stefanowicz dr inż.

Bardziej szczegółowo

Uruchamianie bazy PostgreSQL

Uruchamianie bazy PostgreSQL Uruchamianie bazy PostgreSQL PostgreSQL i PostGIS Ten przewodnik może zostać pobrany jako PostgreSQL_pl.odt lub PostgreSQL_pl.pdf Przejrzano 10.09.2016 W tym rozdziale zobaczymy, jak uruchomić PostgreSQL

Bardziej szczegółowo

Pakiety są logicznymi zbiorami obiektów takich jak podprogramy, typy, zmienne, kursory, wyjątki.

Pakiety są logicznymi zbiorami obiektów takich jak podprogramy, typy, zmienne, kursory, wyjątki. Pakiety Pakiety są logicznymi zbiorami obiektów takich jak podprogramy, typy, zmienne, kursory, wyjątki. Pakiet składa się ze: specyfikacji (interfejsu) i ciała (implementacji). W specyfikacji mieszczą

Bardziej szczegółowo

Procedury składowane. Funkcje vs. procedury Funkcja. Procedura. zazwyczaj ma parametry tylko typu IN; można wywoływać z poziomu

Procedury składowane. Funkcje vs. procedury Funkcja. Procedura. zazwyczaj ma parametry tylko typu IN; można wywoływać z poziomu Procedury składowane Kolejnym typem programu języka PL/SQL są procedury składowane. Procedury mogą posiadać parametry typu IN, OUT lub IN OUT. Umożliwiają wykonanie operacji na danych w bazie, mogą też

Bardziej szczegółowo

Paweł Cieśla. Dokumentacja projektu

Paweł Cieśla. Dokumentacja projektu Paweł Cieśla Dokumentacja projektu Projekt Project1 został utworzony i skompilowany na próbnej wersji Delphi XE 4. Po uruchomieniu programu należy kliknąć przycisk Wczytaj plik tekstowy, następnie wskazać

Bardziej szczegółowo

Oracle Application Express -

Oracle Application Express - Oracle Application Express - Wprowadzenie Wprowadzenie Oracle Application Express (dawniej: HTML DB) to narzędzie do szybkiego tworzenia aplikacji Web owych korzystających z bazy danych Oracle. Od użytkownika

Bardziej szczegółowo

Przypadki testowe. Spis treści. Plan testów. From Sęp. Wstęp. 2 Plan testów

Przypadki testowe. Spis treści. Plan testów. From Sęp. Wstęp. 2 Plan testów Przypadki testowe From Sęp Spis treści 1 Wstęp 2 Plan testów 3 Testy bazy danych 4 Testy serwera 5 Testy aplikacji klienckiej 6 Testy interfejsu webowego 7 Testy integracyjne 8 Testy wydajności 8.1 Baza

Bardziej szczegółowo

Spis treści MONITOR PRACY... 4

Spis treści MONITOR PRACY... 4 Co nowego Spis treści MONITOR PRACY...... 4 Konfiguracja plików... 5 Konfiguracja globalna... 6 Pliki... 6 Projekty... 6 Interfejs użytkownika... 7 Synchronizacja... 7 Typ serwera... 8 Test połączenia...

Bardziej szczegółowo

SAS Institute Technical Support

SAS Institute Technical Support SAS Institute Technical Support Optymalizacja kostek krok po kroku Pracując z kostkami OLAP często nie zdajemy sobie sprawy, że można przygotować je w taki sposób, aby praca z nimi była efektywniejsza

Bardziej szczegółowo

Aplikacje WWW - laboratorium

Aplikacje WWW - laboratorium Aplikacje WWW - laboratorium PHP. Celem ćwiczenia jest przygotowanie prostej aplikacji internetowej wykorzystującej technologię PHP. Aplikacja pokazuje takie aspekty, obsługa formularzy oraz zmiennych

Bardziej szczegółowo

Instalacja i opis podstawowych funkcji programu Dev-C++

Instalacja i opis podstawowych funkcji programu Dev-C++ Instalacja i opis podstawowych funkcji programu Dev-C++ Przed rozpoczęciem programowania musimy zainstalować i przygotować kompilator. Spośród wielu dostępnych kompilatorów polecam aplikację Dev-C++, ze

Bardziej szczegółowo

Przewodnik instalacji i rozpoczynania pracy. Dla DataPage+ 2013

Przewodnik instalacji i rozpoczynania pracy. Dla DataPage+ 2013 Przewodnik instalacji i rozpoczynania pracy Dla DataPage+ 2013 Ostatnia aktualizacja: 25 lipca 2013 Spis treści Instalowanie wymaganych wstępnie komponentów... 1 Przegląd... 1 Krok 1: Uruchamianie Setup.exe

Bardziej szczegółowo

Procedury pozwalające na uproszczenie procesu. projektowania. ZW3D CAD/CAM Biała księga

Procedury pozwalające na uproszczenie procesu. projektowania. ZW3D CAD/CAM Biała księga Procedury pozwalające na uproszczenie procesu projektowania Wstęp Niniejsze opracowanie ukazuje typowy proces projektowania elementów mechanicznych. Ponadto wyjaśni typowe zagadnienia pozwalające uprościć

Bardziej szczegółowo

Przewodnik użytkownika (instrukcja) AutoMagicTest

Przewodnik użytkownika (instrukcja) AutoMagicTest Przewodnik użytkownika (instrukcja) AutoMagicTest 0.1.21.137 1. Wprowadzenie Aplikacja AutoMagicTest to aplikacja wspierająca testerów w testowaniu i kontrolowaniu jakości stron poprzez ich analizę. Aplikacja

Bardziej szczegółowo

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie Część X C++ Typ znakowy służy do reprezentacji pojedynczych znaków ASCII, czyli liter, cyfr, znaków przestankowych i innych specjalnych znaków widocznych na naszej klawiaturze (oraz wielu innych, których

Bardziej szczegółowo

Szpieg 2.0 Instrukcja użytkownika

Szpieg 2.0 Instrukcja użytkownika Szpieg 2.0 Instrukcja użytkownika Spis treści: Wstęp: 1. Informacje o programie 2. Wymagania techniczne Ustawienia: 3. Połączenie z bazą danych 4. Konfiguracja email 5. Administracja Funkcje programu:

Bardziej szczegółowo

Program szkolenia: Continuous Integration i Git

Program szkolenia: Continuous Integration i Git Program szkolenia: Continuous Integration i Git Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Continuous Integration i Git tools-git-ci Narzędzia developerzy testerzy 2 dni 50%

Bardziej szczegółowo

Aproksymacja funkcji a regresja symboliczna

Aproksymacja funkcji a regresja symboliczna Aproksymacja funkcji a regresja symboliczna Problem aproksymacji funkcji polega na tym, że funkcję F(x), znaną lub określoną tablicą wartości, należy zastąpić inną funkcją, f(x), zwaną funkcją aproksymującą

Bardziej szczegółowo

e-audytor v.3.x INSTRUKCJA INSTALACJI I URUCHOMIENIA SYSTEMU

e-audytor v.3.x INSTRUKCJA INSTALACJI I URUCHOMIENIA SYSTEMU Wprowadzenie 1 e-audytor v.3.x INSTRUKCJA INSTALACJI I URUCHOMIENIA SYSTEMU W celu wyłączenia automatycznego QuickStartu należy z poziomu econsole w menu: Narzędzia > Konfiguracja > e-console w Konfiguracji

Bardziej szczegółowo

7. Formularze master-detail

7. Formularze master-detail 7. Formularze master-detail 1. Utworzymy teraz jeden z bardziej złożonych formularzy dostępnych z kreatora formularz master-detail. Będzie on swoją strukturą przypominał utworzony wcześniej formularz dotyczący

Bardziej szczegółowo

Migracja Business Intelligence do wersji

Migracja Business Intelligence do wersji Migracja Business Intelligence do wersji 2016.1 Copyright 2015 COMARCH Wszelkie prawa zastrzeżone Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest

Bardziej szczegółowo