{"id":139,"date":"2013-06-19T08:45:23","date_gmt":"2013-06-19T06:45:23","guid":{"rendered":"http:\/\/explainit.pl\/blog\/?p=139"},"modified":"2016-08-09T20:57:59","modified_gmt":"2016-08-09T18:57:59","slug":"jak-mozemy-chronic-sie-przed-pogorszeniem-planu-wykonania","status":"publish","type":"post","link":"https:\/\/explainit.pl\/wordpress\/2013\/06\/19\/jak-mozemy-chronic-sie-przed-pogorszeniem-planu-wykonania\/","title":{"rendered":"Jak mo\u017cemy chroni\u0107 si\u0119 przed pogorszeniem planu wykonania?"},"content":{"rendered":"<p>Nierzadko spotykamy si\u0119 z problemem gwa\u0142townego pogorszenia wydajno\u015bci starej, wielokrotnie sprawdzonej i zoptymalizowanej aplikacji. Przyczyn\u0105 zwykle jest upgrade oprogramowania serwera bazy danych, zmiana sposobu zbierania statystyk dla optymalizatora zapyta\u0144, rekonfiguracja optymalizatora zapyta\u0144 czy zmiana ustawie\u0144 systemowych. Czy mo\u017cna jako\u015b uchroni\u0107 si\u0119 przed takimi wydajno\u015bciowymi niespodziankami w przysz\u0142o\u015bci?<\/p>\n<p>Istnieje mechanizm serwera bazy danych Oracle Database umo\u017cliwiaj\u0105cy ochron\u0119 dobrych, wydajnych plan\u00f3w wykonania zapyta\u0144 przed gwa\u0142townym pogorszeniem w wyniku zmian systemowych \u2013 SQL Plan Management. Zast\u0119puje on wcze\u015bniejsze rozwi\u0105zanie &#8211; Stored Outlines. Idea dzia\u0142ania SQL Plan Management polega na sporz\u0105dzeniu zbioru \u201eakceptowalnych\u201d plan\u00f3w wykonania danego zapytania SQL (tzw. SQL Plan Baseline), a nast\u0119pnie na niewykraczaniu przez optymalizator poza ten zbi\u00f3r. Gromadzenie \u201eakceptowalnych\u201d plan\u00f3w wykonania zapytania mo\u017ce przebiega\u0107 automatycznie \u2013 serwer por\u00f3wnuje ka\u017cdy nowy plan z najlepszym znajduj\u0105cym si\u0119 w SQL Plan Baseline i gdy jest lepszy, to dodaje go do SQL Plan Baseline (OPTIMIZER_CAPTURE_SQL_PLAN_BASELINES = TRUE) \u2013 lub manualnie \u2013 u\u017cytkownik wskazuje plany, kt\u00f3re powinny znale\u017a\u0107 si\u0119 w SQL Plan Baseline (DBMS_SPM.LOAD_PLANS_FROM_CURSOR_CACHE( sql_id =&gt; '&#8230;&#8217;)).<\/p>\n<p>Gdy optymalizator zapyta\u0144 przyst\u0119puje do realizacji kolejnego polecenia SQL, generuje \u201eoptymalny\u201d plan wykonania, po czym sprawdza, czy taki plan znajduje si\u0119 w SQL Plan Baseline dla tego polecenia SQL. Je\u015bli tak, to go stosuje, je\u015bli nie, to wybiera najlepszy spo\u015br\u00f3d plan\u00f3w w SQL Plan Baseline (OPTIMIZER_USE_SQL_PLAN_BASELINES = TRUE). Na potrzeby przysz\u0142ych analiz taki nieudany \u201eoptymalny\u201d plan jest zapisywany w tzw. historii plan\u00f3w dla zapytania.<\/p>\n<p>Oczywi\u015bcie komentarza wymaga kwestia oceniania plan\u00f3w wykonania przez optymalizator. Czy odbywa si\u0119 to na podstawie koszt\u00f3w? Nie, nie mia\u0142oby to sensu, gdy\u017c ca\u0142y ten mechanizm zosta\u0142 wprowadzony w\u0142a\u015bnie dlatego, \u017ce przewidywane koszty potrafi\u0105 k\u0142ama\u0107. Ocena (ewaluacja) plan\u00f3w wykonania na potrzeby SQL Plan Management odbywa si\u0119 eksperymentalnie (DBMS_SPM.EVOLVE_SQL_PLAN_BASELINE(sql_handle =&gt; '&#8230;&#8217;)).<\/p>\n<p>I jeszcze ciekawostka \u2013 plany nale\u017c\u0105ce do SQL Plan Baseline mog\u0105 by\u0107 przenoszone pomi\u0119dzy bazami danych (np. produkcyjn\u0105 i dewelopersk\u0105) \u2013 s\u0142u\u017cy do tego celu pakiet DBMS_SPM.<\/p>\n<p>Wi\u0119cej na temat SQL Plan Management: <a href=\"http:\/\/docs.oracle.com\/cd\/E11882_01\/server.112\/e16638\/optplanmgmt.htm#PFGRF007\">http:\/\/docs.oracle.com\/cd\/E11882_01\/server.112\/e16638\/optplanmgmt.htm#PFGRF007<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nierzadko spotykamy si\u0119 z problemem gwa\u0142townego pogorszenia wydajno\u015bci starej, wielokrotnie sprawdzonej i zoptymalizowanej aplikacji. Przyczyn\u0105 zwykle jest upgrade oprogramowania serwera bazy danych, zmiana sposobu zbierania statystyk dla optymalizatora zapyta\u0144, rekonfiguracja optymalizatora zapyta\u0144 czy zmiana ustawie\u0144 systemowych. Czy mo\u017cna jako\u015b uchroni\u0107 si\u0119 przed takimi wydajno\u015bciowymi niespodziankami w przysz\u0142o\u015bci? Istnieje mechanizm serwera bazy danych Oracle Database umo\u017cliwiaj\u0105cy <a href=\"https:\/\/explainit.pl\/wordpress\/2013\/06\/19\/jak-mozemy-chronic-sie-przed-pogorszeniem-planu-wykonania\/\" rel=\"nofollow\"><span class=\"sr-only\">Read more about Jak mo\u017cemy chroni\u0107 si\u0119 przed pogorszeniem planu wykonania?<\/span>[&hellip;]<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[2],"tags":[12,16],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.2.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Jak mo\u017cemy chroni\u0107 si\u0119 przed pogorszeniem planu wykonania? - Explain IT<\/title>\n<meta name=\"description\" content=\"Jak mo\u017cemy chroni\u0107 si\u0119 przed pogorszeniem planu wykonania?\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/explainit.pl\/wordpress\/2013\/06\/19\/jak-mozemy-chronic-sie-przed-pogorszeniem-planu-wykonania\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Jak mo\u017cemy chroni\u0107 si\u0119 przed pogorszeniem planu wykonania? - Explain IT\" \/>\n<meta property=\"og:description\" content=\"Jak mo\u017cemy chroni\u0107 si\u0119 przed pogorszeniem planu wykonania?\" \/>\n<meta property=\"og:url\" content=\"https:\/\/explainit.pl\/wordpress\/2013\/06\/19\/jak-mozemy-chronic-sie-przed-pogorszeniem-planu-wykonania\/\" \/>\n<meta property=\"og:site_name\" content=\"Explain IT\" \/>\n<meta property=\"article:published_time\" content=\"2013-06-19T06:45:23+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2016-08-09T18:57:59+00:00\" \/>\n<meta name=\"author\" content=\"Maciej Zakrzewicz\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Napisane przez\" \/>\n\t<meta name=\"twitter:data1\" content=\"Maciej Zakrzewicz\" \/>\n\t<meta name=\"twitter:label2\" content=\"Szacowany czas czytania\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minuty\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/explainit.pl\/wordpress\/2013\/06\/19\/jak-mozemy-chronic-sie-przed-pogorszeniem-planu-wykonania\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/explainit.pl\/wordpress\/2013\/06\/19\/jak-mozemy-chronic-sie-przed-pogorszeniem-planu-wykonania\/\"},\"author\":{\"name\":\"Maciej Zakrzewicz\",\"@id\":\"https:\/\/explainit.pl\/wordpress\/#\/schema\/person\/740773131bc169a2dc9c0e5e07476219\"},\"headline\":\"Jak mo\u017cemy chroni\u0107 si\u0119 przed pogorszeniem planu wykonania?\",\"datePublished\":\"2013-06-19T06:45:23+00:00\",\"dateModified\":\"2016-08-09T18:57:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/explainit.pl\/wordpress\/2013\/06\/19\/jak-mozemy-chronic-sie-przed-pogorszeniem-planu-wykonania\/\"},\"wordCount\":388,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/explainit.pl\/wordpress\/#organization\"},\"keywords\":[\"optymalizator\",\"plan management\"],\"articleSection\":[\"Oracle Database\"],\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/explainit.pl\/wordpress\/2013\/06\/19\/jak-mozemy-chronic-sie-przed-pogorszeniem-planu-wykonania\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/explainit.pl\/wordpress\/2013\/06\/19\/jak-mozemy-chronic-sie-przed-pogorszeniem-planu-wykonania\/\",\"url\":\"https:\/\/explainit.pl\/wordpress\/2013\/06\/19\/jak-mozemy-chronic-sie-przed-pogorszeniem-planu-wykonania\/\",\"name\":\"Jak mo\u017cemy chroni\u0107 si\u0119 przed pogorszeniem planu wykonania? - Explain IT\",\"isPartOf\":{\"@id\":\"https:\/\/explainit.pl\/wordpress\/#website\"},\"datePublished\":\"2013-06-19T06:45:23+00:00\",\"dateModified\":\"2016-08-09T18:57:59+00:00\",\"description\":\"Jak mo\u017cemy chroni\u0107 si\u0119 przed pogorszeniem planu wykonania?\",\"breadcrumb\":{\"@id\":\"https:\/\/explainit.pl\/wordpress\/2013\/06\/19\/jak-mozemy-chronic-sie-przed-pogorszeniem-planu-wykonania\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/explainit.pl\/wordpress\/2013\/06\/19\/jak-mozemy-chronic-sie-przed-pogorszeniem-planu-wykonania\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/explainit.pl\/wordpress\/2013\/06\/19\/jak-mozemy-chronic-sie-przed-pogorszeniem-planu-wykonania\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/explainit.pl\/wordpress\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Jak mo\u017cemy chroni\u0107 si\u0119 przed pogorszeniem planu wykonania?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/explainit.pl\/wordpress\/#website\",\"url\":\"https:\/\/explainit.pl\/wordpress\/\",\"name\":\"Explain IT\",\"description\":\"Autorska pracownia doradztwa i szkole\u0144 IT - Maciej Zakrzewicz - szkolenia, ekspertyzy, wdro\u017cenia. Technologie Oracle, PostgreSQL, MySQL.\",\"publisher\":{\"@id\":\"https:\/\/explainit.pl\/wordpress\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/explainit.pl\/wordpress\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pl-PL\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/explainit.pl\/wordpress\/#organization\",\"name\":\"Explain IT\",\"url\":\"https:\/\/explainit.pl\/wordpress\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/explainit.pl\/wordpress\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/explainit.pl\/wordpress\/wp-content\/uploads\/2016\/08\/explainITmini.png\",\"contentUrl\":\"https:\/\/explainit.pl\/wordpress\/wp-content\/uploads\/2016\/08\/explainITmini.png\",\"width\":196,\"height\":64,\"caption\":\"Explain IT\"},\"image\":{\"@id\":\"https:\/\/explainit.pl\/wordpress\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/explainit.pl\/wordpress\/#\/schema\/person\/740773131bc169a2dc9c0e5e07476219\",\"name\":\"Maciej Zakrzewicz\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/explainit.pl\/wordpress\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/9c98d020128b142a480aa35a22300a69?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/9c98d020128b142a480aa35a22300a69?s=96&d=mm&r=g\",\"caption\":\"Maciej Zakrzewicz\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Jak mo\u017cemy chroni\u0107 si\u0119 przed pogorszeniem planu wykonania? - Explain IT","description":"Jak mo\u017cemy chroni\u0107 si\u0119 przed pogorszeniem planu wykonania?","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/explainit.pl\/wordpress\/2013\/06\/19\/jak-mozemy-chronic-sie-przed-pogorszeniem-planu-wykonania\/","og_locale":"pl_PL","og_type":"article","og_title":"Jak mo\u017cemy chroni\u0107 si\u0119 przed pogorszeniem planu wykonania? - Explain IT","og_description":"Jak mo\u017cemy chroni\u0107 si\u0119 przed pogorszeniem planu wykonania?","og_url":"https:\/\/explainit.pl\/wordpress\/2013\/06\/19\/jak-mozemy-chronic-sie-przed-pogorszeniem-planu-wykonania\/","og_site_name":"Explain IT","article_published_time":"2013-06-19T06:45:23+00:00","article_modified_time":"2016-08-09T18:57:59+00:00","author":"Maciej Zakrzewicz","twitter_card":"summary_large_image","twitter_misc":{"Napisane przez":"Maciej Zakrzewicz","Szacowany czas czytania":"2 minuty"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/explainit.pl\/wordpress\/2013\/06\/19\/jak-mozemy-chronic-sie-przed-pogorszeniem-planu-wykonania\/#article","isPartOf":{"@id":"https:\/\/explainit.pl\/wordpress\/2013\/06\/19\/jak-mozemy-chronic-sie-przed-pogorszeniem-planu-wykonania\/"},"author":{"name":"Maciej Zakrzewicz","@id":"https:\/\/explainit.pl\/wordpress\/#\/schema\/person\/740773131bc169a2dc9c0e5e07476219"},"headline":"Jak mo\u017cemy chroni\u0107 si\u0119 przed pogorszeniem planu wykonania?","datePublished":"2013-06-19T06:45:23+00:00","dateModified":"2016-08-09T18:57:59+00:00","mainEntityOfPage":{"@id":"https:\/\/explainit.pl\/wordpress\/2013\/06\/19\/jak-mozemy-chronic-sie-przed-pogorszeniem-planu-wykonania\/"},"wordCount":388,"commentCount":0,"publisher":{"@id":"https:\/\/explainit.pl\/wordpress\/#organization"},"keywords":["optymalizator","plan management"],"articleSection":["Oracle Database"],"inLanguage":"pl-PL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/explainit.pl\/wordpress\/2013\/06\/19\/jak-mozemy-chronic-sie-przed-pogorszeniem-planu-wykonania\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/explainit.pl\/wordpress\/2013\/06\/19\/jak-mozemy-chronic-sie-przed-pogorszeniem-planu-wykonania\/","url":"https:\/\/explainit.pl\/wordpress\/2013\/06\/19\/jak-mozemy-chronic-sie-przed-pogorszeniem-planu-wykonania\/","name":"Jak mo\u017cemy chroni\u0107 si\u0119 przed pogorszeniem planu wykonania? - Explain IT","isPartOf":{"@id":"https:\/\/explainit.pl\/wordpress\/#website"},"datePublished":"2013-06-19T06:45:23+00:00","dateModified":"2016-08-09T18:57:59+00:00","description":"Jak mo\u017cemy chroni\u0107 si\u0119 przed pogorszeniem planu wykonania?","breadcrumb":{"@id":"https:\/\/explainit.pl\/wordpress\/2013\/06\/19\/jak-mozemy-chronic-sie-przed-pogorszeniem-planu-wykonania\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/explainit.pl\/wordpress\/2013\/06\/19\/jak-mozemy-chronic-sie-przed-pogorszeniem-planu-wykonania\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/explainit.pl\/wordpress\/2013\/06\/19\/jak-mozemy-chronic-sie-przed-pogorszeniem-planu-wykonania\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/explainit.pl\/wordpress\/"},{"@type":"ListItem","position":2,"name":"Jak mo\u017cemy chroni\u0107 si\u0119 przed pogorszeniem planu wykonania?"}]},{"@type":"WebSite","@id":"https:\/\/explainit.pl\/wordpress\/#website","url":"https:\/\/explainit.pl\/wordpress\/","name":"Explain IT","description":"Autorska pracownia doradztwa i szkole\u0144 IT - Maciej Zakrzewicz - szkolenia, ekspertyzy, wdro\u017cenia. Technologie Oracle, PostgreSQL, MySQL.","publisher":{"@id":"https:\/\/explainit.pl\/wordpress\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/explainit.pl\/wordpress\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"pl-PL"},{"@type":"Organization","@id":"https:\/\/explainit.pl\/wordpress\/#organization","name":"Explain IT","url":"https:\/\/explainit.pl\/wordpress\/","logo":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/explainit.pl\/wordpress\/#\/schema\/logo\/image\/","url":"https:\/\/explainit.pl\/wordpress\/wp-content\/uploads\/2016\/08\/explainITmini.png","contentUrl":"https:\/\/explainit.pl\/wordpress\/wp-content\/uploads\/2016\/08\/explainITmini.png","width":196,"height":64,"caption":"Explain IT"},"image":{"@id":"https:\/\/explainit.pl\/wordpress\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/explainit.pl\/wordpress\/#\/schema\/person\/740773131bc169a2dc9c0e5e07476219","name":"Maciej Zakrzewicz","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/explainit.pl\/wordpress\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/9c98d020128b142a480aa35a22300a69?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9c98d020128b142a480aa35a22300a69?s=96&d=mm&r=g","caption":"Maciej Zakrzewicz"}}]}},"_links":{"self":[{"href":"https:\/\/explainit.pl\/wordpress\/wp-json\/wp\/v2\/posts\/139"}],"collection":[{"href":"https:\/\/explainit.pl\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/explainit.pl\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/explainit.pl\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/explainit.pl\/wordpress\/wp-json\/wp\/v2\/comments?post=139"}],"version-history":[{"count":2,"href":"https:\/\/explainit.pl\/wordpress\/wp-json\/wp\/v2\/posts\/139\/revisions"}],"predecessor-version":[{"id":340,"href":"https:\/\/explainit.pl\/wordpress\/wp-json\/wp\/v2\/posts\/139\/revisions\/340"}],"wp:attachment":[{"href":"https:\/\/explainit.pl\/wordpress\/wp-json\/wp\/v2\/media?parent=139"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/explainit.pl\/wordpress\/wp-json\/wp\/v2\/categories?post=139"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/explainit.pl\/wordpress\/wp-json\/wp\/v2\/tags?post=139"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}