Oracle
 sql >> база данни >  >> RDS >> Oracle

Лабиринтът за настройка на производителността

Един ден се събуждате и установявате, че сте администратор на база данни на Oracle. Боговете най-накрая видяха светлината на истинския ви потенциал и ви позволиха да работите на най-добрата работа в света! Започвате кариерата си в DBA с толкова светли очи и буйни опашки. Създавате нови бази данни, предоставяте привилегии, пишете PL/SQL код. Животът е прекрасен. Нямате търпение да станете сутрин, да налеете първата чаша кафе и да насочите браузъра си към любимите си форуми на Oracle, нетърпеливи да попиете знанията за цял живот преди обяд! Ако тези богове все още ви се усмихват, може дори да отговорите на няколко въпроса и да получите страхотни точки. Животът е добър. Животът е сладък.

Докато все още се наслаждавате на блясъка на новооткритата си кариера, някой идва при вас с проблем. Проблем с производителността. Замръзваш. Има малка буца в гърлото ви, когато стигнете до самоосъзнаването, че нямате идея как да разрешите проблемите с производителността на базата данни. Това, което не осъзнахте в този ден, е, че всеки DBA преди вас е бил в точно същата ситуация в началото на кариерата си. И все пак това не пречи на другия човек да ви гледа и да се чуди защо не решавате проблема с производителността незабавно. В крайна сметка вие сте DBA и трябва да знаете как да правите тези неща. Това вълшебно нещо, което наричат ​​(подкажи на ангелите да пеят) Настройка на изпълнение . Тъй като е писано, ако искате да бъдете DBA и да оцелеете и да вършите добре тази работа, ще трябва да настроите производителността. Други никога няма да разберат какво се случва зад завесата, докато правите отвари и правите заклинания. Единственото, което ги интересува, е, че сте разрешили проблема им с производителността и те могат да продължат с ежедневната си работа.

В този момент в началото на кариерата си всеки DBA решава, че трябва да научи повече за това нещо, което наричат ​​Настройка на производителността . Какво е? Как го правя? Как мога да стана най-важният човек в моя ИТ отдел, защото открих тайния сос да превърна този 5-часов доклад в 1-минутно чудо?

О, тогава бяхме толкова млади… толкова наивни. Мислехме, че е лесно. Натиснете няколко бутона, задействайте няколко инструмента и вече. Решението за настройка на производителността е намерено и ние сме прекрасни! Животът изглеждаше толкова лесен, докато се подвизавахме по този жълт тухлен път. Но по този път няма плашещи врани. Без лъвове. Без тенекиени човечета. Дори няма сладки кученца на име Тото. Не… този път… този път за настройка на производителността на Oracle е изпълнен с неща много по-големи. По този път срещаме комунални услуги и инструменти. Срещаме се с Explain Plan. Срещаме tkprof и SQLT. Откриваме прекрасни гледки като V$SGA_TARGET_ADVICE и V$SESSION_WAIT и неговите близнаци V$SESSION_EVENT (не еднояйчните близнаци, имайте предвид, но един поглед и знаете, че са свързани).

Така че ето ви. Вашето лъскаво заглавие на DBA все още седи под вашето име във всеки имейл подпис, който изпращате. И сега имате всички тези прекрасни инструменти на ваше разположение. Взехте ASH и AWR, защото за щастие вашата компания ви подари диагностичния пакет. Вашият рафт за книги е въоръжен със страхотни томове като този. (Безсрамен щепсел знам). Някой страхотен човек във форумите, като мен, те насочи към Лайти. На ваше разположение имате цял набор от инструменти. Не! Не кутия с инструменти….warest! Малките държави на други места по света нямат арсенала, с който разполагате. Защо... бих могъл да докосна този суперсекретен бутон в SQL Tuning Advisor и да издуха една от тези държави, *и* накарайте SQL ID 98byz76pkyql да работи по-бързо, докато от кафето ми все още се вдига пара... толкова съм добър.

Спомняте ли си онзи ден, когато получихте първия си проблем с представянето и имате тази буца в гърлото? Има още един такъв ден в кариерата ви в DBA. Това е денят, в който достигате до Лабиринта за настройка на производителността (показвайте гръмотевиците и светкавиците). Но това не е никакъв лабиринт. Това е различно. Повечето лабиринти имат един вход и един изход, с много завои и решения по пътя. Този лабиринт, защо, този лабиринт очевидно е различен. Този лабиринт има много, много входове. И този лабиринт има много, много изходи. Всеки вход е различен инструмент за настройка на производителността. И всеки изход е решение , но не всички решения наистина решават проблема с производителността. И това е загадката, пред която са изправени специалистите по настройка на производителността на Oracle. Имам проблем с производителността. Знам, че от другата страна на този лабиринт е моето решение. Но кой вход да избера? Над единия вход е изписан План за обяснение. На друг вход е изписано V$DB_CACHE_ADVICE. Защо има всички тези входове, по един за всеки инструмент на мое разположение. Това е приказка от младостта ми и се надявам, както Билбо писа на Фродо, тази история може да ви помогне и във вашите приключения.

