{"id":9260,"date":"2025-12-31T14:19:32","date_gmt":"2025-12-31T13:19:32","guid":{"rendered":"https:\/\/pomoc.comarch.pl\/cee\/?post_type=ht_kb&#038;p=9260"},"modified":"2025-12-31T14:28:21","modified_gmt":"2025-12-31T13:28:21","slug":"zapytania-o-protokoly-profilowania","status":"publish","type":"ht_kb","link":"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/zapytania-o-protokoly-profilowania\/","title":{"rendered":"Zapytania o protoko\u0142y profilowania"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 ez-toc-wrap-left counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Spis tre\u015bci<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Prze\u0142\u0105cznik Spisu Tre\u015bci\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/zapytania-o-protokoly-profilowania\/#Wprowadzenie\" >Wprowadzenie<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/zapytania-o-protokoly-profilowania\/#Grupa_docelowa\" >Grupa docelowa<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/zapytania-o-protokoly-profilowania\/#Opis\" >Opis<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/zapytania-o-protokoly-profilowania\/#Comarch_ERP_Enterprise_Profiler\" >Comarch ERP Enterprise Profiler<\/a><ul class='ez-toc-list-level-5' ><li class='ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/zapytania-o-protokoly-profilowania\/#Funkcje_aplikacji\" >Funkcje aplikacji<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/zapytania-o-protokoly-profilowania\/#Rozpoczecie_profilowania\" >Rozpocz\u0119cie profilowania<\/a><ul class='ez-toc-list-level-6' ><li class='ez-toc-heading-level-6'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/zapytania-o-protokoly-profilowania\/#Narzedzie_Praca_z_profilowaniem_wrkprf\" >Narz\u0119dzie Praca z profilowaniem\u00a0(wrkprf)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-6'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/zapytania-o-protokoly-profilowania\/#Okno_dokowane_Profilowanie\" >Okno dokowane Profilowanie<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/zapytania-o-protokoly-profilowania\/#Opis_aplikacji\" >Opis aplikacji<\/a><ul class='ez-toc-list-level-5' ><li class='ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/zapytania-o-protokoly-profilowania\/#Naglowek\" >Nag\u0142\u00f3wek<\/a><ul class='ez-toc-list-level-6' ><li class='ez-toc-heading-level-6'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/zapytania-o-protokoly-profilowania\/#Menu_rozwijane_Ustawienia_Akcje\" >Menu rozwijane Ustawienia Akcje<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-6'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/zapytania-o-protokoly-profilowania\/#Menu_rozwijane_Ustawienia_Stackframe\" >Menu rozwijane Ustawienia Stackframe<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/zapytania-o-protokoly-profilowania\/#Obszar_roboczy\" >Obszar roboczy<\/a><ul class='ez-toc-list-level-6' ><li class='ez-toc-heading-level-6'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/zapytania-o-protokoly-profilowania\/#Zakladka_Rezultat\" >Zak\u0142adka Rezultat<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-6'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/zapytania-o-protokoly-profilowania\/#Zakladka_Czestotliwosc\" >Zak\u0142adka Cz\u0119stotliwo\u015b\u0107<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-6'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/zapytania-o-protokoly-profilowania\/#Objasnienia_dotyczace_Ustawien\" >Obja\u015bnienia dotycz\u0105ce Ustawie\u0144<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-6'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/zapytania-o-protokoly-profilowania\/#Objasnienia_dotyczace_Operacja\" >Obja\u015bnienia dotycz\u0105ce Operacja<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-6'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/zapytania-o-protokoly-profilowania\/#Objasnienia_dotyczace_Zadania_blokady\" >Obja\u015bnienia dotycz\u0105ce \u017badania blokady<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/zapytania-o-protokoly-profilowania\/#Widoki_na_standardowym_pasku_narzedzi_Poziomy_agregacji\" >Widoki na standardowym pasku narz\u0119dzi: Poziomy agregacji<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/zapytania-o-protokoly-profilowania\/#Okno_dokowane_Sesje\" >Okno dokowane Sesje<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/zapytania-o-protokoly-profilowania\/#Instrukcja_Protokoly_profilowania_dla_akcji_zaleznych_od_aplikacji\" >Instrukcja: Protoko\u0142y profilowania dla akcji zale\u017cnych od aplikacji<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-22\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/zapytania-o-protokoly-profilowania\/#Przyczyny\" >Przyczyny<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-23\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/zapytania-o-protokoly-profilowania\/#Uprawnienia\" >Uprawnienia<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-24\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/zapytania-o-protokoly-profilowania\/#Mozliwosci_specjalne\" >Mo\u017cliwo\u015bci specjalne<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-25\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/zapytania-o-protokoly-profilowania\/#Przyporzadkowania_organizacji\" >Przyporz\u0105dkowania organizacji<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-26\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/zapytania-o-protokoly-profilowania\/#Funkcje_specjalne\" >Funkcje specjalne<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-27\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/zapytania-o-protokoly-profilowania\/#Uprawnienia_dla_partnerow_biznesowych\" >Uprawnienia dla partner\u00f3w biznesowych<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h3 id=\"wprowadzenie\" ><span class=\"ez-toc-section\" id=\"Wprowadzenie\"><\/span>Wprowadzenie<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p data-start=\"0\" data-end=\"447\">W tym artykule opisane jest zar\u00f3wno korzystanie z profilowania, jak i u\u017cycie aplikacji <em data-start=\"91\" data-end=\"127\">Zapytania o protoko\u0142y profilowania<\/em>, za pomoc\u0105 kt\u00f3rej mo\u017cliwa jest analiza protoko\u0142\u00f3w profilowania. Ponadto opisane jest dokowalne okno <em data-start=\"228\" data-end=\"239\">Profilowanie<\/em>, kt\u00f3re umo\u017cliwia aktywowanie oraz dezaktywowanie profilowania bezpo\u015brednio z poziomu interfejsu u\u017cytkownika. Dokowalne okno <em data-start=\"228\" data-end=\"239\">Profilowanie <\/em>stanowi alternatyw\u0119 dla uruchamiania narz\u0119dzia <em data-start=\"423\" data-end=\"446\">Praca z profilowaniem<\/em>.<\/p>\n<p data-start=\"449\" data-end=\"514\">Profilowanie umo\u017cliwia w szczeg\u00f3lno\u015bci rejestrowanie w protokole:<\/p>\n<ul data-start=\"515\" data-end=\"597\">\n<li data-start=\"515\" data-end=\"541\">\n<p data-start=\"517\" data-end=\"541\">dost\u0119p\u00f3w do bazy danych<\/p>\n<\/li>\n<li data-start=\"542\" data-end=\"565\">\n<p data-start=\"544\" data-end=\"565\">pojedynczej akcji<\/p>\n<\/li>\n<li data-start=\"566\" data-end=\"597\">\n<p data-start=\"568\" data-end=\"597\">ograniczonej sekwencji akcji<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"599\" data-end=\"715\">Na podstawie zarejestrowanych danych mo\u017cliwa jest identyfikacja s\u0142abych punkt\u00f3w w implementacji analizowanych akcji.<\/p>\n<p data-start=\"717\" data-end=\"1085\" data-is-last-node=\"\" data-is-only-node=\"\">Protoko\u0142y profilowania powinny by\u0107 wykorzystywane w celu zapewnienia jako\u015bci oraz optymalizacji wydajno\u015bci w systemie deweloperskim lub w systemie test\u00f3w deweloperskich. W przypadku wyst\u0105pienia nag\u0142ego problemu z wydajno\u015bci\u0105 w systemie produkcyjnym, kt\u00f3ry mo\u017cna zaw\u0119zi\u0107 do konkretnej akcji, dopuszcza si\u0119 r\u00f3wnie\u017c wykorzystanie protoko\u0142\u00f3w profilowania na tym \u015brodowisku.<\/p>\n<h3 id=\"grupa-docelowa\" ><span class=\"ez-toc-section\" id=\"Grupa_docelowa\"><\/span>Grupa docelowa<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>Programi\u015bci aplikacji<\/li>\n<li>Konsultanci techniczni<\/li>\n<\/ul>\n<h3 id=\"opis\" ><span class=\"ez-toc-section\" id=\"Opis\"><\/span>Opis<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div class=\"flex flex-col text-sm pb-25\">\n<article class=\"text-token-text-primary w-full focus:outline-none [--shadow-height:45px] has-data-writing-block:pointer-events-none has-data-writing-block:-mt-(--shadow-height) has-data-writing-block:pt-(--shadow-height) [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" dir=\"auto\" tabindex=\"-1\" data-turn-id=\"request-WEB:dff4bb56-01cf-4c6c-9adb-9055d38019a3-33\" data-testid=\"conversation-turn-68\" data-scroll-anchor=\"true\" data-turn=\"assistant\">\n<div class=\"text-base my-auto mx-auto pb-10 [--thread-content-margin:--spacing(4)] @w-sm\/main:[--thread-content-margin:--spacing(6)] @w-lg\/main:[--thread-content-margin:--spacing(16)] px-(--thread-content-margin)\">\n<div class=\"[--thread-content-max-width:40rem] @w-lg\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\" tabindex=\"-1\">\n<div class=\"flex max-w-full flex-col grow\">\n<div class=\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal [.text-message+&amp;]:mt-1\" dir=\"auto\" data-message-author-role=\"assistant\" data-message-id=\"8640e0db-07aa-4297-a2b1-26f6ada5da8f\" data-message-model-slug=\"gpt-5-2\">\n<div class=\"flex w-full flex-col gap-1 empty:hidden first:pt-[1px]\">\n<div class=\"markdown prose dark:prose-invert w-full break-words light markdown-new-styling\">\n<p data-start=\"0\" data-end=\"579\" data-is-last-node=\"\" data-is-only-node=\"\">Do analizy wydajno\u015bci aplikacji kluczowe znaczenie maj\u0105 przede wszystkim rodzaj i liczba odwo\u0142a\u0144 do Persistence service, poniewa\u017c zak\u0142ada si\u0119, \u017ce to one generuj\u0105 najwi\u0119ksz\u0105 cz\u0119\u015b\u0107 koszt\u00f3w wydajno\u015bciowych. W szczeg\u00f3lno\u015bci odwo\u0142ania te s\u0105 silnie zale\u017cne od kontekstu i zazwyczaj rozproszone na dowoln\u0105 liczb\u0119 stale zmieniaj\u0105cych si\u0119 w\u0105tk\u00f3w. Og\u00f3lne narz\u0119dzie do profilowania albo nie by\u0142oby w stanie ich jednoznacznie rozr\u00f3\u017cni\u0107, albo wymaga\u0142oby stosunkowo du\u017cego nak\u0142adu konfiguracji po stronie profilera. Z tego wzgl\u0119du opracowano specjalny profiler dla Persistence service.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<h4 class=\"z-0 flex min-h-[46px] justify-start\" id=\"comarch-erp-enterprise-profiler\" ><span class=\"ez-toc-section\" id=\"Comarch_ERP_Enterprise_Profiler\"><\/span><span style=\"font-size: revert; color: initial;\">Comarch ERP Enterprise Profiler<\/span><span class=\"ez-toc-section-end\"><\/span><\/h4>\n<\/div>\n<\/div>\n<\/article>\n<\/div>\n<p data-start=\"0\" data-end=\"120\">Opracowany profiler rejestruje dla serwera aplikacyjnego akcje Persistence service i dzia\u0142a wed\u0142ug nast\u0119puj\u0105cych krok\u00f3w:<\/p>\n<ul data-start=\"122\" data-end=\"187\">\n<li data-start=\"122\" data-end=\"165\">\n<p data-start=\"124\" data-end=\"165\">utworzenie pliku z danymi profilowania<\/p>\n<\/li>\n<li data-start=\"166\" data-end=\"187\">\n<p data-start=\"168\" data-end=\"187\">analiza pliku<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"189\" data-end=\"466\">Profiler nie umo\u017cliwia zatem natychmiastowej analizy danych profilowania. Najpierw profiler musi utworzy\u0107 plik z danymi profilowania i zako\u0144czy\u0107 rejestrowanie, dopiero potem dane zawarte w pliku mog\u0105 zosta\u0107 poddane analizie. W pliku rejestrowane s\u0105 wszystkie lub wybrane akcje.<\/p>\n<p data-start=\"468\" data-end=\"522\">Rejestrowane s\u0105 nast\u0119puj\u0105ce akcje Persistence service:<\/p>\n<ul data-start=\"524\" data-end=\"846\">\n<li data-start=\"524\" data-end=\"567\">wywo\u0142anie CisObjectManager.getObject<\/li>\n<li data-start=\"524\" data-end=\"567\">wywo\u0142anie CisObjectManager.getObjectIterator<\/li>\n<li data-start=\"524\" data-end=\"567\">wywo\u0142anie CisObjectManager.getResultSet<\/li>\n<li data-start=\"524\" data-end=\"567\">wywo\u0142anie CisObjectManager.getObjectArray<\/li>\n<li data-start=\"524\" data-end=\"567\">dost\u0119p do bazy danych (<em data-start=\"741\" data-end=\"757\">DatabaseAccess<\/em>)<\/li>\n<li data-start=\"762\" data-end=\"807\">\n<p data-start=\"764\" data-end=\"807\">otwarcie transakcji (<em data-start=\"785\" data-end=\"803\">TransactionBegin<\/em>)<\/p>\n<\/li>\n<li data-start=\"808\" data-end=\"846\">\n<p data-start=\"810\" data-end=\"846\">zapytania o blokady (<em data-start=\"831\" data-end=\"844\">AcquireLock<\/em>)<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"848\" data-end=\"1091\">Ka\u017cda akcja jest wykonywana w okre\u015blonym kontek\u015bcie. Kontekst ten posiada z kolei kontekst nadrz\u0119dny, w wyniku czego akcja jest osadzona w hierarchii kontekst\u00f3w. Poni\u017csze konteksty s\u0105 w du\u017cej mierze zdefiniowane przez architektur\u0119 systemu ERP:<\/p>\n<p data-start=\"1093\" data-end=\"1244\"><strong data-start=\"1093\" data-end=\"1115\">Serwer aplikacji<\/strong><br data-start=\"1115\" data-end=\"1118\" \/>Protok\u00f3\u0142 profilowania jest przypisany dok\u0142adnie do tego serwera aplikacji systemu ERP, na kt\u00f3rym uruchomiono profilowanie.<\/p>\n<p data-start=\"1246\" data-end=\"1409\"><strong data-start=\"1246\" data-end=\"1255\">Sesja<\/strong><br data-start=\"1255\" data-end=\"1258\" \/>Sesja mo\u017ce zosta\u0107 otwarta wy\u0142\u0105cznie w kontek\u015bcie serwera aplikacji systemu ERP, tzn. sesja nale\u017cy do konkretnego serwera aplikacji systemu ERP.<\/p>\n<p data-start=\"1411\" data-end=\"1591\"><strong data-start=\"1411\" data-end=\"1434\">Instancja aplikacji<\/strong><br data-start=\"1434\" data-end=\"1437\" \/>Instancja aplikacji mo\u017ce zosta\u0107 otwarta wy\u0142\u0105cznie w kontek\u015bcie sesji, tzn. aplikacja nale\u017cy do sesji. Kontekst ten okre\u015blany jest jako kontekst aplikacji.<\/p>\n<p data-start=\"1593\" data-end=\"1741\"><strong data-start=\"1593\" data-end=\"1607\">Transakcja<\/strong><br data-start=\"1607\" data-end=\"1610\" \/>Transakcja mo\u017ce zosta\u0107 otwarta wy\u0142\u0105cznie w kontek\u015bcie sesji lub aplikacji, tzn. transakcja nale\u017cy albo do aplikacji, albo do sesji.<\/p>\n<p data-start=\"1743\" data-end=\"1933\"><strong data-start=\"1743\" data-end=\"1764\">Funkcja aplikacji<\/strong><br data-start=\"1764\" data-end=\"1767\" \/>Funkcja aplikacji mo\u017ce zosta\u0107 otwarta wy\u0142\u0105cznie w kontek\u015bcie aplikacji, tzn. funkcja aplikacji nale\u017cy do aplikacji. Kontekst ten okre\u015blany jest jako kontekst funkcji.<\/p>\n<p data-start=\"1935\" data-end=\"2175\">Wszystkie akcje Persistence service s\u0105 zawsze rejestrowane w kontek\u015bcie transakcji. Za pomoc\u0105 komponentu analitycznego, aplikacji <em data-start=\"2065\" data-end=\"2101\">Zapytanie o protoko\u0142y profilowania<\/em>, wszystkie akcje mog\u0105 by\u0107 agregowane na dowolnym poziomie szczeg\u00f3\u0142owo\u015bci.<\/p>\n<p data-start=\"2177\" data-end=\"2598\">Profilowanie mierzy przede wszystkim operacje wed\u0142ug ich z\u0142o\u017cono\u015bci, a nie czasy wykonania. Pomiar czasu jest ma\u0142o celowy, poniewa\u017c obejmuje r\u00f3wnie\u017c w\u0142a\u015bciwo\u015bci \u015brodowiska pomiarowego, a wyniki uzyskane w r\u00f3\u017cnych \u015brodowiskach testowych s\u0105 s\u0142abo por\u00f3wnywalne. Poniewa\u017c jednak znany jest nak\u0142ad zwi\u0105zany z poszczeg\u00f3lnymi operacjami, liczba operacji dostarcza co najmniej tak samo warto\u015bciowej informacji jak czas wykonania.<\/p>\n<p data-start=\"2612\" data-end=\"3183\" data-is-last-node=\"\" data-is-only-node=\"\"><section class=\"document-alert-box warning\"><div class=\"document-alert-title\">Uwaga<\/div><div class=\"document-alert-content\">Je\u017celi protoko\u0142y profilowania s\u0105 rejestrowane w systemie produkcyjnym, nale\u017cy uruchamia\u0107 je wy\u0142\u0105cznie na specjalnie do tego przeznaczonym serwerze aplikacji systemu ERP. Serwer ten nie powinien realizowa\u0107 \u017cadnych innych funkcji poza rejestrowaniem protoko\u0142\u00f3w profilowania. Wydajno\u015b\u0107 serwera aplikacji systemu ERP jest znacz\u0105co obni\u017cana podczas rejestrowania protoko\u0142\u00f3w profilowania. Na systemach innych ni\u017c deweloperskie dodatkowo wymagana jest specjalna, administracyjna zdolno\u015b\u0107 do rejestrowania protoko\u0142\u00f3w profilowania. Szczeg\u00f3\u0142y w rozdziale <a href=\"#specjalne\"><em>Mo\u017cliwo\u015bci specjalne<\/em><\/a>.<\/div><\/section><\/p>\n<h5 id=\"funkcje-aplikacji\" ><span class=\"ez-toc-section\" id=\"Funkcje_aplikacji\"><\/span>Funkcje aplikacji<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p data-start=\"0\" data-end=\"334\">Zazwyczaj w obr\u0119bie aplikacji tylko okre\u015blone obszary s\u0105 istotne z punktu widzenia profilowania. Oznaczenie takiego obszaru umo\u017cliwia jego szczeg\u00f3lne wyr\u00f3\u017cnienie w protokole profilowania dla danego zapisu profilowania, dzi\u0119ki czemu mo\u017cna precyzyjnie ustali\u0107, jakie akcje oraz w jakiej liczbie zosta\u0142y wykonane w ramach danego obszaru.<\/p>\n<p data-start=\"336\" data-end=\"592\" data-is-last-node=\"\" data-is-only-node=\"\">Aby obszary, kt\u00f3re maj\u0105 by\u0107 w protokole wyr\u00f3\u017cnione, by\u0142y widoczne dla profilera, do dyspozycji s\u0105 metody <em data-start=\"441\" data-end=\"457\">profilingBegin<\/em> oraz <em data-start=\"463\" data-end=\"477\">profilingEnd<\/em> w <em data-start=\"480\" data-end=\"503\">CisApplicationManager<\/em>. Metody te s\u0142u\u017c\u0105 do oznaczenia pocz\u0105tku i ko\u0144ca obszaru oraz do nadania nazwy obszarowi.<\/p>\n<section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\"><\/p>\n<p>CisApplicationManager am;<\/p>\n<p>byte[] prfValidate;<\/p>\n<p>am = CisEnvironment.getInstance().getApplicationManager();<\/p>\n<p>prfValidate =<\/p>\n<p>am.profilingBegin(this.getClass().getName()+&#8221;:validate&#8221;);<\/p>\n<p>try {<\/p>\n<p>&#8230;<\/p>\n<p>} finally {<\/p>\n<p>am.profilingEnd(prfValidate);<\/p>\n<p>}<\/p>\n<p><\/div><\/section>\n<p data-start=\"0\" data-end=\"296\">Funkcje aplikacji s\u0105 podporz\u0105dkowane aplikacji. Ka\u017cda akcja jest podczas analizy liczona zar\u00f3wno w kontek\u015bcie aplikacji, jak i w odpowiednim kontek\u015bcie funkcji. Przy wy\u0142\u0105czonym profilowaniu wywo\u0142anie metod powoduje tak niewielki narzut czasowy, \u017ce mo\u017ce ono pozosta\u0107 r\u00f3wnie\u017c w kodzie produkcyjnym.<\/p>\n<p data-start=\"298\" data-end=\"405\" data-is-last-node=\"\" data-is-only-node=\"\">Wprowadzenie funkcji aplikacji jest jedyn\u0105 mo\u017cliwo\u015bci\u0105 grupowania zlicze\u0144 wed\u0142ug funkcjonalno\u015bci aplikacji.<\/p>\n<h5 id=\"rozpoczecie-profilowania\" ><span class=\"ez-toc-section\" id=\"Rozpoczecie_profilowania\"><\/span>Rozpocz\u0119cie profilowania<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Profilowanie mo\u017cna uruchomi\u0107 na r\u00f3\u017cne sposoby w celu zarejestrowania protoko\u0142u profilowania. W wyniku rejestracji tworzony jest plik, kt\u00f3ry mo\u017ce zosta\u0107 poddany analizie w aplikacji <em data-start=\"218\" data-end=\"254\">Zapytanie o protoko\u0142y profilowania<\/em>.<\/p>\n<h6 data-start=\"0\" data-end=\"57\" id=\"narzedzie-praca-z-profilowaniem-wrkprf\" ><span class=\"ez-toc-section\" id=\"Narzedzie_Praca_z_profilowaniem_wrkprf\"><\/span><strong data-start=\"0\" data-end=\"57\">Narz\u0119dzie <em data-start=\"20\" data-end=\"44\">Praca z profilowaniem<\/em>\u00a0(<em data-start=\"46\" data-end=\"54\">wrkprf<\/em>)<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h6>\n<p data-start=\"59\" data-end=\"194\">Profiler jest sterowany za pomoc\u0105 polecenia toolshell <a href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/praca-z-profilowaniem\/\"><em data-start=\"113\" data-end=\"121\">wrkprf<\/em><\/a>.<\/p>\n<p data-start=\"196\" data-end=\"224\"><strong data-start=\"196\" data-end=\"224\">Najwa\u017cniejsze parametry:<\/strong><\/p>\n<ul>\n<li><strong>wrkprf -start:&lt;nazwa pliku&gt;<\/strong> &#8211; uruchamia profilowanie na serwerze aplikacji systemu ERP i zapisuje dane w pliku (np. wrkprf -start:c:\\temp\\profiling.dat).<\/li>\n<li><strong>wrkprf -stop<\/strong> &#8211; zatrzymuje profilowanie na serwerze aplikacji systemu ERP i zwalnia plik profilowania.<\/li>\n<\/ul>\n<p>Po uruchomieniu profilera dane dla ka\u017cdej nowej sesji s\u0105 rejestrowane, tzn. nale\u017cy zalogowa\u0107 si\u0119 do serwera aplikacji systemu ERP za po\u015brednictwem nowego okna przegl\u0105darki.<\/p>\n<section class=\"document-alert-box warning\"><div class=\"document-alert-title\">Uwaga<\/div><div class=\"document-alert-content\">Plik dziennika profilowania jest przechowywany na lokalnym no\u015bniku danych serwera aplikacji systemu ERP. Dlatego przy wyborze nazwy pliku nale\u017cy upewni\u0107 si\u0119, \u017ce wa\u017cne pliki lokalne nie zostan\u0105 niepotrzebnie nadpisane.<\/div><\/section>\n<section class=\"document-alert-box warning\"><div class=\"document-alert-title\">Uwaga<\/div><div class=\"document-alert-content\">Aplikacja <em data-start=\"218\" data-end=\"254\">Zapytanie o protoko\u0142y profilowania<\/em> powinna by\u0107 otwarta na serwerze aplikacji systemu ERP, kt\u00f3ry utworzy\u0142 dziennik profilowania. Nie nale\u017cy aktywowa\u0107 profilowania na serwerze aplikacji systemu ERP, na kt\u00f3rym u\u017cytkownicy pracuj\u0105.<\/div><\/section>\n<p>Je\u015bli mierzona ma by\u0107 tylko okre\u015blona funkcjonalno\u015b\u0107 programu bez definiowania funkcji aplikacji, profilowanie mo\u017cna zatrzyma\u0107 i wznowi\u0107. Do tego celu s\u0142u\u017c\u0105 nast\u0119puj\u0105ce polecenia:<\/p>\n<ul>\n<li><strong>wrkprf -pause<\/strong> &#8211; rejestrowanie dzia\u0142a\u0144 jest zawieszone.<\/li>\n<li><strong>wrkprf -resume<\/strong> &#8211; rejestrowanie akcji jest wznawiane.<\/li>\n<\/ul>\n<p data-start=\"1503\" data-end=\"1726\">Polecenia te mog\u0105 by\u0107 wykonywane dowoln\u0105 liczb\u0119 razy. Umo\u017cliwia to uruchomienie aplikacji poprzez interfejs u\u017cytkownika a\u017c do mierzonego obszaru, a nast\u0119pnie celowe w\u0142\u0105czenie profilowania wy\u0142\u0105cznie dla wyr\u00f3\u017cnionego obszaru.<\/p>\n<p data-start=\"1728\" data-end=\"1827\">Analiza protoko\u0142u profilowania odbywa si\u0119 za pomoc\u0105 aplikacji <em data-start=\"1790\" data-end=\"1826\">Zapytanie o protoko\u0142y profilowania<\/em>.<\/p>\n<p data-start=\"1841\" data-end=\"2123\" data-is-last-node=\"\" data-is-only-node=\"\"><section class=\"document-alert-box warning\"><div class=\"document-alert-title\">Uwaga<\/div><div class=\"document-alert-content\">Je\u017celi zachodzi potrzeba przetestowania nowo opracowanego kodu bez jego natychmiastowego w\u0142\u0105czania do aplikacji, pomocny jest parametr <em data-start=\"1976\" data-end=\"1994\">-attachToolshell<\/em> tego narz\u0119dzia. Umo\u017cliwia on uruchamianie i rejestrowanie dowolnego kodu za pomoc\u0105 klasy pomocniczej zawieraj\u0105cej metod\u0119 <em data-start=\"2116\" data-end=\"2122\">main<\/em>.<\/div><\/section><\/p>\n<h6 id=\"okno-dokowane-profilowanie\" ><span class=\"ez-toc-section\" id=\"Okno_dokowane_Profilowanie\"><\/span>Okno dokowane <em>Profilowanie<\/em><span class=\"ez-toc-section-end\"><\/span><\/h6>\n<p data-start=\"40\" data-end=\"419\">Okno dokowalne <em>Profilowanie<\/em> umo\u017cliwia uruchomienie profilowania z poziomu interfejsu u\u017cytkownika i tym samym wygenerowanie protoko\u0142u profilowania. Okno to jest niezale\u017cne od aplikacji <em data-start=\"223\" data-end=\"259\">Zapytanie o protoko\u0142y profilowania<\/em> i jest og\u00f3lnie dost\u0119pne, o ile zosta\u0142a przyznana odpowiednia zdolno\u015b\u0107 uprawniaj\u0105ca do jego u\u017cycia. Szczeg\u00f3\u0142y w rozdziale <a href=\"#specjalne\"><em>Mo\u017cliwo\u015bci specjalne<\/em><\/a>.<\/p>\n<p data-start=\"421\" data-end=\"489\">Okno dokowalne zawiera elementy opisane w nast\u0119puj\u0105cych rozdzia\u0142ach:<\/p>\n<ul data-start=\"491\" data-end=\"521\" data-is-last-node=\"\" data-is-only-node=\"\">\n<li data-start=\"491\" data-end=\"499\">\n<p data-start=\"493\" data-end=\"499\"><em><a href=\"#pola\">Pola<\/a><\/em><\/p>\n<\/li>\n<li data-start=\"500\" data-end=\"509\">\n<p data-start=\"502\" data-end=\"509\"><em><a href=\"#Lista\">Lista<\/a><\/em><\/p>\n<\/li>\n<li data-start=\"510\" data-end=\"521\" data-is-last-node=\"\">\n<p data-start=\"512\" data-end=\"521\" data-is-last-node=\"\"><em><a href=\"#Przyciski\">Przyciski<\/a><\/em><\/p>\n<\/li>\n<\/ul>\n<p><a id=\"pola\"><\/a><strong>Pola<\/strong><\/p>\n<table style=\"width: 100%; height: 866px;\">\n<thead>\n<tr style=\"height: 23px;\">\n<td style=\"height: 23px; border-style: outset;\"><strong>Pole<\/strong><\/td>\n<td style=\"height: 23px; border-style: outset;\"><strong>Obja\u015bnienie<\/strong><\/td>\n<\/tr>\n<\/thead>\n<tbody>\n<tr style=\"height: 215px;\">\n<td style=\"height: 215px; border-style: outset;\">Protok\u00f3\u0142 profilowania<\/td>\n<td style=\"height: 215px; border-style: outset;\">W polu <em>Protok\u00f3\u0142 profilowania<\/em> nale\u017cy wprowadzi\u0107 nazw\u0119 pliku wraz ze \u015bcie\u017ck\u0105 dost\u0119pu dla rejestrowanego protoko\u0142u lub wybra\u0107 ju\u017c istniej\u0105cy plik za pomoc\u0105 pomocy warto\u015bci. Nale\u017cy zwr\u00f3ci\u0107 uwag\u0119, \u017ce plik jest zapisywany w <em>Knowledge Store<\/em>, a \u015bcie\u017cka pliku ma nast\u0119puj\u0105cy wzorzec: kstore:\/\/{baza_danych}\/{folder}\/{nazwa_pliku}<section class=\"document-alert-box warning\"><div class=\"document-alert-title\">Uwaga<\/div><div class=\"document-alert-content\">Zalecany jest format pliku <em>.dat<\/em>.<\/div><\/section><\/td>\n<\/tr>\n<tr style=\"height: 421px;\">\n<td style=\"height: 421px; border-style: outset;\">Akcje<\/td>\n<td style=\"height: 421px; border-style: outset;\">W tym polu wybiera si\u0119, kt\u00f3re akcje maj\u0105 by\u0107 rejestrowane.Dost\u0119pne s\u0105 nast\u0119puj\u0105ce opcje:<\/p>\n<ul>\n<li>\u017b\u0105danie blokady<\/li>\n<li>Dost\u0119p do bazy danych<\/li>\n<li>ObjectManager.getObject<\/li>\n<li>ObjectManager.getObjectArray<\/li>\n<li>ObjectManager.getResultSet<\/li>\n<li>ObjectManager.getObjectIterator<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><a id=\"Lista\"><\/a><strong>Lista<\/strong><\/p>\n<p data-start=\"0\" data-end=\"492\">Na li\u015bcie w oknie dokowalnym mo\u017cna doda\u0107 w pe\u0142ni kwalifikowane nazwy obiekt\u00f3w biznesowych, kt\u00f3re maj\u0105 by\u0107 rejestrowane w spos\u00f3b szczeg\u00f3lny, gdy dana akcja jest zapisywana. Je\u017celi w jednej z rejestrowanych akcji wyst\u0105pi wskazany ci\u0105g znak\u00f3w, np. jako nazwa u\u017cywanego obiektu biznesowego albo jako u\u017cywany ci\u0105g OQL lub SQL, w\u00f3wczas dodatkowo zapisywana jest informacja o ramce stosu (<em data-start=\"382\" data-end=\"395\">stack frame<\/em>). Dzi\u0119ki temu mo\u017cliwe jest okre\u015blenie miejsca w kodzie \u017ar\u00f3d\u0142owym, z kt\u00f3rego nast\u0105pi\u0142o wywo\u0142anie.<\/p>\n<p data-start=\"494\" data-end=\"562\">Dla listy dost\u0119pne s\u0105 nast\u0119puj\u0105ce przyciski na pasku narz\u0119dzi listy:<\/p>\n<p data-start=\"564\" data-end=\"804\"><strong data-start=\"564\" data-end=\"572\">Nowy<\/strong><br data-start=\"572\" data-end=\"575\" \/>Akcja <em data-start=\"581\" data-end=\"587\">Nowy<\/em> umo\u017cliwia dodanie nowego obiektu biznesowego do listy. Po naci\u015bni\u0119ciu przycisku dodawany jest nowy wiersz listy. W razie potrzeby mo\u017cna skorzysta\u0107 z pomocy warto\u015bci, aby wyszuka\u0107 obiekt biznesowy i doda\u0107 go do listy.<\/p>\n<p data-start=\"806\" data-end=\"954\"><strong data-start=\"806\" data-end=\"814\">Usu\u0144<\/strong><br data-start=\"814\" data-end=\"817\" \/>Za pomoc\u0105 przycisku <em data-start=\"837\" data-end=\"843\">Usu\u0144 zarejestrowane wpisy<\/em> mo\u017cna usun\u0105\u0107 z listy wcze\u015bniej zaznaczony wiersz, a tym samym wykluczy\u0107 dany obiekt biznesowy z rejestrowania.<\/p>\n<p data-start=\"956\" data-end=\"1007\" data-is-last-node=\"\" data-is-only-node=\"\">Lista okna dokowalnego zawiera nast\u0119puj\u0105c\u0105 kolumn\u0119:<\/p>\n<table>\n<thead>\n<tr>\n<td style=\"border-style: outset;\"><strong>Kolumna<\/strong><\/td>\n<td style=\"border-style: outset;\"><strong>Obja\u015bnienie<\/strong><\/td>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"border-style: outset;\">Typ<\/td>\n<td style=\"border-style: outset;\">W tej kolumnie mo\u017cna doda\u0107 w pe\u0142ni kwalifikowane nazwy obiekt\u00f3w biznesowych, kt\u00f3re maj\u0105 by\u0107 rejestrowane w spos\u00f3b szczeg\u00f3lny. Je\u017celi w jednej z rejestrowanych akcji wyst\u0105pi wskazany ci\u0105g znak\u00f3w, np. jako nazwa u\u017cywanego obiektu biznesowego albo jako u\u017cywany ci\u0105g OQL lub SQL, w\u00f3wczas dodatkowo zapisywana jest informacja o ramce stosu (<em>stack frame<\/em>).<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong><a id=\"Przyciski\"><\/a>Przyciski<\/strong><\/p>\n<p data-start=\"414\" data-end=\"577\">Dost\u0119pne przyciski:<\/p>\n<ul>\n<li data-start=\"414\" data-end=\"577\"><strong data-start=\"414\" data-end=\"453\">Rozpocznij rejestrowanie<\/strong> &#8211; za pomoc\u0105 tego przycisku uruchamiane jest rejestrowanie. Odpowiada to wywo\u0142aniu narz\u0119dzia: wrkprf -start:&lt;nazwa_pliku&gt;.<\/li>\n<li data-start=\"414\" data-end=\"577\"><strong style=\"font-size: revert; color: initial;\" data-start=\"579\" data-end=\"615\"><em data-start=\"590\" data-end=\"613\">Zako\u0144cz rejestrowanie<\/em><\/strong><em data-start=\"590\" data-end=\"613\"> &#8211; z<\/em>a pomoc\u0105 tego przycisku zatrzymywane jest rejestrowanie. Odpowiada to wywo\u0142aniu narz\u0119dzia: wrkprf -stop.<\/li>\n<li data-start=\"414\" data-end=\"577\"><strong style=\"font-size: revert; color: initial;\" data-start=\"727\" data-end=\"769\">\u00a0<em data-start=\"738\" data-end=\"767\">Otw\u00f3rz aplikacj\u0119 do analizy<\/em><\/strong><em data-start=\"738\" data-end=\"767\"> &#8211; z<\/em>a pomoc\u0105 tego przycisku nast\u0119puje przej\u015bcie do aplikacji <em style=\"font-size: revert; color: initial;\" data-start=\"830\" data-end=\"866\">Zapytanie o protoko\u0142y profilowania<\/em><span style=\"font-size: revert; color: initial;\">. Otwierany jest plik wskazany w polu <\/span><em style=\"font-size: revert; color: initial;\" data-start=\"904\" data-end=\"927\">Protok\u00f3\u0142 profilowania<\/em><span style=\"font-size: revert; color: initial;\">. Je\u017celi wskazany plik nie zosta\u0142 utworzony za pomoc\u0105 profilowania, aplikacja zostanie otwarta bez za\u0142adowania danego protoko\u0142u.<\/span><\/li>\n<\/ul>\n<h4 id=\"opis-aplikacji\" ><span class=\"ez-toc-section\" id=\"Opis_aplikacji\"><\/span>Opis aplikacji<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p data-start=\"24\" data-end=\"161\">Aplikacja <em data-start=\"34\" data-end=\"70\">Zapytanie o protoko\u0142y profilowania<\/em> s\u0142u\u017cy do analizy danych profilowania. Sk\u0142ada si\u0119 z nag\u0142\u00f3wka i obszaru roboczego.<\/p>\n<h5 id=\"naglowek\" ><span class=\"ez-toc-section\" id=\"Naglowek\"><\/span>Nag\u0142\u00f3wek<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Nag\u0142\u00f3wek obejmuje wskazanie pliku protoko\u0142u przeznaczonego do analizy oraz dodatkowe ustawienia dotycz\u0105ce danych wy\u015bwietlanych w obszarze roboczym. Dost\u0119pne pola:<\/p>\n<p><strong>Protok\u00f3\u0142 profilowania<\/strong> &#8211; nale\u017cy wprowadzi\u0107 nazw\u0119 pliku wraz ze \u015bcie\u017ck\u0105 dost\u0119pu do pliku protoko\u0142u, kt\u00f3ry ma zosta\u0107 poddany analizie. Alternatywnie mo\u017cna wybra\u0107 plik za pomoc\u0105 pomocy warto\u015bci. Nale\u017cy zwr\u00f3ci\u0107 uwag\u0119, \u017ce plik jest zapisywany w Knowledge Store, a \u015bcie\u017cka pliku ma nast\u0119puj\u0105cy wzorzec: kstore:\/\/{baza_danych}\/{folder}\/{nazwa_pliku}.<\/p>\n<section class=\"document-alert-box warning\"><div class=\"document-alert-title\">Uwaga<\/div><div class=\"document-alert-content\">Analizowa\u0107 mo\u017cna wy\u0142\u0105cznie pliki, kt\u00f3re zosta\u0142y zarejestrowane przy u\u017cyciu narz\u0119dzi udost\u0119pnionych przez Comarch ERP Enterprise.<\/div><\/section>\n<p><strong>Sesja<\/strong> &#8211; w\u00a0polu <em>Sesja<\/em> wy\u015bwietlana jest sesja, do kt\u00f3rej odnosi si\u0119 analiza. Podczas otwierania protoko\u0142u profilowania wy\u015bwietlana jest pierwsza sesja dost\u0119pna w pliku. Sesji nie mo\u017cna zmieni\u0107 bezpo\u015brednio w tym polu. Zmiana sesji odbywa si\u0119 poprzez wyb\u00f3r innej sesji w oknie dokowanym <em>Sesje<\/em>.<\/p>\n<p>Aplikacja &#8211; w\u00a0polu <em>Aplikacja<\/em> mo\u017cna wprowadzi\u0107 jedn\u0105 lub wi\u0119cej nazw aplikacji, aby ograniczy\u0107 analiz\u0119 \u2013 a tym samym list\u0119 wynik\u00f3w \u2013 do tych aplikacji. Alternatywnie nazw\u0119 aplikacji mo\u017cna wybra\u0107 w oknie dokowanym <em>Sesje<\/em>, gdzie jest ona wy\u015bwietlana jako podfolder folderu sesji.\u00a0Je\u017celi pole pozostanie puste, wy\u015bwietlane dane dotycz\u0105 wszystkich aplikacji.<\/p>\n<p><strong>Funkcja<\/strong> &#8211; w polu <em>Funkcja<\/em> mo\u017cna wprowadzi\u0107 jedn\u0105 lub wi\u0119cej nazw funkcji, aby ograniczy\u0107 analiz\u0119 do tych funkcji. Alternatywnie funkcj\u0119 mo\u017cna wybra\u0107 w oknie dokowalnym <em>Sesje<\/em>. W oknie dokowanym funkcja jest wy\u015bwietlana pod folderem <em>Aplikacja<\/em>. Je\u017celi pole pozostanie puste, wy\u015bwietlane dane dotycz\u0105 wszystkich funkcji.<\/p>\n<h6 id=\"menu-rozwijane-ustawienia-akcje\" ><span class=\"ez-toc-section\" id=\"Menu_rozwijane_Ustawienia_Akcje\"><\/span>Menu rozwijane <em>Ustawienia Akcje<\/em><span class=\"ez-toc-section-end\"><\/span><\/h6>\n<p>Dost\u0119pne pola w sekcji <em>Filtry<\/em>:<\/p>\n<p><strong>Akcje<\/strong> &#8211; w polu <em data-start=\"7\" data-end=\"16\">Akcje<\/em> okre\u015bla si\u0119, kt\u00f3re akcje maj\u0105 zosta\u0107 poddane analizie i wy\u015bwietlone na li\u015bcie wynik\u00f3w.<br data-start=\"103\" data-end=\"106\" \/>Nale\u017cy wybra\u0107 spo\u015br\u00f3d nast\u0119puj\u0105cych pozycji:<\/p>\n<ul>\n<li>getObject<\/li>\n<li>getObjectIterator<\/li>\n<li>getResultSet<\/li>\n<li>getObjectArray<\/li>\n<li>Dost\u0119p do bazy danych<\/li>\n<li>Rozpocz\u0119cie transakcji<\/li>\n<li>\u017b\u0105danie blokady<\/li>\n<\/ul>\n<p><strong>Agregacje<\/strong> &#8211; w tym polu okre\u015bla si\u0119 spos\u00f3b agregacji danych dla akcji w celu zoptymalizowania listy wynik\u00f3w danych analitycznych. Nale\u017cy wybra\u0107 spo\u015br\u00f3d nast\u0119puj\u0105cych pozycji:<\/p>\n<ul data-start=\"165\" data-end=\"244\">\n<li data-start=\"165\" data-end=\"180\">\n<p data-start=\"167\" data-end=\"180\">Baza danych<\/p>\n<\/li>\n<li data-start=\"181\" data-end=\"190\">\n<p data-start=\"183\" data-end=\"190\">Klucz<\/p>\n<\/li>\n<li data-start=\"191\" data-end=\"205\">\n<p data-start=\"193\" data-end=\"205\">Ustawienia<\/p>\n<\/li>\n<li data-start=\"206\" data-end=\"218\">\n<p data-start=\"208\" data-end=\"218\">Operacja<\/p>\n<\/li>\n<li data-start=\"219\" data-end=\"244\">\n<p data-start=\"221\" data-end=\"244\">Informacja o dost\u0119pie<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"261\" data-end=\"468\"><section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\"><\/p>\n<p data-start=\"261\" data-end=\"468\">Podczas rejestrowania rozr\u00f3\u017cniane jest, kt\u00f3ry klucz zosta\u0142 u\u017cyty do dost\u0119pu do obiektu (<em data-start=\"349\" data-end=\"360\">getObject<\/em>). Je\u017celi ta rozdzielona informacja ma zosta\u0107 wy\u015bwietlona na li\u015bcie wynik\u00f3w analizy, nale\u017cy wybra\u0107 ten wpis.<\/p>\n<p data-start=\"470\" data-end=\"678\">Je\u017celi natomiast ma zosta\u0107 przeanalizowana suma dost\u0119p\u00f3w na li\u015bcie wynik\u00f3w, nie nale\u017cy wybiera\u0107 wpisu <em data-start=\"572\" data-end=\"579\">Klucz<\/em> w tym polu. W takim przypadku na li\u015bcie wynik\u00f3w nie b\u0119dzie ju\u017c rozr\u00f3\u017cnienia wed\u0142ug u\u017cytego klucza.<\/p>\n<p data-start=\"261\" data-end=\"468\"><\/div><\/section><\/p>\n<p data-start=\"692\" data-end=\"942\" data-is-last-node=\"\" data-is-only-node=\"\"><section class=\"document-alert-box warning\"><div class=\"document-alert-title\">Uwaga<\/div><div class=\"document-alert-content\">Je\u017celi dana akcja nie odnosi si\u0119 do klucza, nie wyst\u0119puje \u017cadna r\u00f3\u017cnica. W przypadku dost\u0119pu przez <em data-start=\"791\" data-end=\"802\">ResultSet<\/em> nie jest rejestrowana informacja o u\u017cytym kluczu. W zwi\u0105zku z tym ustawienie agregacji <em data-start=\"890\" data-end=\"897\">Klucz<\/em> nie powoduje w tym przypadku \u017cadnej r\u00f3\u017cnicy.<\/div><\/section><\/p>\n<p><strong>Filtruj do<\/strong> &#8211; w tym polu mo\u017cna okre\u015bli\u0107 agregacj\u0119, wed\u0142ug kt\u00f3rej lista wynik\u00f3w ma by\u0107 filtrowana. Je\u017celi dla danej akcji wybrane kryterium nie wyst\u0119puje (np. akcja nie odnosi si\u0119 do klucza), w\u00f3wczas kryterium to jest ignorowane dla tej akcji.<\/p>\n<p data-start=\"241\" data-end=\"283\">Nale\u017cy wybra\u0107 jedn\u0105 z nast\u0119puj\u0105cych opcji:<\/p>\n<ul data-start=\"285\" data-end=\"362\" data-is-last-node=\"\" data-is-only-node=\"\">\n<li data-start=\"285\" data-end=\"300\">\n<p data-start=\"287\" data-end=\"300\">Baza danych<\/p>\n<\/li>\n<li data-start=\"301\" data-end=\"310\">\n<p data-start=\"303\" data-end=\"310\">Klucz<\/p>\n<\/li>\n<li data-start=\"311\" data-end=\"325\">\n<p data-start=\"313\" data-end=\"325\">Ustawienia<\/p>\n<\/li>\n<li data-start=\"326\" data-end=\"338\">\n<p data-start=\"328\" data-end=\"338\">Operacja<\/p>\n<\/li>\n<li data-start=\"339\" data-end=\"362\" data-is-last-node=\"\">\n<p data-start=\"341\" data-end=\"362\" data-is-last-node=\"\">Informacja o dost\u0119pie<\/p>\n<\/li>\n<\/ul>\n<p><strong>Warto\u015b\u0107 filtra<\/strong> &#8211; w tym polu nale\u017cy wprowadzi\u0107 warto\u015b\u0107 odnosz\u0105c\u0105 si\u0119 do kolumny listy wynik\u00f3w wybranej w polu <em data-start=\"105\" data-end=\"119\">Filtruj do<\/em>, aby dodatkowo zaw\u0119zi\u0107 i zoptymalizowa\u0107 list\u0119 wynik\u00f3w. W odniesieniu do warto\u015bci nale\u017cy uwzgl\u0119dni\u0107 obja\u015bnienia dotycz\u0105ce kolumn listy wynik\u00f3w.<\/p>\n<h6 id=\"menu-rozwijane-ustawienia-stackframe\" ><span class=\"ez-toc-section\" id=\"Menu_rozwijane_Ustawienia_Stackframe\"><\/span>Menu rozwijane <em>Ustawienia Stackframe<\/em><span class=\"ez-toc-section-end\"><\/span><\/h6>\n<p>Je\u017celi protok\u00f3\u0142 profilowania zawiera informacje o <em data-start=\"119\" data-end=\"132\">stackframes<\/em>, w tym obszarze mo\u017cna skonfigurowa\u0107 odpowiednie ustawienia. Dost\u0119pne pola w sekcji<\/p>\n<p><strong><em>Filtry<\/em><\/strong><\/p>\n<p><strong data-start=\"0\" data-end=\"36\">Informacja o stackframe jest dost\u0119pna<\/strong> (pole wyboru) &#8211; za pomoc\u0105 tej funkcji okre\u015bla si\u0119, \u017ce na li\u015bcie wynik\u00f3w dane maj\u0105 by\u0107 wy\u015bwietlane z uwzgl\u0119dnieniem r\u00f3\u017cnych informacji o <em data-start=\"191\" data-end=\"203\">stackframe<\/em>.<\/p>\n<p data-start=\"207\" data-end=\"890\"><strong data-start=\"207\" data-end=\"226\">Filtr w\u0142\u0105czenia <\/strong>&#8211; w\u00a0tym polu okre\u015bla si\u0119, kt\u00f3re obiekty biznesowe, dla kt\u00f3rych w protokole profilowania zarejestrowano stackframe, maj\u0105 zosta\u0107 uwzgl\u0119dnione w zapytaniu w celu optymalizacji listy wynik\u00f3w i zaw\u0119\u017cenia analizy. Mo\u017cna wprowadzi\u0107 wiele obiekt\u00f3w biznesowych za pomoc\u0105 przycisku z ikon\u0105 rombu znajduj\u0105cego si\u0119 przed tym polem. Alternatywnie mo\u017cliwe jest przej\u0119cie zaznaczonego wiersza z listy wynik\u00f3w do tego pola za pomoc\u0105 przycisku <strong>Filtr w\u0142\u0105czenia stackframe<\/strong> na pasku narz\u0119dzi listy wynik\u00f3w.<br data-start=\"715\" data-end=\"718\" \/>Podczas analizy uwzgl\u0119dniane s\u0105 wy\u0142\u0105cznie te stackframe\u2019y, dla kt\u00f3rych co najmniej jeden element \u015bladu stosu (<em data-start=\"828\" data-end=\"840\">stacktrace<\/em>) spe\u0142nia przynajmniej jeden z warunk\u00f3w w\u0142\u0105czenia.<\/p>\n<p data-start=\"892\" data-end=\"1555\"><strong data-start=\"892\" data-end=\"912\">Filtr wy\u0142\u0105czenia &#8211; <\/strong>w\u00a0tym polu okre\u015bla si\u0119, kt\u00f3re obiekty biznesowe, dla kt\u00f3rych w protokole profilowania zarejestrowano stackframe, maj\u0105 zosta\u0107 wykluczone z zapytania w celu optymalizacji listy wynik\u00f3w i zaw\u0119\u017cenia analizy. Mo\u017cna wprowadzi\u0107 wiele obiekt\u00f3w biznesowych za pomoc\u0105 przycisku z ikon\u0105 rombu znajduj\u0105cego si\u0119 przed tym polem. Alternatywnie mo\u017cliwe jest przej\u0119cie zaznaczonego wiersza z listy wynik\u00f3w do tego pola za pomoc\u0105 przycisku<strong> Filtr wy\u0142\u0105czenia stackframe <\/strong>na pasku narz\u0119dzi listy wynik\u00f3w.<br data-start=\"1400\" data-end=\"1403\" \/>Podczas analizy wykluczane s\u0105 tylko te stackframe\u2019y, dla kt\u00f3rych co najmniej jeden element stacktrace spe\u0142nia przynajmniej jeden z warunk\u00f3w wykluczenia.<\/p>\n<p><em><strong>Ustawienia agregacji<\/strong><\/em><\/p>\n<p data-start=\"1597\" data-end=\"1794\"><strong data-start=\"1597\" data-end=\"1629\">Zastosuj informacj\u0119 o stackframe<\/strong> (pole wyboru) <em data-start=\"1632\" data-end=\"1647\">&#8211; z<\/em>a pomoc\u0105 tej funkcji okre\u015bla si\u0119, \u017ce na li\u015bcie wynik\u00f3w maj\u0105 by\u0107 wy\u015bwietlane wy\u0142\u0105cznie dane, dla kt\u00f3rych zarejestrowano informacje o stackframe.<\/p>\n<p data-start=\"1974\" data-end=\"2206\"><strong data-start=\"1974\" data-end=\"2009\">Ustawienia element\u00f3w stacktrace<\/strong> &#8211; element stacktrace odpowiada konkretnej lokalizacji w bazowym kodzie Java. W tym polu okre\u015bla si\u0119 poziom szczeg\u00f3\u0142owo\u015bci rozr\u00f3\u017cniania podczas analizy.<br data-start=\"2161\" data-end=\"2164\" \/>Nale\u017cy wybra\u0107 jedn\u0105 z nast\u0119puj\u0105cych opcji:<\/p>\n<ul data-start=\"2208\" data-end=\"2327\">\n<li data-start=\"2208\" data-end=\"2284\">\n<p data-start=\"2210\" data-end=\"2284\"><strong data-start=\"2210\" data-end=\"2223\">Ca\u0142kowicie &#8211; <\/strong>dane s\u0105 wy\u015bwietlane osobno dla ka\u017cdej r\u00f3\u017cnej linii kodu.<\/p>\n<\/li>\n<li data-start=\"2285\" data-end=\"2310\">\n<p data-start=\"2287\" data-end=\"2310\"><strong data-start=\"2287\" data-end=\"2310\">Klasa Java i metoda<\/strong><\/p>\n<\/li>\n<li data-start=\"2311\" data-end=\"2327\">\n<p data-start=\"2313\" data-end=\"2327\"><strong data-start=\"2313\" data-end=\"2327\">Klasa Java<\/strong><\/p>\n<\/li>\n<\/ul>\n<p data-start=\"2329\" data-end=\"2461\"><strong data-start=\"2329\" data-end=\"2346\">Kod aplikacji<\/strong> &#8211; okre\u015bla si\u0119 stopie\u0144 rozr\u00f3\u017cniania w obszarze kodu aplikacji w celu optymalizacji listy wynik\u00f3w. Dost\u0119pne opcje:<\/p>\n<ul data-start=\"2463\" data-end=\"2698\">\n<li data-start=\"2463\" data-end=\"2508\">\n<p data-start=\"2465\" data-end=\"2508\"><strong data-start=\"2465\" data-end=\"2473\">Brak <\/strong>&#8211; kod aplikacji jest ignorowany.<\/p>\n<\/li>\n<li data-start=\"2509\" data-end=\"2605\">\n<p data-start=\"2511\" data-end=\"2605\"><strong data-start=\"2511\" data-end=\"2524\">Przej\u015bcia <\/strong>&#8211; uwzgl\u0119dniane s\u0105 wy\u0142\u0105cznie miejsca przej\u015b\u0107, np. z kodu aplikacji do kodu PGM.<\/p>\n<\/li>\n<li data-start=\"2606\" data-end=\"2698\">\n<p data-start=\"2608\" data-end=\"2698\"><strong data-start=\"2608\" data-end=\"2621\">Wszystkie <\/strong>&#8211; uwzgl\u0119dniany jest ca\u0142y kod aplikacji, \u0142\u0105cznie z wszystkimi przej\u015bciami.<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"2700\" data-end=\"2820\"><strong data-start=\"2700\" data-end=\"2711\">Kod PGM <\/strong>&#8211; okre\u015bla si\u0119 stopie\u0144 rozr\u00f3\u017cniania w obszarze kodu PGM w celu optymalizacji listy wynik\u00f3w.<br data-start=\"2802\" data-end=\"2805\" \/>Dost\u0119pne opcje:<\/p>\n<ul data-start=\"2822\" data-end=\"3045\">\n<li data-start=\"2822\" data-end=\"2861\">\n<p data-start=\"2824\" data-end=\"2861\"><strong data-start=\"2824\" data-end=\"2832\">Brak<\/strong> &#8211; kod PGM jest ignorowany.<\/p>\n<\/li>\n<li data-start=\"2862\" data-end=\"2958\">\n<p data-start=\"2864\" data-end=\"2958\"><strong data-start=\"2864\" data-end=\"2877\">Przej\u015bcia<\/strong> &#8211; uwzgl\u0119dniane s\u0105 wy\u0142\u0105cznie miejsca przej\u015b\u0107, np. z kodu aplikacji do kodu PGM.<\/p>\n<\/li>\n<li data-start=\"2959\" data-end=\"3045\">\n<p data-start=\"2961\" data-end=\"3045\"><strong data-start=\"2961\" data-end=\"2974\">Wszystkie<\/strong> &#8211; uwzgl\u0119dniany jest ca\u0142y kod PGM, \u0142\u0105cznie ze wszystkimi przej\u015bciami.<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"3047\" data-end=\"3211\"><strong data-start=\"3047\" data-end=\"3079\">Kod specyficzny dla projektu<\/strong> &#8211; okre\u015bla si\u0119 stopie\u0144 rozr\u00f3\u017cniania w obszarze kodu specyficznego dla projektu w celu optymalizacji listy wynik\u00f3w. Dost\u0119pne opcje:<\/p>\n<ul data-start=\"3213\" data-end=\"3487\">\n<li data-start=\"3213\" data-end=\"3273\">\n<p data-start=\"3215\" data-end=\"3273\"><strong data-start=\"3215\" data-end=\"3223\">Brak<\/strong> &#8211; kod specyficzny dla projektu jest ignorowany.<\/p>\n<\/li>\n<li data-start=\"3274\" data-end=\"3379\">\n<p data-start=\"3276\" data-end=\"3379\"><strong data-start=\"3276\" data-end=\"3289\">Przej\u015bcia &#8211;<\/strong> uwzgl\u0119dniane s\u0105 wy\u0142\u0105cznie miejsca przej\u015b\u0107, np. z kodu projektowego do kodu aplikacji.<\/p>\n<\/li>\n<li data-start=\"3380\" data-end=\"3487\">\n<p data-start=\"3382\" data-end=\"3487\"><strong data-start=\"3382\" data-end=\"3395\">Wszystkie<\/strong> &#8211; uwzgl\u0119dniany jest ca\u0142y kod specyficzny dla projektu, \u0142\u0105cznie ze wszystkimi przej\u015bciami.<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"3489\" data-end=\"3623\"><strong data-start=\"3489\" data-end=\"3506\">Kod systemu &#8211;\u00a0<\/strong>okre\u015bla si\u0119 stopie\u0144 rozr\u00f3\u017cniania w obszarze kodu systemu w celu optymalizacji listy wynik\u00f3w. Dost\u0119pne opcje:<\/p>\n<ul data-start=\"3625\" data-end=\"3868\">\n<li data-start=\"3625\" data-end=\"3670\">\n<p data-start=\"3627\" data-end=\"3670\"><strong data-start=\"3627\" data-end=\"3635\">Brak<\/strong> &#8211; kod systemowy jest ignorowany.<\/p>\n<\/li>\n<li data-start=\"3671\" data-end=\"3775\">\n<p data-start=\"3673\" data-end=\"3775\"><strong data-start=\"3673\" data-end=\"3686\">Przej\u015bcia<\/strong> &#8211; uwzgl\u0119dniane s\u0105 wy\u0142\u0105cznie miejsca przej\u015b\u0107, np. z kodu systemowego do kodu aplikacji.<\/p>\n<\/li>\n<li data-start=\"3776\" data-end=\"3868\">\n<p data-start=\"3778\" data-end=\"3868\"><strong data-start=\"3778\" data-end=\"3791\">Wszystkie<\/strong> &#8211; uwzgl\u0119dniany jest ca\u0142y kod systemowy, \u0142\u0105cznie ze wszystkimi przej\u015bciami.<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"3870\" data-end=\"4023\" data-is-last-node=\"\" data-is-only-node=\"\"><strong data-start=\"3870\" data-end=\"3894\">Maksymalna g\u0142\u0119boko\u015b\u0107<\/strong> &#8211; w\u00a0tym polu okre\u015bla si\u0119 liczb\u0119 element\u00f3w stacktrace w ramach jednego stackframe, kt\u00f3re maj\u0105 by\u0107 uwzgl\u0119dnione na li\u015bcie wynik\u00f3w.<\/p>\n<h5 id=\"obszar-roboczy\" ><span class=\"ez-toc-section\" id=\"Obszar_roboczy\"><\/span>Obszar roboczy<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p data-start=\"0\" data-end=\"172\">Obszar roboczy sk\u0142ada si\u0119 z listy wynik\u00f3w zawieraj\u0105cej dane z protoko\u0142u profilowania. Wy\u015bwietlane dane odnosz\u0105 si\u0119 do kryteri\u00f3w zapytania zdefiniowanych w obszarze zapyta\u0144.<\/p>\n<p data-start=\"174\" data-end=\"261\">Dane listy wynik\u00f3w s\u0105 prezentowane na zak\u0142adkach opisanych w nast\u0119puj\u0105cych rozdzia\u0142ach:<\/p>\n<ul data-start=\"263\" data-end=\"313\" data-is-last-node=\"\" data-is-only-node=\"\">\n<li data-start=\"263\" data-end=\"286\">\n<p data-start=\"265\" data-end=\"286\"><a href=\"#rezultat\">Zak\u0142adka <em data-start=\"274\" data-end=\"284\">Rezultat<\/em><\/a><\/p>\n<\/li>\n<li data-start=\"287\" data-end=\"313\" data-is-last-node=\"\">\n<p data-start=\"289\" data-end=\"313\" data-is-last-node=\"\"><a href=\"#czesto\">Zak\u0142adka <em data-start=\"298\" data-end=\"313\" data-is-last-node=\"\">Cz\u0119stotliwo\u015b\u0107<\/em><\/a><\/p>\n<\/li>\n<\/ul>\n<h6 id=\"zakladka-rezultat\" ><span class=\"ez-toc-section\" id=\"Zakladka_Rezultat\"><\/span><a id=\"rezultat\"><\/a>Zak\u0142adka <em data-start=\"274\" data-end=\"284\">Rezultat<\/em><span class=\"ez-toc-section-end\"><\/span><\/h6>\n<div class=\"text-base my-auto mx-auto pb-10 [--thread-content-margin:--spacing(4)] @w-sm\/main:[--thread-content-margin:--spacing(6)] @w-lg\/main:[--thread-content-margin:--spacing(16)] px-(--thread-content-margin)\">\n<div class=\"[--thread-content-max-width:40rem] @w-lg\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\" tabindex=\"-1\">\n<div class=\"flex max-w-full flex-col grow\">\n<div class=\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal [.text-message+&amp;]:mt-1\" dir=\"auto\" data-message-author-role=\"assistant\" data-message-id=\"ec482f32-ea5f-4169-95dc-7a494583c7f9\" data-message-model-slug=\"gpt-5-2\">\n<div class=\"flex w-full flex-col gap-1 empty:hidden first:pt-[1px]\">\n<div class=\"markdown prose dark:prose-invert w-full break-words light markdown-new-styling\">\n<p data-start=\"0\" data-end=\"156\">Po wybraniu zak\u0142adki <em data-start=\"21\" data-end=\"31\">Rezultat<\/em> w dolnej cz\u0119\u015bci listy wynik\u00f3w wy\u015bwietlane s\u0105 rezultaty zarejestrowanych akcji wraz z dodatkowymi informacjami analitycznymi.<\/p>\n<p data-start=\"0\" data-end=\"156\"><strong data-start=\"0\" data-end=\"22\">1. Wiersz nag\u0142\u00f3wka<\/strong><br data-start=\"22\" data-end=\"25\" \/><strong data-start=\"25\" data-end=\"37\">Kontekst<\/strong> &#8211; kontekst wykonania jest wy\u015bwietlany na ko\u0144cu listy wynik\u00f3w w nast\u0119puj\u0105cej postaci: <em data-start=\"123\" data-end=\"151\">Session-Start {u\u017cytkownik}<\/em>.<\/p>\n<p data-start=\"158\" data-end=\"184\" data-is-last-node=\"\" data-is-only-node=\"\">\u00a0Dost\u0119pne kolumny:<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"flex flex-col text-sm pb-25\">\n<article class=\"text-token-text-primary w-full focus:outline-none [--shadow-height:45px] has-data-writing-block:pointer-events-none has-data-writing-block:-mt-(--shadow-height) has-data-writing-block:pt-(--shadow-height) [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" dir=\"auto\" tabindex=\"-1\" data-turn-id=\"5efc497e-585f-419b-a4e2-9c3cb8f0da24\" data-testid=\"conversation-turn-110\" data-scroll-anchor=\"true\" data-turn=\"assistant\">\n<div class=\"text-base my-auto mx-auto pb-10 [--thread-content-margin:--spacing(4)] @w-sm\/main:[--thread-content-margin:--spacing(6)] @w-lg\/main:[--thread-content-margin:--spacing(16)] px-(--thread-content-margin)\">\n<div class=\"[--thread-content-max-width:40rem] @w-lg\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\" tabindex=\"-1\">\n<div class=\"flex max-w-full flex-col grow\">\n<div class=\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal [.text-message+&amp;]:mt-1\" dir=\"auto\" data-message-author-role=\"assistant\" data-message-id=\"d38f85b3-b724-49a3-bc4c-0c7f9b8260d1\" data-message-model-slug=\"gpt-5-2\">\n<div class=\"flex w-full flex-col gap-1 empty:hidden first:pt-[1px]\">\n<div class=\"markdown prose dark:prose-invert w-full break-words light markdown-new-styling\">\n<p data-start=\"154\" data-end=\"315\"><strong data-start=\"179\" data-end=\"189\">Liczba<\/strong> &#8211; kolumna zawiera liczb\u0119 jednakowych zdarze\u0144 o tych samych dodatkowych parametrach, kt\u00f3re s\u0105 wy\u015bwietlane w tym samym wierszu.<\/p>\n<p data-start=\"317\" data-end=\"379\"><strong data-start=\"317\" data-end=\"332\">Nazwa akcji<\/strong> &#8211; kolumna zawiera nazw\u0119 zarejestrowanej akcji.<\/p>\n<p data-start=\"381\" data-end=\"577\"><strong data-start=\"381\" data-end=\"397\">Obiekty Stack s\u0105 dost\u0119pne<\/strong> &#8211; kolumna informuje o dost\u0119pno\u015bci informacji o stackframe. Je\u017celi pole wyboru w tej kolumnie jest zaznaczone, oznacza to, \u017ce dla danej akcji dost\u0119pna jest informacja o stackframe.<\/p>\n<p data-start=\"579\" data-end=\"657\"><strong data-start=\"579\" data-end=\"594\">Baza danych<\/strong> &#8211; kolumna zawiera nazw\u0119 bazy danych, na kt\u00f3rej wykonano akcj\u0119.<\/p>\n<p data-start=\"659\" data-end=\"797\"><strong data-start=\"659\" data-end=\"668\">Klucz<\/strong> &#8211; kolumna zawiera nazw\u0119 klucza obiektu biznesowego, je\u017celi akcja si\u0119 do niego odnosi.<br data-start=\"754\" data-end=\"757\" \/>Mog\u0105 by\u0107 wy\u015bwietlane nast\u0119puj\u0105ce klucze:<\/p>\n<ul data-start=\"799\" data-end=\"1145\">\n<li data-start=\"799\" data-end=\"841\">\n<p data-start=\"801\" data-end=\"841\"><em>PK<\/em> \u2013 klucz g\u0142\u00f3wny (<em data-start=\"824\" data-end=\"837\">Primary Key<\/em>)<\/p>\n<\/li>\n<li data-start=\"842\" data-end=\"908\">\n<p data-start=\"844\" data-end=\"908\"><em>SK[n]<\/em> \u2013 klucz wt\u00f3rny (<em data-start=\"870\" data-end=\"885\">Secondary Key<\/em>), n-ty klucz wt\u00f3rny<\/p>\n<\/li>\n<li data-start=\"909\" data-end=\"969\">\n<p data-start=\"911\" data-end=\"969\"><em>TDK <\/em>\u2013 klucz zale\u017cny od czasu (<em data-start=\"945\" data-end=\"965\">time-dependent key<\/em>)<\/p>\n<\/li>\n<li data-start=\"970\" data-end=\"1027\">\n<p data-start=\"972\" data-end=\"1027\"><em>INV <\/em>\u2013 u\u017cyty klucz jest nieprawid\u0142owy (<em data-start=\"1014\" data-end=\"1023\">invalid<\/em>)<\/p>\n<\/li>\n<li data-start=\"1028\" data-end=\"1145\">\n<p data-start=\"1030\" data-end=\"1145\"><em>DEP <\/em>\u2013 obiekt biznesowy jest blokowany wy\u0142\u0105cznie dlatego, \u017ce zablokowano powi\u0105zany obiekt zale\u017cny (<em data-start=\"1132\" data-end=\"1143\">Dependent<\/em>).<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"1147\" data-end=\"1205\">Informacja o kluczu jest dost\u0119pna dla nast\u0119puj\u0105cych akcji:<\/p>\n<ul data-start=\"1207\" data-end=\"1268\">\n<li data-start=\"1207\" data-end=\"1223\">\n<p data-start=\"1209\" data-end=\"1223\"><em data-start=\"1209\" data-end=\"1220\">getObject<\/em><\/p>\n<\/li>\n<li data-start=\"1224\" data-end=\"1245\">\n<p data-start=\"1226\" data-end=\"1245\"><em data-start=\"1226\" data-end=\"1242\">getObjectArray<\/em><\/p>\n<\/li>\n<li data-start=\"1246\" data-end=\"1268\">\n<p data-start=\"1248\" data-end=\"1268\">\u017c\u0105danie blokady<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"1270\" data-end=\"1361\">W przypadku \u017c\u0105dania blokady tylko wtedy, gdy blokada odnosi si\u0119 do konkretnych instancji.<\/p>\n<p data-start=\"1363\" data-end=\"1677\"><strong data-start=\"1363\" data-end=\"1377\">Ustawienia<\/strong> &#8211; kolumna zawiera skr\u00f3ty ustawie\u0144, kt\u00f3re zosta\u0142y zdefiniowane i zarejestrowane dla akcji. Dotyczy to akcji mened\u017cera obiekt\u00f3w (<em data-start=\"1505\" data-end=\"1521\">Object Manager<\/em>) oraz \u017c\u0105da\u0144 blokady. Dla pozosta\u0142ych akcji ustawienia nie s\u0105 rejestrowane.<br data-start=\"1600\" data-end=\"1603\" \/>Dalsze informacje znajduj\u0105 si\u0119 w rozdziale: <em>Obja\u015bnienia dotycz\u0105ce Ustawie\u0144<\/em><strong data-start=\"0\" data-end=\"44\"><em>.<\/em><\/strong><\/p>\n<p data-start=\"1679\" data-end=\"1916\"><strong data-start=\"1679\" data-end=\"1691\">Operacja<\/strong> &#8211; kolumna zawiera skr\u00f3ty wykonanych operacji jako rezultat danej zarejestrowanej akcji. Dotyczy to akcji mened\u017cera obiekt\u00f3w oraz \u017c\u0105da\u0144 blokady.<br data-start=\"1839\" data-end=\"1842\" \/>Dalsze informacje znajduj\u0105 si\u0119 w rozdziale:<a href=\"#Operacja\"> Obja\u015bnienia dotycz\u0105ce <em>Operacja.<\/em><\/a><\/p>\n<p data-start=\"1918\" data-end=\"2169\"><strong data-start=\"1918\" data-end=\"1928\">Dost\u0119p &#8211; <\/strong>kolumna zawiera informacje o dost\u0119pie w zale\u017cno\u015bci od zarejestrowanej akcji.<br data-start=\"2007\" data-end=\"2010\" \/>Je\u017celi akcja odnosi si\u0119 do obiektu biznesowego i dost\u0119p do niego zosta\u0142 zarejestrowany, kolumna zawiera w pe\u0142ni kwalifikowan\u0105 nazw\u0119 danego obiektu biznesowego.<\/p>\n<p data-start=\"2171\" data-end=\"2487\">Je\u017celi wykonano \u017c\u0105danie blokady, w wi\u0119kszo\u015bci przypadk\u00f3w odnosi si\u0119 ono r\u00f3wnie\u017c do obiektu biznesowego, dlatego tak\u017ce w tym przypadku wy\u015bwietlana jest w pe\u0142ni kwalifikowana nazwa danego obiektu biznesowego. Je\u017celi natomiast zarejestrowano zaprogramowan\u0105 blokad\u0119 logiczn\u0105, wy\u015bwietlana jest odpowiednia informacja.<\/p>\n<p data-start=\"2489\" data-end=\"2599\">W przypadku <em data-start=\"2501\" data-end=\"2512\">ResultSet<\/em> lub bezpo\u015bredniego dost\u0119pu do bazy danych kolumna zawiera odpowiedni ci\u0105g OQL lub SQL.<\/p>\n<p data-start=\"2601\" data-end=\"2887\"><strong data-start=\"2601\" data-end=\"2623\">2. Wiersz nag\u0142\u00f3wka<\/strong><br data-start=\"2623\" data-end=\"2626\" \/><strong data-start=\"2626\" data-end=\"2637\">Pozycja<\/strong><br data-start=\"2637\" data-end=\"2640\" \/>Je\u017celi dost\u0119pna jest informacja o stackframe, kolumna ta zawiera pozycj\u0119 elementu stacktrace w bazowym kodzie Java. Spos\u00f3b wy\u015bwietlania zale\u017cy od wybranego ustawienia zapytania dla analizy stackframe.<br data-start=\"2840\" data-end=\"2843\" \/>Mog\u0105 by\u0107 wy\u015bwietlane nast\u0119puj\u0105ce informacje:<\/p>\n<ul data-start=\"2889\" data-end=\"2965\" data-is-last-node=\"\" data-is-only-node=\"\">\n<li data-start=\"2889\" data-end=\"2926\">\n<p data-start=\"2891\" data-end=\"2926\"><em>klasa Java, metoda i numer linii<\/em><\/p>\n<\/li>\n<li data-start=\"2927\" data-end=\"2951\">\n<p data-start=\"2929\" data-end=\"2951\"><em>klasa Java i metoda<\/em><\/p>\n<\/li>\n<li data-start=\"2952\" data-end=\"2965\" data-is-last-node=\"\">\n<p data-start=\"2954\" data-end=\"2965\" data-is-last-node=\"\"><em>klasa Java<\/em><\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p class=\"z-0 flex min-h-[46px] justify-start\"><strong><span style=\"font-size: revert; color: initial;\">Przyciski na pasku narz\u0119dzi na li\u015bcie<\/span><\/strong><\/p>\n<p data-start=\"36\" data-end=\"190\">Lista wynik\u00f3w posiada pasek narz\u0119dzi, kt\u00f3ry zawiera m.in. przyciski umo\u017cliwiaj\u0105ce przej\u0119cie wybranych danych do kryteri\u00f3w zapytania lub kopiowanie danych.<\/p>\n<p data-start=\"192\" data-end=\"300\"><strong data-start=\"192\" data-end=\"203\">[Aktualizuj]\u00a0<\/strong>&#8211; dane z pliku protoko\u0142u profilowania s\u0105 wy\u015bwietlane zgodnie z ustawionymi kryteriami zapytania.<\/p>\n<p data-start=\"302\" data-end=\"951\"><strong data-start=\"302\" data-end=\"332\">[W\u0142\u0105czenie filtra stackframe]<\/strong> &#8211; za pomoc\u0105 tego przycisku mo\u017cna w uproszczony spos\u00f3b doda\u0107 element stacktrace jako element stackframe uwzgl\u0119dniany w zapytaniu. W tym celu nale\u017cy zaznaczy\u0107 element stacktrace na li\u015bcie wynik\u00f3w, a nast\u0119pnie nacisn\u0105\u0107 ten przycisk. Wybrany element zostanie dodany w obszarze rozwijanym <em data-start=\"617\" data-end=\"640\">Ustawienia stackframe<\/em> do pola zapytania <em data-start=\"659\" data-end=\"676\">Filtr w\u0142\u0105czenia<\/em> jako kryterium zapytania. Nast\u0119pnie, w razie potrzeby, nale\u017cy nacisn\u0105\u0107 przycisk <strong data-start=\"192\" data-end=\"203\">[Aktualizuj] <\/strong>na pasku narz\u0119dzi listy, aby zaktualizowa\u0107 dane na li\u015bcie wynik\u00f3w. Zgodnie ze zmian\u0105 zapytania uwzgl\u0119dniane s\u0105 wy\u0142\u0105cznie te stackframe\u2019y, w kt\u00f3rych wyst\u0119puje dodany element stacktrace.<\/p>\n<p data-start=\"953\" data-end=\"1612\"><strong data-start=\"953\" data-end=\"984\">Wykluczenie filtr stackframe<\/strong> &#8211; za pomoc\u0105 tego przycisku mo\u017cna w uproszczony spos\u00f3b doda\u0107 element stacktrace jako element stackframe uwzgl\u0119dniany w zapytaniu. W tym celu nale\u017cy zaznaczy\u0107 element stacktrace na li\u015bcie wynik\u00f3w, a nast\u0119pnie nacisn\u0105\u0107 ten przycisk. Wybrany element zostanie dodany w obszarze rozwijanym <em data-start=\"1269\" data-end=\"1292\">Ustawienia stackframe<\/em> do pola zapytania <em data-start=\"1311\" data-end=\"1329\">Filtr wy\u0142\u0105czenia<\/em> jako kryterium zapytania. Nast\u0119pnie, w razie potrzeby, nale\u017cy nacisn\u0105\u0107 przycisk <strong data-start=\"192\" data-end=\"203\">[Aktualizuj] <\/strong>na pasku narz\u0119dzi listy, aby zaktualizowa\u0107 dane na li\u015bcie wynik\u00f3w. Zgodnie ze zmian\u0105 zapytania uwzgl\u0119dniane s\u0105 wy\u0142\u0105cznie te stackframe\u2019y, w kt\u00f3rych dodany element stacktrace nie wyst\u0119puje.<\/p>\n<p data-start=\"1614\" data-end=\"1761\"><strong data-start=\"1614\" data-end=\"1628\">Stackframe<\/strong> &#8211; je\u017celi na li\u015bcie wynik\u00f3w dost\u0119pne s\u0105 stackframe\u2019y, za pomoc\u0105 tego przycisku mo\u017cna je w\u0142\u0105cza\u0107 lub wy\u0142\u0105cza\u0107 (pokazywa\u0107 lub ukrywa\u0107).<\/p>\n<p data-start=\"1763\" data-end=\"1924\" data-is-last-node=\"\" data-is-only-node=\"\"><strong data-start=\"1763\" data-end=\"1773\">Kopiuj<\/strong> &#8211; je\u017celi na li\u015bcie wynik\u00f3w dost\u0119pne s\u0105 stackframe\u2019y, za pomoc\u0105 tego przycisku mo\u017cna skopiowa\u0107 wcze\u015bniej zaznaczon\u0105 informacj\u0119 o stackframe do schowka.<\/p>\n<\/div>\n<\/div>\n<\/article>\n<\/div>\n<h6 id=\"zakladka-czestotliwosc\" ><span class=\"ez-toc-section\" id=\"Zakladka_Czestotliwosc\"><\/span><a id=\"czesto\"><\/a>Zak\u0142adka <em>Cz\u0119stotliwo\u015b\u0107<\/em><span class=\"ez-toc-section-end\"><\/span><\/h6>\n<p data-start=\"0\" data-end=\"288\">Po wybraniu zak\u0142adki <em data-start=\"21\" data-end=\"36\">Cz\u0119stotliwo\u015b\u0107<\/em> w dolnej cz\u0119\u015bci listy wynik\u00f3w wy\u015bwietlane s\u0105 zapisy dotycz\u0105ce stackframe\u2019\u00f3w lub zawartych w nich element\u00f3w stacktrace. Jest to szczeg\u00f3lnie przydatne, gdy zachodzi potrzeba zidentyfikowania np. fragment\u00f3w kodu, kt\u00f3re s\u0105 wykorzystywane wyj\u0105tkowo cz\u0119sto. Dost\u0119pne kolumny:<\/p>\n<p data-start=\"0\" data-end=\"136\"><strong data-start=\"0\" data-end=\"17\">Cz\u0119stotliwo\u015b\u0107<\/strong> &#8211; kolumna zawiera liczb\u0119 miejsc w kodzie, w kt\u00f3rych dany element stacktrace wyst\u0119puje w poszczeg\u00f3lnych stackframe\u2019ach.<\/p>\n<p data-start=\"138\" data-end=\"225\"><strong data-start=\"138\" data-end=\"159\">\u015acie\u017cki wej\u015bciowe<\/strong> &#8211; kolumna zawiera liczb\u0119 \u015bcie\u017cek wej\u015bciowych elementu stacktrace.<\/p>\n<p data-start=\"227\" data-end=\"314\"><strong data-start=\"227\" data-end=\"248\">\u015acie\u017cki wyj\u015bciowe<\/strong> &#8211; kolumna zawiera liczb\u0119 \u015bcie\u017cek wyj\u015bciowych elementu stacktrace.<\/p>\n<p data-start=\"316\" data-end=\"577\"><strong data-start=\"316\" data-end=\"327\">Pozycja<\/strong> &#8211; je\u017celi dost\u0119pna jest informacja o stackframe, kolumna ta zawiera pozycj\u0119 elementu stacktrace w bazowym kodzie Java. Spos\u00f3b wy\u015bwietlania zale\u017cy od wybranego ustawienia zapytania dla analizy stackframe.<br data-start=\"530\" data-end=\"533\" \/>Mog\u0105 by\u0107 wy\u015bwietlane nast\u0119puj\u0105ce informacje:<\/p>\n<ul data-start=\"579\" data-end=\"655\" data-is-last-node=\"\" data-is-only-node=\"\">\n<li data-start=\"579\" data-end=\"616\">\n<p data-start=\"581\" data-end=\"616\"><em>klasa Java, metoda i numer linii<\/em><\/p>\n<\/li>\n<li data-start=\"617\" data-end=\"641\">\n<p data-start=\"619\" data-end=\"641\"><em>klasa Java i metoda<\/em><\/p>\n<\/li>\n<li data-start=\"642\" data-end=\"655\" data-is-last-node=\"\">\n<p data-start=\"644\" data-end=\"655\" data-is-last-node=\"\"><em>klasa Java<\/em><\/p>\n<\/li>\n<\/ul>\n<p class=\"z-0 flex min-h-[46px] justify-start\"><strong><span style=\"font-size: revert; color: initial;\">Przyciski na pasku narz\u0119dzi na li\u015bcie<\/span><\/strong><\/p>\n<p data-start=\"36\" data-end=\"190\">Lista wynik\u00f3w posiada pasek narz\u0119dzi, kt\u00f3ry zawiera m.in. przyciski umo\u017cliwiaj\u0105ce przej\u0119cie wybranych danych do kryteri\u00f3w zapytania lub kopiowanie danych.<\/p>\n<p data-start=\"192\" data-end=\"300\"><strong data-start=\"192\" data-end=\"203\">[Aktualizuj]\u00a0<\/strong>&#8211; dane z pliku protoko\u0142u profilowania s\u0105 wy\u015bwietlane zgodnie z ustawionymi kryteriami zapytania.<\/p>\n<p data-start=\"302\" data-end=\"951\"><strong data-start=\"302\" data-end=\"332\">[W\u0142\u0105czenie filtra stackframe]<\/strong> &#8211; za pomoc\u0105 tego przycisku mo\u017cna w uproszczony spos\u00f3b doda\u0107 element stacktrace jako element stackframe uwzgl\u0119dniany w zapytaniu. W tym celu nale\u017cy zaznaczy\u0107 element stacktrace na li\u015bcie wynik\u00f3w, a nast\u0119pnie nacisn\u0105\u0107 ten przycisk. Wybrany element zostanie dodany w obszarze rozwijanym <em data-start=\"617\" data-end=\"640\">Ustawienia stackframe<\/em> do pola zapytania <em data-start=\"659\" data-end=\"676\">Filtr w\u0142\u0105czenia<\/em> jako kryterium zapytania. Nast\u0119pnie, w razie potrzeby, nale\u017cy nacisn\u0105\u0107 przycisk <strong data-start=\"192\" data-end=\"203\">[Aktualizuj] <\/strong>na pasku narz\u0119dzi listy, aby zaktualizowa\u0107 dane na li\u015bcie wynik\u00f3w. Zgodnie ze zmian\u0105 zapytania uwzgl\u0119dniane s\u0105 wy\u0142\u0105cznie te stackframe\u2019y, w kt\u00f3rych wyst\u0119puje dodany element stacktrace.<\/p>\n<p data-start=\"953\" data-end=\"1612\"><strong data-start=\"953\" data-end=\"984\">Wykluczenie filtr stackframe<\/strong> &#8211; za pomoc\u0105 tego przycisku mo\u017cna w uproszczony spos\u00f3b doda\u0107 element stacktrace jako element stackframe uwzgl\u0119dniany w zapytaniu. W tym celu nale\u017cy zaznaczy\u0107 element stacktrace na li\u015bcie wynik\u00f3w, a nast\u0119pnie nacisn\u0105\u0107 ten przycisk. Wybrany element zostanie dodany w obszarze rozwijanym <em data-start=\"1269\" data-end=\"1292\">Ustawienia stackframe<\/em> do pola zapytania <em data-start=\"1311\" data-end=\"1329\">Filtr wy\u0142\u0105czenia<\/em> jako kryterium zapytania. Nast\u0119pnie, w razie potrzeby, nale\u017cy nacisn\u0105\u0107 przycisk <strong data-start=\"192\" data-end=\"203\">[Aktualizuj] <\/strong>na pasku narz\u0119dzi listy, aby zaktualizowa\u0107 dane na li\u015bcie wynik\u00f3w. Zgodnie ze zmian\u0105 zapytania uwzgl\u0119dniane s\u0105 wy\u0142\u0105cznie te stackframe\u2019y, w kt\u00f3rych dodany element stacktrace nie wyst\u0119puje.<\/p>\n<h6 data-start=\"0\" data-end=\"44\" id=\"objasnienia-dotyczace-ustawien\" ><span class=\"ez-toc-section\" id=\"Objasnienia_dotyczace_Ustawien\"><\/span><strong data-start=\"0\" data-end=\"44\"><a id=\"Ustawien\"><\/a>Obja\u015bnienia dotycz\u0105ce <em>Ustawie\u0144<\/em><\/strong><span class=\"ez-toc-section-end\"><\/span><\/h6>\n<p data-start=\"46\" data-end=\"194\">Niniejszy rozdzia\u0142 zawiera obja\u015bnienia wpis\u00f3w w kolumnie <em data-start=\"103\" data-end=\"115\">Ustawienia<\/em>, kt\u00f3re zale\u017c\u0105 od danej akcji. Nale\u017cy zapozna\u0107 si\u0119 z nast\u0119puj\u0105cymi rozdzia\u0142ami:<\/p>\n<ul data-start=\"196\" data-end=\"233\">\n<li data-start=\"196\" data-end=\"213\">\n<p data-start=\"198\" data-end=\"213\"><a href=\"#ObjectManager\"><em>ObjectManager<\/em><\/a><\/p>\n<\/li>\n<li data-start=\"214\" data-end=\"233\">\n<p data-start=\"216\" data-end=\"233\"><a href=\"#blokady\"><em>\u017b\u0105danie blokady<\/em><\/a><\/p>\n<\/li>\n<\/ul>\n<p data-start=\"235\" data-end=\"252\"><strong data-start=\"235\" data-end=\"252\"><a id=\"ObjectManager\"><\/a>ObjectManager<\/strong><\/p>\n<p data-start=\"254\" data-end=\"517\">Ustawienia dla dost\u0119p\u00f3w realizowanych za po\u015brednictwem ObjectManagera odnosz\u0105 si\u0119 do tryb\u00f3w dost\u0119pu (<em data-start=\"355\" data-end=\"362\">flags<\/em>) ustawionych przy danym wywo\u0142aniu. Dalsze informacje na temat tryb\u00f3w dost\u0119pu znajduj\u0105 si\u0119 w dokumentacji: <em data-start=\"469\" data-end=\"490\">Us\u0142uga persystencji<\/em>, rozdzia\u0142 <em data-start=\"501\" data-end=\"516\">Tryby dost\u0119pu<\/em>.<\/p>\n<p data-start=\"519\" data-end=\"555\">Dost\u0119pne s\u0105 nast\u0119puj\u0105ce skr\u00f3ty flag:<\/p>\n<ul data-start=\"557\" data-end=\"1084\" data-is-last-node=\"\" data-is-only-node=\"\">\n<li data-start=\"557\" data-end=\"607\">\n<p data-start=\"559\" data-end=\"607\"><strong data-start=\"559\" data-end=\"564\">R<\/strong> &#8211; akcja zosta\u0142a wywo\u0142ana z flag\u0105 <em data-start=\"600\" data-end=\"606\">READ<\/em>.<\/p>\n<\/li>\n<li data-start=\"608\" data-end=\"666\">\n<p data-start=\"610\" data-end=\"666\"><strong data-start=\"610\" data-end=\"616\">RU<\/strong> &#8211; akcja zosta\u0142a wywo\u0142ana z flag\u0105 <em data-start=\"652\" data-end=\"665\">READ_UPDATE<\/em>.<\/p>\n<\/li>\n<li data-start=\"667\" data-end=\"724\">\n<p data-start=\"669\" data-end=\"724\"><strong data-start=\"669\" data-end=\"675\">RW &#8211;<\/strong> akcja zosta\u0142a wywo\u0142ana z flag\u0105 <em data-start=\"711\" data-end=\"723\">READ_WRITE<\/em>.<\/p>\n<\/li>\n<li data-start=\"725\" data-end=\"779\">\n<p data-start=\"727\" data-end=\"779\"><strong data-start=\"727\" data-end=\"734\">INS\u00a0<\/strong>&#8211; akcja zosta\u0142a wywo\u0142ana z flag\u0105 <em data-start=\"770\" data-end=\"778\">INSERT<\/em>.<\/p>\n<\/li>\n<li data-start=\"780\" data-end=\"840\">\n<p data-start=\"782\" data-end=\"840\"><strong data-start=\"782\" data-end=\"788\">RP<\/strong> &#8211; akcja zosta\u0142a wywo\u0142ana z flag\u0105 <em data-start=\"824\" data-end=\"839\">READ_PARALLEL<\/em>.<\/p>\n<\/li>\n<li data-start=\"841\" data-end=\"903\">\n<p data-start=\"843\" data-end=\"903\"><strong data-start=\"843\" data-end=\"849\">RR- <\/strong>akcja zosta\u0142a wywo\u0142ana z flag\u0105 <em data-start=\"885\" data-end=\"902\">READ_REPEATABLE<\/em>.<\/p>\n<\/li>\n<li data-start=\"904\" data-end=\"963\">\n<p data-start=\"906\" data-end=\"963\"><strong data-start=\"906\" data-end=\"912\">BC &#8211; <\/strong>akcja zosta\u0142a wywo\u0142ana z flag\u0105 <em data-start=\"948\" data-end=\"962\">BYPASS_CACHE<\/em>.<\/p>\n<\/li>\n<li data-start=\"964\" data-end=\"1021\">\n<p data-start=\"966\" data-end=\"1021\"><strong data-start=\"966\" data-end=\"972\">CO &#8211; <\/strong>akcja zosta\u0142a wywo\u0142ana z flag\u0105 <em data-start=\"1008\" data-end=\"1020\">CACHE_ONLY<\/em>.<\/p>\n<\/li>\n<li data-start=\"1022\" data-end=\"1084\" data-is-last-node=\"\">\n<p data-start=\"1024\" data-end=\"1084\" data-is-last-node=\"\"><strong data-start=\"1024\" data-end=\"1030\">DL &#8211; <\/strong>akcja zosta\u0142a wywo\u0142ana z flag\u0105 <em data-start=\"1066\" data-end=\"1083\">DISABLE_LOCKING<\/em>.<\/p>\n<\/li>\n<\/ul>\n<p><strong><a id=\"blokady\"><\/a>\u017b\u0105danie blokady<\/strong><\/p>\n<p>Ustawienia dla \u017c\u0105da\u0144 blokady odnosz\u0105 si\u0119 do r\u00f3\u017cnych typ\u00f3w blokad. Wi\u0119cej informacji na temat typ\u00f3w blokad mo\u017cna znale\u017a\u0107 w nast\u0119puj\u0105cej artykule: Zarz\u0105dzanie blokadami<\/p>\n<p>Dla \u017c\u0105da\u0144 blokady istniej\u0105 nast\u0119puj\u0105ce skr\u00f3ty:<\/p>\n<ul>\n<li data-start=\"232\" data-end=\"295\">\n<p data-start=\"234\" data-end=\"295\"><strong data-start=\"234\" data-end=\"239\">I <\/strong>&#8211; \u017c\u0105danie blokady odnosi si\u0119 do konkretnej instancji.<\/p>\n<\/li>\n<li data-start=\"296\" data-end=\"351\">\n<p data-start=\"298\" data-end=\"351\"><strong data-start=\"298\" data-end=\"303\">T &#8211;<\/strong>\u00a0\u017c\u0105danie blokady odnosi si\u0119 do ca\u0142ej tabeli.<\/p>\n<\/li>\n<li data-start=\"352\" data-end=\"473\">\n<p data-start=\"354\" data-end=\"473\"><strong data-start=\"354\" data-end=\"359\">S<\/strong>\u00a0&#8211; \u017c\u0105danie blokady odnosi si\u0119 do systemu, tj. do wszystkich baz danych systemu, w kt\u00f3rych dana tabela wyst\u0119puje.<\/p>\n<\/li>\n<li data-start=\"474\" data-end=\"561\">\n<p data-start=\"476\" data-end=\"561\"><strong data-start=\"476\" data-end=\"481\">L<\/strong>\u00a0&#8211; \u017c\u0105danie blokady jest tzw. blokad\u0105 <em data-start=\"520\" data-end=\"530\">logiczn\u0105<\/em>. Zosta\u0142a utworzona programowo.<\/p>\n<\/li>\n<li data-start=\"562\" data-end=\"599\">\n<p data-start=\"564\" data-end=\"599\"><strong data-start=\"564\" data-end=\"569\">R &#8211; <\/strong>za\u017c\u0105dano blokady odczytu.<\/p>\n<\/li>\n<li data-start=\"600\" data-end=\"636\">\n<p data-start=\"602\" data-end=\"636\"><strong data-start=\"602\" data-end=\"607\">W &#8211; <\/strong>za\u017c\u0105dano blokady zapisu.<\/p>\n<\/li>\n<li data-start=\"637\" data-end=\"681\">\n<p data-start=\"639\" data-end=\"681\"><strong data-start=\"639\" data-end=\"644\">U &#8211; <\/strong>za\u017c\u0105dano blokady u\u017cycia (<em data-start=\"674\" data-end=\"679\">use<\/em>).<\/p>\n<\/li>\n<li data-start=\"682\" data-end=\"721\" data-is-last-node=\"\">\n<p data-start=\"684\" data-end=\"721\" data-is-last-node=\"\"><strong data-start=\"684\" data-end=\"689\">E &#8211; <\/strong>za\u017c\u0105dano blokady wy\u0142\u0105cznej.<\/p>\n<\/li>\n<\/ul>\n<h6 data-start=\"0\" data-end=\"44\" id=\"objasnienia-dotyczace-operacja\" ><span class=\"ez-toc-section\" id=\"Objasnienia_dotyczace_Operacja\"><\/span><strong data-start=\"0\" data-end=\"44\"><a id=\"operacja\"><\/a>Obja\u015bnienia dotycz\u0105ce <em>Operacja<\/em><\/strong><span class=\"ez-toc-section-end\"><\/span><\/h6>\n<p data-start=\"46\" data-end=\"192\">Niniejszy rozdzia\u0142 zawiera obja\u015bnienia wpis\u00f3w w kolumnie <em data-start=\"103\" data-end=\"113\">Operacja<\/em>, kt\u00f3re zale\u017c\u0105 od danej akcji. Nale\u017cy zapozna\u0107 si\u0119 z nast\u0119puj\u0105cymi rozdzia\u0142ami:<\/p>\n<ul data-start=\"194\" data-end=\"234\">\n<li data-start=\"194\" data-end=\"211\">\n<p data-start=\"196\" data-end=\"211\"><em><a href=\"#ObjectManager2\">ObjectManager<\/a><\/em><\/p>\n<\/li>\n<li data-start=\"212\" data-end=\"234\">\n<p data-start=\"214\" data-end=\"234\"><em><a href=\"#TransactionManager2\">TransactionManager<\/a><\/em><\/p>\n<\/li>\n<\/ul>\n<p data-start=\"236\" data-end=\"253\"><strong data-start=\"236\" data-end=\"253\"><a id=\"ObjectManager2\"><\/a>ObjectManager<\/strong><\/p>\n<p data-start=\"255\" data-end=\"518\">Operacje przy dost\u0119pach realizowanych za po\u015brednictwem ObjectManagera odnosz\u0105 si\u0119 do tryb\u00f3w dost\u0119pu (<em data-start=\"356\" data-end=\"363\">flags<\/em>) ustawionych przy danym wywo\u0142aniu. Dalsze informacje na temat tryb\u00f3w dost\u0119pu znajduj\u0105 si\u0119 w dokumentacji: <em data-start=\"470\" data-end=\"491\">Us\u0142uga persystencji<\/em>, rozdzia\u0142 <em data-start=\"502\" data-end=\"517\">Tryby dost\u0119pu<\/em>.<\/p>\n<p data-start=\"520\" data-end=\"567\">Mog\u0105 by\u0107 wy\u015bwietlane nast\u0119puj\u0105ce tryby dost\u0119pu:<\/p>\n<ul data-start=\"569\" data-end=\"1131\">\n<li data-start=\"569\" data-end=\"641\">\n<p data-start=\"571\" data-end=\"641\"><strong data-start=\"571\" data-end=\"577\">LA<\/strong> (<em data-start=\"579\" data-end=\"594\">lock acquired<\/em>) &#8211; podczas dost\u0119pu za\u017c\u0105dano r\u00f3wnie\u017c blokady.<\/p>\n<\/li>\n<li data-start=\"642\" data-end=\"737\">\n<p data-start=\"644\" data-end=\"737\"><strong data-start=\"644\" data-end=\"650\">TC<\/strong> (<em data-start=\"652\" data-end=\"675\">transaction cache hit<\/em>) &#8211; obiekt zosta\u0142 odczytany z pami\u0119ci podr\u0119cznej transakcji.<\/p>\n<\/li>\n<li data-start=\"738\" data-end=\"832\">\n<p data-start=\"740\" data-end=\"832\"><strong data-start=\"740\" data-end=\"746\">SC<\/strong> (<em data-start=\"748\" data-end=\"766\">shared cache hit<\/em>) &#8211; obiekt zosta\u0142 odczytany z pami\u0119ci podr\u0119cznej wsp\u00f3\u0142dzielonej.<\/p>\n<\/li>\n<li data-start=\"833\" data-end=\"904\">\n<p data-start=\"835\" data-end=\"904\"><strong data-start=\"835\" data-end=\"841\">DB<\/strong> (<em data-start=\"843\" data-end=\"860\">database access<\/em>) &#8211; obiekt zosta\u0142 odczytany z bazy danych.<\/p>\n<\/li>\n<li data-start=\"905\" data-end=\"974\">\n<p data-start=\"907\" data-end=\"974\"><strong data-start=\"907\" data-end=\"913\">MS<\/strong> (<em data-start=\"915\" data-end=\"939\">miss, object not found<\/em>) &#8211; obiekt nie zosta\u0142 znaleziony.<\/p>\n<\/li>\n<li data-start=\"975\" data-end=\"1131\">\n<p data-start=\"977\" data-end=\"1131\"><strong data-start=\"977\" data-end=\"988\">DB[n,m] <\/strong>&#8211; wyst\u0119puje wy\u0142\u0105cznie przy zapytaniach <em data-start=\"1030\" data-end=\"1043\">ObjectArray<\/em>. \u0141\u0105cznie za\u017c\u0105dano <em data-start=\"1062\" data-end=\"1065\">m<\/em> obiekt\u00f3w, z czego <em data-start=\"1084\" data-end=\"1087\">n<\/em> obiekt\u00f3w zosta\u0142o odczytanych z bazy danych.<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"1133\" data-end=\"1155\"><strong data-start=\"1133\" data-end=\"1155\"><a id=\"TransactionManager2\"><\/a>TransactionManager<\/strong><\/p>\n<ul data-start=\"1157\" data-end=\"1617\" data-is-last-node=\"\" data-is-only-node=\"\">\n<li data-start=\"1157\" data-end=\"1257\">\n<p data-start=\"1159\" data-end=\"1257\"><strong data-start=\"1159\" data-end=\"1166\">DMJ &#8211; <\/strong><em data-start=\"1171\" data-end=\"1201\">Disable Modification Journal<\/em> \u2013 do dziennika modyfikacji nie zapisano \u017cadnych wpis\u00f3w.<\/p>\n<\/li>\n<li data-start=\"1258\" data-end=\"1348\">\n<p data-start=\"1260\" data-end=\"1348\"><strong data-start=\"1260\" data-end=\"1267\">DTL &#8211; <\/strong><em data-start=\"1272\" data-end=\"1295\">Disable Transfer List<\/em> \u2013 do list transferowych nie zapisano \u017cadnych wpis\u00f3w.<\/p>\n<\/li>\n<li data-start=\"1349\" data-end=\"1459\">\n<p data-start=\"1351\" data-end=\"1459\"><strong data-start=\"1351\" data-end=\"1358\">DUI &#8211; <\/strong><em data-start=\"1363\" data-end=\"1384\">Disable Update Info<\/em> \u2013 informacja o aktualizacji nie jest aktualizowana podczas zapisu obiektu.<\/p>\n<\/li>\n<li data-start=\"1460\" data-end=\"1617\" data-is-last-node=\"\">\n<p data-start=\"1462\" data-end=\"1617\" data-is-last-node=\"\"><strong data-start=\"1462\" data-end=\"1468\">OC &#8211; <\/strong><em data-start=\"1473\" data-end=\"1489\">Ordered Commit<\/em> \u2013 obiekty zosta\u0142y zapisane dok\u0142adnie w takiej kolejno\u015bci, w jakiej zosta\u0142y zarejestrowane do modyfikacji za pomoc\u0105 <em data-start=\"1605\" data-end=\"1616\">putObject<\/em>.<\/p>\n<\/li>\n<\/ul>\n<h6 data-start=\"0\" data-end=\"44\" id=\"objasnienia-dotyczace-zadania-blokady\" ><span class=\"ez-toc-section\" id=\"Objasnienia_dotyczace_Zadania_blokady\"><\/span><strong data-start=\"0\" data-end=\"44\">Obja\u015bnienia dotycz\u0105ce <em>\u017badania blokady<\/em><\/strong><span class=\"ez-toc-section-end\"><\/span><\/h6>\n<p data-start=\"0\" data-end=\"123\">Niniejszy rozdzia\u0142 zawiera obja\u015bnienia wpis\u00f3w w kolumnie <em>\u017b\u0105danie blokady<\/em>, kt\u00f3re zale\u017c\u0105 od danej akcji.<\/p>\n<ul data-start=\"150\" data-end=\"458\" data-is-last-node=\"\" data-is-only-node=\"\">\n<li data-start=\"150\" data-end=\"197\">\n<p data-start=\"152\" data-end=\"197\"><strong data-start=\"152\" data-end=\"157\">G &#8211;<\/strong> za\u017c\u0105dana blokada zosta\u0142a przyznana.<\/p>\n<\/li>\n<li data-start=\"199\" data-end=\"241\">\n<p data-start=\"201\" data-end=\"241\"><strong data-start=\"201\" data-end=\"206\">N &#8211; <\/strong>za\u017c\u0105dana blokada ju\u017c istnia\u0142a.<\/p>\n<\/li>\n<li data-start=\"243\" data-end=\"327\">\n<p data-start=\"245\" data-end=\"327\"><strong data-start=\"245\" data-end=\"250\">T &#8211; <\/strong>\u017c\u0105danie blokady spowodowa\u0142o przekroczenie czasu oczekiwania (<em data-start=\"316\" data-end=\"325\" data-is-only-node=\"\">timeout<\/em>).<\/p>\n<\/li>\n<li data-start=\"329\" data-end=\"458\" data-is-last-node=\"\">\n<p data-start=\"331\" data-end=\"458\" data-is-last-node=\"\"><strong data-start=\"331\" data-end=\"337\">EX &#8211; <\/strong>\u017c\u0105danie blokady spowodowa\u0142o wyst\u0105pienie wyj\u0105tku (<em data-start=\"391\" data-end=\"402\" data-is-only-node=\"\">exception<\/em>). Wyst\u0105pienie wyj\u0105tku wskazuje na b\u0142\u0105d programistyczny.<\/p>\n<\/li>\n<\/ul>\n<h5 id=\"widoki-na-standardowym-pasku-narzedzi-poziomy-agregacji\" ><span class=\"ez-toc-section\" id=\"Widoki_na_standardowym_pasku_narzedzi_Poziomy_agregacji\"><\/span>Widoki na standardowym pasku narz\u0119dzi: Poziomy agregacji<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p data-start=\"68\" data-end=\"140\">Na standardowym pasku narz\u0119dzi aplikacji dost\u0119pne s\u0105 nast\u0119puj\u0105ce widoki:<\/p>\n<ul data-start=\"142\" data-end=\"180\">\n<li data-start=\"142\" data-end=\"151\">\n<p data-start=\"144\" data-end=\"151\"><strong>Sesja<\/strong> &#8211; akcje s\u0105 agregowane dla wybranej sesji, tzn. s\u0105 zliczane ponad kontekstami, a wi\u0119c \u0142\u0105cznie dla aplikacji, transakcji oraz funkcji aplikacji. Je\u017celi w obszarze zapyta\u0144 w polu <em data-start=\"570\" data-end=\"581\">Aplikacja<\/em> podano nazw\u0119 aplikacji, uwzgl\u0119dniane s\u0105 wy\u0142\u0105cznie akcje z aplikacji, kt\u00f3rych nazwy pasuj\u0105 do podanej nazwy. To samo dotyczy funkcji aplikacji \u2013 je\u017celi aplikacja nie jest uwzgl\u0119dniana, w\u00f3wczas jej funkcje podrz\u0119dne r\u00f3wnie\u017c s\u0105 ignorowane.\u00a0Ten poziom agregacji umo\u017cliwia zliczanie akcji wykonywanych w ramach danej funkcji aplikacji w wielu wywo\u0142aniach tej funkcji. Pozwala to w prosty spos\u00f3b okre\u015bli\u0107 ca\u0142kowity koszt funkcji w aplikacji.<\/p>\n<\/li>\n<li data-start=\"152\" data-end=\"165\">\n<p data-start=\"154\" data-end=\"165\"><strong>Aplikacja<\/strong> &#8211; akcje s\u0105 agregowane dla ka\u017cdej aplikacji w wybranej sesji, tzn. s\u0105 zliczane kontekstowo wy\u0142\u0105cznie w obr\u0119bie podrz\u0119dnych funkcji aplikacji, ale nie ponad aplikacjami. Po wynikach agregacji dla ca\u0142ej aplikacji wy\u015bwietlane s\u0105 odpowiednie wyniki agregacji dla podrz\u0119dnych funkcji.<\/p>\n<p data-start=\"1314\" data-end=\"1513\">Ten poziom agregacji umo\u017cliwia szybkie uzyskanie przegl\u0105du ca\u0142kowitej liczby wywo\u0142a\u0144 akcji w aplikacji. Wywo\u0142ania akcji s\u0105 dodatkowo rozdzielone wed\u0142ug ich wyst\u0105pie\u0144 w poszczeg\u00f3lnych funkcjach aplikacji.<\/p>\n<\/li>\n<li data-start=\"166\" data-end=\"180\">\n<p data-start=\"168\" data-end=\"180\"><strong>Transakcja<\/strong> &#8211; akcje s\u0105 agregowane dla ka\u017cdej transakcji w wybranej sesji, tzn. s\u0105 zliczane oddzielnie dla ka\u017cdej transakcji; inne konteksty nie s\u0105 brane pod uwag\u0119.<\/p>\n<\/li>\n<\/ul>\n<h5 id=\"okno-dokowane-sesje\" ><span class=\"ez-toc-section\" id=\"Okno_dokowane_Sesje\"><\/span>Okno dokowane <em>Sesje<\/em><span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p data-start=\"0\" data-end=\"286\">Okno dokowalne <i>Sesja <\/i>s\u0142u\u017cy do uzyskania przegl\u0105du danych zawartych w protokole profilowania. Przedstawia ono sesje, aplikacje oraz funkcje w postaci hierarchicznej struktury drzewa. Jedna sesja mo\u017ce zawiera\u0107 jedn\u0105 lub wi\u0119cej aplikacji, kt\u00f3rym mog\u0105 by\u0107 przypisane funkcje aplikacji.<\/p>\n<p data-start=\"288\" data-end=\"558\" data-is-last-node=\"\" data-is-only-node=\"\">Je\u017celi protok\u00f3\u0142 profilowania zawiera wi\u0119cej ni\u017c jedn\u0105 sesj\u0119, za pomoc\u0105 tego okna mo\u017cna wybra\u0107 sesj\u0119 przeznaczon\u0105 do analizy; jej nazwa zostanie w\u00f3wczas przeniesiona do pola <em data-start=\"461\" data-end=\"468\">Sesja<\/em> w obszarze zapyta\u0144. Analogicznie mo\u017cna post\u0119powa\u0107 z aplikacjami oraz funkcjami aplikacji.<\/p>\n<h4 id=\"instrukcja-protokoly-profilowania-dla-akcji-zaleznych-od-aplikacji\" ><span class=\"ez-toc-section\" id=\"Instrukcja_Protokoly_profilowania_dla_akcji_zaleznych_od_aplikacji\"><\/span>Instrukcja: Protoko\u0142y profilowania dla akcji zale\u017cnych od aplikacji<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p data-start=\"76\" data-end=\"642\">Jak opisano w artykule <em data-start=\"101\" data-end=\"127\">Optymalizacja wydajno\u015bci<\/em>, pojedyncza akcja, tzn. jeden <em data-start=\"158\" data-end=\"169\">roundtrip<\/em>, w aplikacji interaktywnej powinna w normalnym przypadku trwa\u0107 maksymalnie 0,5 sekundy. Je\u017celi akcja trwa d\u0142u\u017cej, czas oczekiwania jest przez u\u017cytkownika odbierany negatywnie. W przypadku akcji, kt\u00f3re u\u017cytkownik wykonuje szczeg\u00f3lnie cz\u0119sto, takich jak np. wprowadzanie nowej pozycji zlecenia sprzeda\u017cy, szczeg\u00f3lnie istotne jest, aby by\u0142y one realizowane mo\u017cliwie jak najszybciej. Rejestrowanie pozycji zam\u00f3wie\u0144 sprzeda\u017cy ma kluczowe znaczenie dla niemal wszystkich klient\u00f3w.<\/p>\n<p data-start=\"644\" data-end=\"765\">Za pomoc\u0105 protoko\u0142\u00f3w profilowania mo\u017cna zidentyfikowa\u0107 przyczyny, dla kt\u00f3rych niekt\u00f3re akcje trwaj\u0105 d\u0142ugo lub zbyt d\u0142ugo.<\/p>\n<p data-start=\"779\" data-end=\"1164\">Nie nale\u017cy w \u017cadnym wypadku aktywowa\u0107 profilowania na serwerze aplikacji, na kt\u00f3rym u\u017cytkownicy pracuj\u0105 produkcyjnie. W systemach produkcyjnych nale\u017cy zawsze korzysta\u0107 z dedykowanego serwera aplikacyjnego, na kt\u00f3rym aktywne jest wy\u0142\u0105cznie profilowanie. Poza systemami deweloperskimi wymagana jest do tego specjalna zdolno\u015b\u0107 administracyjna. Szczeg\u00f3\u0142y w rozdziale <a href=\"#specjalne\"><em>Mo\u017cliwo\u015bci specjalne<\/em><\/a>.<\/p>\n<p data-start=\"1166\" data-end=\"1180\" data-is-last-node=\"\" data-is-only-node=\"\"><strong data-start=\"1166\" data-end=\"1180\" data-is-last-node=\"\">Instrukcja<\/strong><\/p>\n<p data-start=\"0\" data-end=\"104\">Procedura rejestrowania na przyk\u0142ad operacji <em data-start=\"45\" data-end=\"83\">przej\u0119cia pozycji zam\u00f3wienia sprzeda\u017cy<\/em> wygl\u0105da nast\u0119puj\u0105co:<\/p>\n<ol>\n<li data-start=\"106\" data-end=\"217\">Aktywowa\u0107 profilowanie i natychmiast wstrzyma\u0107 rejestrowanie akcji:<br data-start=\"173\" data-end=\"176\" \/><code data-start=\"176\" data-end=\"217\">wrkprf -start:C:\\orderdetail.dat -pause<\/code><\/li>\n<li data-start=\"106\" data-end=\"217\"><code data-start=\"176\" data-end=\"217\"><\/code>Zalogowa\u0107 si\u0119 do odpowiedniego serwera aplikacji systemu ERP.<\/li>\n<li data-start=\"106\" data-end=\"217\">Otworzy\u0107 aplikacj\u0119 <em style=\"font-size: revert; color: initial;\" data-start=\"306\" data-end=\"326\">Zam\u00f3wienia sprzeda\u017cy<\/em><span style=\"font-size: revert; color: initial;\">.<\/span><\/li>\n<li data-start=\"106\" data-end=\"217\">Utworzy\u0107 nowe zam\u00f3wienie sprzeda\u017cy.<\/li>\n<li data-start=\"106\" data-end=\"217\">Wprowadzi\u0107 now\u0105 pozycj\u0119.<\/li>\n<li data-start=\"106\" data-end=\"217\">Aktywowa\u0107 rejestrowanie akcji w protokole profilowania: <code data-start=\"451\" data-end=\"467\">wrkprf -resume<\/code><\/li>\n<li data-start=\"106\" data-end=\"217\"><code data-start=\"451\" data-end=\"467\"><\/code>Przej\u0105\u0107 pozycj\u0119.<\/li>\n<li data-start=\"106\" data-end=\"217\">Zako\u0144czy\u0107 rejestrowanie protoko\u0142u profilowania: <code data-start=\"538\" data-end=\"552\">wrkprf -stop<\/code><\/li>\n<li data-start=\"106\" data-end=\"217\"><code data-start=\"538\" data-end=\"552\"><\/code>Przeanalizowa\u0107 protok\u00f3\u0142 profilowania za pomoc\u0105 aplikacji <em style=\"font-size: revert; color: initial;\" data-start=\"611\" data-end=\"647\">Zapytanie o protoko\u0142y profilowania<\/em><span style=\"font-size: revert; color: initial;\">.<\/span><\/li>\n<\/ol>\n<h4 id=\"przyczyny\" ><span class=\"ez-toc-section\" id=\"Przyczyny\"><\/span>Przyczyny<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p data-start=\"15\" data-end=\"178\">Dost\u0119py do bazy danych s\u0105 z do\u015bwiadczenia operacjami czasoch\u0142onnymi. O liczbie oraz czasie trwania <em data-start=\"114\" data-end=\"126\">roundtripu<\/em> decyduj\u0105 liczba i z\u0142o\u017cono\u015b\u0107 zapyta\u0144 do bazy danych.<\/p>\n<p data-start=\"180\" data-end=\"272\">Przyczynami zapyta\u0144 do bazy danych, kt\u00f3rych nale\u017cy unika\u0107, mog\u0105 by\u0107 m.in. nast\u0119puj\u0105ce akcje:<\/p>\n<p data-start=\"180\" data-end=\"272\"><strong>getObject<\/strong> &#8211;\u00a0 je\u017celi dla akcji <em data-start=\"346\" data-end=\"357\">getObject<\/em> zarejestrowano operacj\u0119 <em data-start=\"382\" data-end=\"386\">DB<\/em>, oznacza to, \u017ce nast\u0105pi\u0142 dost\u0119p do bazy danych. Je\u017celi dla operacji nie jest wy\u015bwietlane <em data-start=\"476\" data-end=\"480\">DB<\/em>, w\u00f3wczas dost\u0119p do bazy danych nie by\u0142 konieczny i czas tego dost\u0119pu mo\u017cna pomin\u0105\u0107. Je\u017celi jednak zapytanie do bazy danych nie znalaz\u0142o obiektu, wy\u015bwietlana jest operacja MS. Je\u017celi przy wielu dost\u0119pach rejestrowana jest operacja MS, jest to wskaz\u00f3wka na niekorzystn\u0105 implementacj\u0119 programistyczn\u0105.<br \/>\nDu\u017ca liczba pojedynczych dost\u0119p\u00f3w do tego samego obiektu biznesowego za pomoc\u0105 getObject \u015bwiadczy o braku przetwarzania blokowego w wykorzystywanej operacji.<br \/>\nPrzy dost\u0119pach odczytu do danych podstawowych nale\u017cy pami\u0119ta\u0107, \u017ce przy wype\u0142nionym cache\u2019u z regu\u0142y nie jest wymagany dost\u0119p do bazy danych.<\/p>\n<p data-start=\"180\" data-end=\"272\"><strong>getObjectArray<\/strong> &#8211; je\u017celi dla akcji <em data-start=\"1136\" data-end=\"1152\">getObjectArray<\/em> zarejestrowano operacj\u0119 <em data-start=\"1177\" data-end=\"1184\">DB[n]<\/em>, zapisywana jest liczba obiekt\u00f3w <em data-start=\"1218\" data-end=\"1221\">n<\/em>, kt\u00f3re zosta\u0142y odczytane z bazy danych. Je\u017celi <em data-start=\"1269\" data-end=\"1276\">n = 0<\/em>, dost\u0119p do bazy danych nie nast\u0105pi\u0142.<\/p>\n<p data-start=\"180\" data-end=\"272\"><strong>getObjectIterator<\/strong> &#8211;\u00a0ka\u017cde u\u017cycie iteratora obiekt\u00f3w powoduje jeden lub wi\u0119cej dost\u0119p\u00f3w do bazy danych. Je\u017celi obiekt biznesowy odczytywany przez iterator jest zarz\u0105dzany strategi\u0105 cache <em data-start=\"1502\" data-end=\"1523\">least recently used<\/em> (LRU), w jednym zapytaniu do bazy danych odczytywane s\u0105 klucze g\u0142\u00f3wne obiekt\u00f3w. Instancje obiekt\u00f3w biznesowych s\u0105 nast\u0119pnie odczytywane blokami po 16 obiekt\u00f3w za pomoc\u0105 <em data-start=\"1693\" data-end=\"1709\">getObjectArray<\/em>.<\/p>\n<p data-start=\"180\" data-end=\"272\"><strong>getResultSet<\/strong> &#8211; ka\u017cde u\u017cycie <em data-start=\"1741\" data-end=\"1752\">ResultSet<\/em> powoduje dok\u0142adnie jeden dost\u0119p do bazy danych.<\/p>\n<p data-start=\"1802\" data-end=\"2511\">W przypadku problem\u00f3w z wydajno\u015bci\u0105 zaleca si\u0119, aby w pierwszym zapisie profilowania najpierw zidentyfikowa\u0107 szczeg\u00f3lnie cz\u0119sto wykonywane akcje. Pozwala to w drugim zapisie okre\u015bli\u0107 informacje o stackframe. Przyk\u0142adowo, podczas analizy pierwszego zapisu mo\u017cna stwierdzi\u0107, \u017ce dany obiekt biznesowy jest otwierany cz\u0119\u015bciej, ni\u017c zak\u0142adano. Nast\u0119pnie mo\u017cna wskaza\u0107 ten obiekt biznesowy jako warunek stackframe dla drugiego zapisu. W rezultacie przy ka\u017cdym otwarciu tego obiektu rejestrowana b\u0119dzie odpowiednia informacja o stackframe. Umo\u017cliwia to identyfikacj\u0119 problematycznych fragment\u00f3w kodu i ich ewentualn\u0105 optymalizacj\u0119. Czasy wykonania zapyta\u0144 do bazy danych mo\u017cna okre\u015bli\u0107 za pomoc\u0105 monitor\u00f3w wydajno\u015bci.<\/p>\n<p data-start=\"2513\" data-end=\"2579\">Dalsze informacje znajduj\u0105 si\u0119 w dokumencie <a href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/monitory-wydajnosci\/\"><em data-start=\"2557\" data-end=\"2578\">Monitory wydajno\u015bci<\/em><\/a>.<\/p>\n<p data-start=\"2581\" data-end=\"2747\" data-is-last-node=\"\" data-is-only-node=\"\">W dokumencie <em data-start=\"2594\" data-end=\"2620\">Optymalizacja wydajno\u015bci<\/em>, w rozdziale <em data-start=\"2634\" data-end=\"2658\">Aplikacje interaktywne<\/em>, opisano, ile dost\u0119p\u00f3w do bazy danych jest dopuszczalnych w ramach jednego <em data-start=\"2734\" data-end=\"2746\">roundtripu<\/em>.<\/p>\n<h3 id=\"uprawnienia\" id=\"uprawnienia\" ><span class=\"ez-toc-section\" id=\"Uprawnienia\"><\/span>Uprawnienia<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Uprawnienia mog\u0105 zosta\u0107 przypisane za pomoc\u0105 r\u00f3l uprawnie\u0144 jak r\u00f3wnie\u017c poprzez przyporz\u0105dkowanie organizacji. Szczeg\u00f3\u0142owe informacje mo\u017cna znale\u017a\u0107 w artykule\u00a0<a href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/uprawnienia\/\"><em>Uprawnienia<\/em><\/a>.<\/p>\n<h4 id=\"mozliwosci-specjalne\" id=\"mozliwosci-specjalne\" ><span class=\"ez-toc-section\" id=\"Mozliwosci_specjalne\"><\/span><a id=\"specjalne\"><\/a>Mo\u017cliwo\u015bci specjalne<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Dla aplikacji <em>Zapytanie o protoko\u0142y profilowania <\/em>dost\u0119pna jest nast\u0119puj\u0105ce uprawnienie:<\/p>\n<p>com.cisag.sys.kernel.profiling<\/p>\n<p>Ta w\u0142a\u015bciwo\u015b\u0107 administracyjna jest potrzebna tylko w systemach deweloperskich, aby m\u00f3c przeprowadza\u0107 profilowanie.<\/p>\n<h4 id=\"przyporzadkowania-organizacji\" id=\"przyporzadkowania-organizacji\" ><span class=\"ez-toc-section\" id=\"Przyporzadkowania_organizacji\"><\/span>Przyporz\u0105dkowania organizacji<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Przyporz\u0105dkowanie organizacji nie jest wymagane.<\/p>\n<h4 id=\"funkcje-specjalne\" id=\"funkcje-specjalne\" ><span class=\"ez-toc-section\" id=\"Funkcje_specjalne\"><\/span><span id=\"Funkcje_specjalne\" class=\"ez-toc-section\"><\/span>Funkcje specjalne<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Dla aplikacji\u00a0<em>Zapytanie o protoko\u0142y profilowania <\/em>nie ma istniej\u0105 dodatkowe funkcje.<\/p>\n<h4 id=\"uprawnienia-dla-partnerow-biznesowych\" id=\"uprawnienia-dla-partnerow-biznesowych\" ><span class=\"ez-toc-section\" id=\"Uprawnienia_dla_partnerow_biznesowych\"><\/span><span id=\"Uprawnienia_dla_partnerow_biznesowych\" class=\"ez-toc-section\"><\/span>Uprawnienia dla partner\u00f3w biznesowych<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Aplikacja <em>Zapytanie o protoko\u0142y profilowania <\/em>nie jest autoryzowana dla partner\u00f3w biznesowych.<\/p>\n","protected":false},"author":27,"comment_status":"closed","ping_status":"closed","template":"","format":"standard","meta":{"footnotes":""},"class_list":["post-9260","ht_kb","type-ht_kb","status-publish","format-standard","hentry","ht_kb_category-persistence-service"],"_links":{"self":[{"href":"https:\/\/pomoc.comarch.pl\/cee\/index.php\/wp-json\/wp\/v2\/ht_kb\/9260","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pomoc.comarch.pl\/cee\/index.php\/wp-json\/wp\/v2\/ht_kb"}],"about":[{"href":"https:\/\/pomoc.comarch.pl\/cee\/index.php\/wp-json\/wp\/v2\/types\/ht_kb"}],"author":[{"embeddable":true,"href":"https:\/\/pomoc.comarch.pl\/cee\/index.php\/wp-json\/wp\/v2\/users\/27"}],"replies":[{"embeddable":true,"href":"https:\/\/pomoc.comarch.pl\/cee\/index.php\/wp-json\/wp\/v2\/comments?post=9260"}],"version-history":[{"count":8,"href":"https:\/\/pomoc.comarch.pl\/cee\/index.php\/wp-json\/wp\/v2\/ht_kb\/9260\/revisions"}],"predecessor-version":[{"id":41757,"href":"https:\/\/pomoc.comarch.pl\/cee\/index.php\/wp-json\/wp\/v2\/ht_kb\/9260\/revisions\/41757"}],"wp:attachment":[{"href":"https:\/\/pomoc.comarch.pl\/cee\/index.php\/wp-json\/wp\/v2\/media?parent=9260"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}