Затова избирам вход.

Влизам в лабиринта.

Направих ли добър избор?

Е, нека видим докъде отива това. Отпред пътят прави ляв завой. Но това е единственият ми избор, така че ще го направя. След това стигам до кръстовище. Мога да вървя надясно или наляво. Правя десен завой. Опа… задънена улица. Затова се връщам назад и поемам наляво. Друг задънена улица. Drats. Влязох в лабиринта неправилно. Понякога инструментите не ви водят до никакво решение. Затова се връщам към входовете и правя друг избор, избрах друг инструмент.

Сега влязох в лабиринта за втори път. Но нещата изглеждат много по-добре. продължавам. Само още няколко завоя. Виждам светлина, за да знам, че съм близо до края. Да… ето го, изходът. Най-накрая излизам от другата страна на лабиринта. Имам решението си за настройка на производителността, но след като го внедря, бързо осъзнавам, че това изобщо не е решило проблема ми с производителността. Понякога инструментите могат да ви отведат до решения, които нямат отношение към конкретния ви проблем. Така че е време за третия ми вход в лабиринта.

Сега, като проницателен специалист по настройка на производителността, разбрах, че всички входове, които избрах досега, са свързани с цялостната производителност на базата данни, но това, което наистина търся, е производителността, свързана с конкретен SQL израз. Но не знам кой SQL израз се нуждае от настройка. Как мога да разбера коя? Ами три врати надолу е входът към лабиринта, отбелязан SQL Trace. Точно до него има врата с надпис EM Search Sessions. Хвърлям монета и избирам SQL Trace. Малко след като вляза в лабиринта, стигам до Т-образно кръстовище. Ако отида наляво, това ме отвежда обратно до вратата на EM Search Sessions. Ако отида надясно, е прав изстрел към изхода. Естествено тръгвам надясно. Но точно в този момент знам, че понякога два различни инструмента ще ви доведат до един и същ отговор. Когато излизам от лабиринта, получавам безплатен пропуск до tkprof, защото в крайна сметка всички пътища на SQL Trace не водят направо до tkprof? Сега имам обидното SQL изявление. Но моят проблем все още не е решен. Какво да правя?

Връщам се към входа на лабиринта. Понякога, получаваме отговор от нашите инструменти за настройка и трябва да извършим още едно пропускане през лабиринта, за да разберем окончателния отговор. Този път влизам през вратата на SQLT. Няколко обрати, но този лабиринт е доста лесен, или поне така изглежда. Стигам до края и имам не само един отговор, но и много отговори. О... прекрасен ден! Намерих майката на всички инструменти.

Чух други администратори на база данни да говорят за тези чудесни инструменти като SQLT и AWR Reports. Колко са прекрасни. Тези инструменти са толкова страхотни, че някои DBA виждат само входовете на SQLT и AWR Report. Винаги съм мислил, че това е нещо от легенди, но ето че най-накрая и аз намерих единствения инструмент, който да управлява всички... добре... по един за всяка ръка. Имам на разположение всички тези отговори. Сега кой отговор е пряко свързан с моя проблем с производителността. Тук имам моя SQLT отчет и имам всички тези отговори, съдържащи се в него. Кой отговор е мой. Кое?!?!? Понякога инструментите ще ви дадат твърде много информация. За мен, който е нов в това нещо за настройка на производителността, изходът на SQLT може също да бъде написан на клингон. Но имам късмет, че познавам колега DBA, който седи на два куба по-надолу от мен, който говори клингонски. Давам му своя SQLT изход. Той го преглежда и в рамките на 30 секунди посочва една малка част от доклада и казва тези магически думи. „Виж… точно там… това е твой проблем“. С въпросително изражение на лицето ми, той махва с ръка над отчета и сякаш по магия Google Translate промени няколко думи на страницата и вече ясно виждам, че имам таблица с много лоши статистически данни. Понякога инструментите с всички тези отговори са страхотно спестяване на време за тези, които знаят как да ги използват. Този клингонски DBA надига очилата си и разкрива друг раздел от SQLT доклада. „Вижте тук, той казва… тези лоши статистически данни налагат FTS“, сякаш трябва да знам какво представлява FTS в този момент от кариерата ми. Но не искам да изглеждам като пълен n00b, затова се усмихвам и кимам в знак на съгласие.

Добре… Приближавам се до решаването на проблема си. Знам, че имам лоша статистика. Връщам се към бюрото си с нетърпение да се захвана за работа, за да реша най-накрая проблема си. Докато минавам покрай охладителя за вода и обикалям постоянно присъстващата тълпа от мои колеги без нищо по-добро за правене през целия ден, освен да си чатят, слънцето грее от едната врата към лабиринта и хваща ъгълчето на окото ми… само една врата. Над тази врата има табела с надпис DBA_TABLES. Е, като всеки добър DBA, казвам си, че не е лоша идея да проверите два пъти тези неща. Започвам да го привличам, влизам във вратата на DBA_TABLES и отново съм в лабиринта. Правя бърз завой и нещо изскача от мен, сякаш за да ме стресне. Но ставам добър в това. Не ме интересува, че някой малък обитател на лабиринта настоява да ми каже, че тази маса се намира в пространството за таблици ПОТРЕБИТЕЛИ. Бързо разбрах, че това няма значение за моя проблем. Продължавам и пренебрегвам всички тези дребни импресии с тяхната фалшива информация. натискам. И ето го… потвърждение на изхода от лабиринта, че няма статистика на тази маса. Тук беше научен бърз урок, понякога инструментите ще ви дадат информация, която не е от значение за вас в този ден .

Може да съм нов в тази DBA игра, но знам това. Трябва да видя как се представят нещата сега, да направя промяна и да измеря подобрението на производителността, ако има такова. Така че се връщам към лабиринта. Този път влизам през вратата, обозначена с SQL Developer Autotrace, и изпълнявам обидния SQL оператор. Получавам не само времето за изпълнение на SQL израза, но мога да видя броя на четенията и плана за изпълнение. Бързо актуализирам статистиката на масата, която ми посочи моят клингонски приятел. (Бързо настрана… Някога си мислех, че е идиот, но сега не е толкова лош. Мога да се уча от този човек. Може би един ден и аз мога да говоря клингонски). След това влизам отново във вратата на SQL Developer Autotrace. Не само, че изпълнението на заявката ми намаля от 2 минути изпълнение на 2 секунди, но и четенията намаляха значително и Планът за обяснение се подобри. Добре, последната част е малко напрегната. Все още съм твърде зелен, за да знам, че планът Explain е по-добър, но като се върна назад към него по-късно в кариерата си, знам, че е бил. Бързо научавам, чепонякога инструментите за настройка на производителността са на мое разположение не само, за да помогнат за намирането на основната причина за проблема, но и да потвърдят, че решението действително е отстранило проблема. И понякога инструментите за потвърждаване на резултатите не са инструментите, които използвах, за да открия първопричината.

Бързо информирах моя краен потребител, че проблемът е разрешен. Потребителят мрънка нещо, което не можах да разбера и проверява дали животът му всъщност е по-добър. И тогава го получавам. Най-големият подарък, който един DBA може да получи. Точно така... Получих обожание на потребителите . Днес аз съм чудотворец или поне така си мисли потребителят. Докато стоя в куба на този потребител, той извиква „ТОЙ ГО ПОПРАВЯ“ и по сигнал главата на целия отдел изскача над кубичните стени като гофери от земята. Ура.. те наздравяват! Обичам живота, греещ се в сиянието. Защо шефката дори предлага да ни заведе в кръчмата след работа..първият кръг е на нея.

Връщам се до бюрото си, нетърпелив да поема следващото предизвикателство. Тази работа не може да бъде по-сладка.

Спомням си първите си срещи с този Performance Tuning Maze, сякаш беше вчера. Когато се шегувахме с халби в кръчмата онази вечер, не посмях да говоря за някои от нещата, които видях в онзи лабиринт. Колегите ми така или иначе нямаше да разберат. Никога не разказвам на никого за битките си с MOS драконите. Бях изгарян твърде много пъти. Никога не казвам на никого колко е скучно да изпълняваш заявка, да чакаш един час за резултат, да опиташ отново, да чакаш един час, да опиташ пак, да чакаш един час.. опа.. Заспах си там. Изпитанията и премеждията на моята младост са по-добре запазени за друг път. Може би ще напиша друга книга.

Но аз научих много в онези дни. С течение на времето станах по-добър и избрах най-добрия вход към лабиринта за проблема. В крайна сметка, само с опит човек може да стане по-добър с тези магически еликсири за настройка на производителността. Научих също, че понякога един инструмент изглежда е правилният за работата, само за да открия отчасти чрез усилията за настройка, че друг инструмент е по-подходящ.

Освен това научих, че само да работя с инструментите и да науча в какво са добри и обратно в какво не са добри, че мога най-добре да избера подходящия инструмент за работата. Навремето, If често ми се струваше, че се опитвам да завия винт с чук. Сега виждам винт и знам, че най-добрият инструмент е отвертката.

С течение на времето увеличих броя на входовете в моя лабиринт за настройка на производителността. Все още минавам през изпитаните и верни врати, като с една само с число над нея, 10046. В миналото ми казаха за магически врати, които водеха до дъги и еднорози, само за да открия още един сприхав стар трол под мост. В началото бях скептичен относно това, че Lighty е толкова магически инструмент, но сгреших за това.

О, приказките, които бих могъл да ви разкажа, но тази история наистина е за този лабиринт за настройка на производителността. Винаги се свежда до този лабиринт. Изберете най-добрата възможна врата, но само опитът може да ви каже коя е най-добрата. Това ще ви позволи да стигнете до вашето решение най-бързо. Направете грешен завой и започнете отначало. Не се страхувайте да влезете в лабиринта няколко пъти. Когато смятате, че имате решението, преминете през лабиринта, за да проверите. Този вълшебен лабиринт за настройка на производителността с всички тези чудни помощни програми и инструменти за настройка на производителността на Oracle сега се превърна в едно от любимите ми места за излизане. Обичам да добавям повече входове през цялото време, надявайки се, че всеки нов инструмент ще ме отведе до края на лабиринта много по-бързо. Понякога го правят, а понякога не.

Все още си спомням дните, когато се мотаех в стария лабиринт за настройка, базирана на съотношения, но преминах към по-зелени пасища. Все още се смея, когато видя някакъв нов DBA да стои пред този стар лабиринт, покрит с паяжини и те просто не могат да разберат намек. И тогава ставам капризен, когато им крещя да забравят за този лабиринт и да дойдат тук, където всички останали се мотаят, само за да бъда отхвърлен от някой, който си мисли, че знае по-добре. Е, ако някога ги видим отново, можем да кажем „казах ти“ и да се посмеем.

Често работя с хора, които ме виждат да използвам някои от тези лъскави инструменти. Гледат ме как влизам в лабиринта и излизам от другата страна с отговора. Така че техният очевиден следващ въпрос е „Мога ли и аз да вляза през тази врата?“ усмихвам се. „Разбира се… продължете“, казвам им. Въоръжени с този страхотен инструмент за настройка, но без познания за това как да настроят Oracle, те правят доста добър, но слаб опит. Викат ме в лабиринта и ме молят да им помогна да решат проблема. Затова стартираме инструмента и го разглеждаме. Веднага разпознавам основната причина за проблема, но лъскавите звънци и свирки на инструмента объркват неофита. В този момент сега говоря клингонски. След секунди казвам „Вижте… точно там… това е вашият проблем“. и получавам отново същия въпрос, който дадох на моя DBA ментор преди толкова много години. Тези новаци винаги искат достъп до инструментите и смятат, че могат да ги владеят като майстор. Те нямат представа какво има в лабиринта, нито как да се движат в него. Твърде много хора смятат, че инструментите са тайният сос, когато наистина е човекът, който притежава инструмента. За съжаление някои хора с достъп до инструментите просто искат бърз и лесен отговор. Те не искат да отделят време като толкова много от нас.

Време, време да следваш майсторите. Всички имаме своя версия на планината Ръшмор. Издълбани в камък. Хора като Милсап, Луис и Шалахамър, за да назовем само няколко. Вашият Mt Rushmore може да има други имена или дори подобни. Други, които разглеждат нашата планина Ръшмор, цяла в камък, не осъзнават, че тези прекрасни хора са били нашите водачи в лабиринта. Те ни показаха как да се движим в лабиринта. Те ни показаха как да използваме инструментите и кои инструменти да използваме кога. Тези от нас, които са се научили от майсторите, се опитват да го изплатят напред и да учат другите, въпреки че може никога да не постигнем толкова високи висоти и това е добре.

Моралът на историята е да научите тези инструменти, да научите какво правят и какво не правят. Научете кои проблеми помагат за справяне. Използвайте инструментите, но осъзнайте, че трябва да научите колкото можете повече, за да можете да вървите из лабиринта с увереност. За съжаление трябва да завърша историята си тук. Някой току-що дойде в офиса ми с друг проблем с настройката на производителността. Време е отново да влезете в лабиринта. Сега коя врата да взема?


No
  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Съображения за производителност за временни данни в Oracle

  2. Как да извлечете данни от курсора в Oracle, използвайки For Loop

  3. Инсталиране на Oracle 12c Standard Edition на Windows 10 Professional

  4. 12c Автоматично попълване на колона със стойност на последователността

  5. Генерирайте тестови данни с помощта на Oracle PL/SQL разработчик