Um dia, você acorda e descobre que é um administrador de banco de dados Oracle. Os deuses finalmente viram a luz do seu verdadeiro potencial e permitiram que você trabalhasse no melhor emprego do mundo! Você começa sua carreira de DBA com olhos brilhantes e cauda espessa. Você está criando novos bancos de dados, concedendo privilégios, escrevendo código PL/SQL. A vida é ótima. Você mal pode esperar para acordar de manhã, servir a primeira xícara de café e apontar seu navegador para seus fóruns favoritos da Oracle, ansioso para absorver o conhecimento de uma vida inteira antes do almoço! Se esses deuses ainda estiverem sorrindo para você, você pode até responder a algumas perguntas e ser recompensado com pontos incríveis. A vida é boa. A vida é doce.
Enquanto você ainda está aproveitando o brilho de sua carreira recém-descoberta, alguém vem até você com um problema. Um problema de desempenho. Você congela. Há um pequeno nó na garganta quando você percebe que não tem ideia de como resolver problemas de desempenho do banco de dados. O que você não percebeu naquele dia é que todos os DBA antes de você estiveram exatamente nessa mesma situação no início de suas carreiras. No entanto, isso não impede que a outra pessoa olhe para você se perguntando por que você não está resolvendo o problema de desempenho imediatamente. Afinal, você é o DBA e deve saber fazer essas coisas. Essas coisas mágicas que eles chamam (deixa os anjos cantando) Afinação de desempenho . Pois está escrito, se você vai ser um DBA e sobreviver, e fazer bem este trabalho, você terá que ajustar o desempenho. Outros nunca saberão o que se passa atrás da cortina enquanto você faz poções e lança feitiços. Tudo o que importa para eles é que você resolveu o problema de desempenho deles e eles podem continuar com o trabalho diário.
Neste ponto, no início de sua carreira, todo DBA decide que precisa aprender mais sobre isso que eles chamam de Ajuste de desempenho . O que é isso? Como eu faço isso? Como posso me tornar a pessoa mais importante do meu departamento de TI porque descobri o segredo para transformar aquele relatório de 5 horas em um milagre de 1 minuto?
Oh, nós éramos tão jovens naquela época... tão ingênuos. Pensávamos que era fácil. Aperte alguns botões, acione algumas ferramentas e pronto. A solução de ajuste de desempenho foi encontrada e somos maravilhosos! A vida parecia tão fácil quando nos aventuramos por aquela estrada de tijolos amarelos. Mas nesta estrada, não há corvos assustadores. Sem leões. Nada de homens de lata. Nem mesmo nenhum cachorrinho fofo chamado Toto. Não... este caminho... este caminho do Oracle Performance Tuning está repleto de coisas muito maiores. Nesta estrada, encontramos utilidades e ferramentas. Nós conhecemos o Plano de Explicação. Conhecemos tkprof e SQLT. Encontramos vistas maravilhosas como V$SGA_TARGET_ADVICE e V$SESSION_WAIT e seu gêmeo V$SESSION_EVENT (não são gêmeos idênticos, mas um olhar e você sabe que eles estão relacionados).
Então aí está você. Seu brilhante título de DBA ainda está sob seu nome em cada assinatura de e-mail que você envia. E agora você tem todas essas ferramentas maravilhosas à sua disposição. Você escolheu ASH e AWR porque felizmente sua empresa lhe presenteou com o Diagnostics Pack. Sua estante está armada com grandes volumes como este. (Tomada sem vergonha eu sei). Um cara legal nos fóruns, como eu, deu a dica para Lighty. Você tem uma caixa de ferramentas inteira à sua disposição. Não! Não caixa de ferramentas….warches! Pequenos países em outros lugares do mundo não têm o arsenal que você tem à sua disposição. Por que... eu poderia tocar naquele botão super-secreto no SQL Tuning Advisor e explodir um desses países, *e* faça o SQL ID 98byz76pkyql rodar mais rápido enquanto meu café ainda tem vapor saindo dele... eu sou tão bom.
Lembra daquele dia em que você recebeu seu primeiro problema de performance e ficou com aquele nó na garganta? Há outro dia como esse em sua carreira de DBA. É o dia em que você chega ao Labirinto de ajuste de desempenho (cue o trovão e o relâmpago). Mas isso não é qualquer labirinto. Isto é diferente. A maioria dos labirintos tem uma entrada e uma saída, com muitas voltas e decisões ao longo do caminho. Este labirinto, ora, este labirinto é obviamente diferente. Este labirinto tem muitas, muitas entradas. E este labirinto tem muitas, muitas saídas. Cada entrada é uma ferramenta de ajuste de desempenho diferente. E cada saída é uma solução , mas nem todas as soluções realmente resolvem o problema de desempenho. E esse é o dilema enfrentado pelos especialistas em ajuste de desempenho da Oracle. Eu tenho um problema de desempenho. Eu sei que do outro lado deste labirinto está a minha solução. Mas qual entrada eu escolho? Uma entrada tem o Plano de Explicação escrito acima dela. Outra entrada tem V$DB_CACHE_ADVICE escrito nela. Por que existem todas essas entradas, uma para cada ferramenta à minha disposição. Este é um conto da minha juventude e espero que, como Bilbo escreveu para Frodo, essa história também possa ajudá-lo em suas aventuras.
Então eu escolho uma entrada.
Eu entro no labirinto.
Fiz uma boa escolha?
Bem, vamos ver onde isso vai dar. Mais à frente, a estrada faz uma curva à esquerda. Mas é minha única escolha, então eu vou com ela. Em seguida, chego a um cruzamento. Posso ir para a direita ou para a esquerda. Eu faço uma curva à direita. Ops… beco sem saída. Então eu recuo e viro à esquerda em vez disso. Outro beco sem saída. Drats. Entrei no labirinto incorretamente. Às vezes, as ferramentas não levam você a nenhuma solução. Então eu volto para as entradas e faço outra escolha, escolhi uma ferramenta diferente.
Agora entrei no labirinto pela segunda vez. Mas as coisas estão muito melhores. Eu continuo. Só mais algumas voltas. Eu posso ver a luz, então eu sei que estou chegando perto do fim. Sim... aí está, a saída. Eu finalmente saio do outro lado do labirinto. Eu tenho minha solução de ajuste de desempenho em mãos, mas depois de implementar a solução, percebi rapidamente que isso não resolveu meu problema de desempenho. Às vezes, as ferramentas podem levar você a soluções que não têm relação com seu problema específico. Então é hora da minha terceira entrada no labirinto.
Agora, sendo um especialista em ajuste de desempenho astuto, percebi que todas as entradas que escolhi até agora estão relacionadas ao desempenho geral do banco de dados, mas o que estou realmente procurando é o desempenho relacionado a uma instrução SQL específica. Mas não sei qual instrução SQL precisa de ajuste. Como posso descobrir qual? Bem, três portas abaixo, há uma entrada para o labirinto marcado como SQL Trace. Bem ao lado há uma porta marcada como EM Search Sessions. Eu lanço uma moeda e escolho SQL Trace. Pouco depois de entrar no labirinto, chego a uma interseção em T. Se eu for para a esquerda, isso me leva de volta à porta da EM Search Sessions. Se eu for para a direita, é um tiro direto para a saída. Naturalmente eu vou para a direita. Mas é neste momento que eu sei que às vezes, duas ferramentas diferentes levarão você à mesma resposta. Ao sair do labirinto, recebo um passe livre para o tkprof porque, afinal, todas as estradas do SQL Trace não levam direto ao tkprof? Agora tenho a instrução SQL incorreta. Mas meu problema ainda não foi resolvido. O que fazer?
Eu volto para a entrada do labirinto. Às vezes, recebemos uma resposta de nossas ferramentas de ajuste e precisamos executar outra corrida pelo labirinto para detalhar a resposta final. Desta vez, entro na porta SQLT. Algumas voltas e mais voltas, mas esse caminho de labirinto é bem fácil, ou assim parece. Chego ao fim e não tenho apenas uma resposta, tenho muitas respostas. Oh... dia glorioso! Encontrei a mãe de todas as ferramentas.
Ouvi outros DBAs falarem dessas ferramentas milagrosas como SQLT e AWR Reports. Como são maravilhosos. Essas ferramentas são tão boas que alguns DBAs veem apenas as entradas do Relatório SQLT e AWR. Eu sempre pensei que isso era coisa de lendas, mas aqui, finalmente, eu também encontrei a única ferramenta para governar todos eles... ok... um para cada mão. Tenho todas essas respostas à minha disposição. Agora, qual resposta está diretamente relacionada ao meu problema de desempenho. Aqui eu tenho meu relatório SQLT e tenho todas essas respostas contidas nele. Qual resposta é minha. Qual deles?!?!? Às vezes, as ferramentas fornecem muitas informações. Para mim, que é novo nessa coisa de ajuste de desempenho, a saída do SQLT também pode ser escrita em Klingon. Mas, para minha sorte, conheço um colega DBA que fica dois cubos abaixo de mim e que fala Klingon. Entrego a ele minha saída SQLT. Ele o folheia e, em 30 segundos, aponta uma pequena seção do relatório e diz aquelas palavras mágicas. "Veja... bem ali... esse é o seu problema." Com um olhar interrogativo no meu rosto, ele acena com a mão sobre o relatório e, como por mágica, o Google Tradutor mudou algumas palavras na página e agora posso ver claramente que tenho uma tabela com estatísticas muito ruins. Às vezes, ferramentas com todas essas respostas economizam muito tempo para aqueles que sabem como usá-las. Este DBA falando Klingon levanta os óculos e revela outra seção do relatório SQLT. “Veja aqui, ele diz… essas estatísticas ruins estão forçando um FTS” como se eu devesse saber o que é um FTS neste momento da minha carreira. Mas eu não quero parecer um total n00b, então sorrio e aceno em concordância.
Ok... estou chegando perto de resolver meu problema. Eu sei que tenho estatísticas ruins. Estou voltando para minha mesa ansiosa para começar a trabalhar para finalmente resolver meu problema. Quando passo pelo bebedouro e contorço a multidão sempre presente de meus colegas de trabalho sem nada melhor para fazer o dia todo além de conversar, o sol brilha em uma porta do labirinto e chama o canto do meu olho... apenas uma porta. Acima dessa porta há uma placa que diz DBA_TABLES. Bem, como qualquer bom DBA, digo a mim mesmo que não é uma má ideia verificar essas coisas. Comece atraído por ela, entro na porta DBA_TABLES e estou novamente no labirinto. Eu faço uma curva rápida e algo salta para mim como se fosse me assustar. Mas estou ficando bom nisso. Eu não me importo que algum pequeno morador de labirinto insista em me dizer que esta mesa reside no tablespace USERS. Sou rápido em saber que isso não faz diferença para o meu problema em questão. Eu empurro e ignoro todos esses pequenos diabinhos com suas informações espúrias. Eu pressiono. E aí está... confirmação na saída do labirinto de que não há estatísticas nesta mesa. Uma lição rápida foi aprendida aqui, às vezes, as ferramentas fornecem informações que não são relevantes para você neste dia .
Eu posso ser novo neste jogo de DBA, mas eu sei disso. Preciso ver como as coisas estão se saindo agora, fazer uma mudança e medir a melhoria de desempenho, se houver. Então eu volto para o labirinto. Desta vez, entro na porta marcada como SQL Developer Autotrace e executo a instrução SQL incorreta. Eu não apenas recebo o tempo de execução da instrução SQL, mas posso ver o número de leituras e o plano de execução. Eu rapidamente atualizo as estatísticas na mesa que meu amigo falante de Klingon apontou para mim. (deixando de lado... eu costumava pensar que ele era um idiota, mas agora ele não é tão ruim. Eu posso aprender com esse cara. Talvez um dia eu também possa falar Klingon). Então eu entro na porta do SQL Developer Autotrace novamente. Não apenas minha execução de consulta passou de 2 minutos de execução para 2 segundos, mas as leituras caíram significativamente e o plano de explicação melhorou. Ok, essa última parte é um pouco exagerada. Ainda estou muito verde para saber que o Plano Explique era melhor, mas olhando para trás mais tarde na minha carreira, sei que era. Rapidamente aprendo que às vezes, as ferramentas de ajuste de desempenho à minha disposição não estão apenas lá para ajudar a encontrar a causa raiz do problema, mas também estão lá para confirmar que a solução realmente corrigiu o problema. E, às vezes, as ferramentas para confirmar os resultados não são as ferramentas que usei para encontrar a causa raiz.
Eu rapidamente informei ao meu usuário final que o problema foi resolvido. O usuário resmunga algo que eu não consegui entender e verifica se sua vida está realmente melhor. E é quando eu recebo. O maior presente que um DBA poderia receber. Isso mesmo… Recebi a adoração do usuário . Hoje, eu sou um milagreiro ou assim o usuário pensa. Enquanto estou no cubículo desse usuário, ele grita “ELE CONSERTOU” e, na hora, a cabeça do departamento inteiro aparece sobre as paredes do cubículo como esquilos saindo do chão. Hurray.. eles torcem! Estou amando a vida me aquecendo no brilho. Por que o chefe ainda se oferece para nos levar ao pub depois do trabalho... a primeira rodada é por conta dela.
Volto para minha mesa, ansiosa para enfrentar o próximo desafio. Este trabalho não poderia ser mais doce.
Lembro-me dos meus primeiros encontros com este Performance Tuning Maze como se fosse ontem. Quando estávamos brincando tomando cerveja no pub naquela noite, não ousei falar de algumas das coisas que vi naquele labirinto. Meus colegas de trabalho não entenderiam de qualquer maneira. Eu nunca conto a ninguém sobre minhas lutas com os dragões MOS. Já me queimei muitas vezes. Eu nunca digo a ninguém como é chato fazer uma consulta, esperar uma hora pelo resultado, tentar de novo, esperar uma hora, tentar de novo, esperar uma hora... oops... eu cochilei lá. As provações e tribulações da minha juventude são melhor guardadas para outra ocasião. Talvez eu escreva outro livro.
Mas aprendi muito naquela época. Com o tempo, fui ficando melhor e escolhendo a melhor entrada para o labirinto para o problema em questão. Afinal, é apenas com experiência que se pode melhorar com esses elixires mágicos de ajuste de desempenho. Também aprendi que, às vezes, uma ferramenta parece ser a correta para o trabalho apenas para descobrir, no meio do esforço de ajuste, que outra ferramenta é mais adequada.
Também aprendi que é apenas trabalhar com as ferramentas e aprender no que elas são boas e, inversamente, no que elas não são boas, que posso escolher melhor a ferramenta apropriada para o trabalho. Antigamente, muitas vezes parecia que eu estava tentando apertar um parafuso com um martelo. Agora vejo um parafuso e sei que a melhor ferramenta é uma chave de fenda.
Com o tempo, aumentei o número de entradas para meu labirinto de ajuste de desempenho. Eu ainda atravesso as portas testadas e verdadeiras como com uma com apenas um número acima dela, 10046. No passado, me falaram sobre portas mágicas que levavam a arco-íris e unicórnios apenas para descobrir mais um troll velho rabugento sob um ponte. Eu estava cético sobre Lighty ser uma ferramenta tão mágica no começo, mas eu estava errado sobre isso.
Ah, as histórias que eu poderia contar, mas essa história é realmente sobre o Labirinto de Ajuste de Desempenho. Sempre se resume a esse labirinto. Escolha a melhor porta possível, mas só a experiência pode dizer qual é a melhor. Isso permitirá que você chegue à sua solução mais rapidamente. Faça uma curva errada e comece de novo. Não tenha medo de entrar no labirinto várias vezes. Quando achar que tem a solução, passe pelo labirinto para verificar. Este labirinto mágico de ajuste de desempenho com todos aqueles maravilhosos utilitários e ferramentas de ajuste de desempenho da Oracle agora se tornou um dos meus lugares favoritos para sair. Eu gosto de adicionar mais entradas o tempo todo, esperando que cada nova ferramenta me leve ao final do labirinto muito mais rápido. Às vezes eles fazem e às vezes não.
Ainda me lembro dos dias em que costumava ficar no antigo labirinto de “ajuste baseado em proporção”, mas mudei para pastos mais verdes. Ainda dou risada quando vejo algum novo DBA na frente daquele labirinto antigo, coberto de teias de aranha e eles simplesmente não conseguem entender a dica. E então fico mal-humorado quando grito para eles esquecerem aquele labirinto e virem até aqui, onde todo mundo está saindo, apenas para ser rejeitado por alguém que pensa que sabe melhor. Bem, se algum dia os virmos novamente, podemos dizer “eu avisei” e dar boas risadas.
Costumo trabalhar com pessoas que me veem usando algumas dessas ferramentas brilhantes. Eles me observam entrar no labirinto e sair do outro lado com a resposta. Então, a próxima pergunta óbvia é “posso entrar por aquela porta também?” Eu rio. “Claro... vá em frente”, digo a eles. Armados com esta ferramenta de ajuste legal, mas sem conhecimento sobre como ajustar o Oracle, eles fazem uma tentativa muito boa, mas fraca. Eles me chamam para o labirinto e me pedem para ajudá-los a resolver o problema. Então, acionamos a ferramenta e olhamos para ela. Reconheço instantaneamente a causa raiz do problema, mas os sinos e assobios brilhantes da ferramenta estão confundindo o neófito. Neste ponto, agora estou falando Klingon. Em segundos eu digo "Veja... bem ali... esse é o seu problema." e recebo de volta aquele mesmo olhar intrigado que dei ao meu mentor DBA tantos anos atrás. Esses novatos sempre querem ter acesso às ferramentas e acham que podem manejá-las como um mestre. Eles não têm ideia do que está no labirinto nem de como navegar nele. Muitas pessoas pensam que as ferramentas são o molho secreto quando na verdade é a pessoa que empunha a ferramenta. Infelizmente, algumas pessoas com acesso às ferramentas querem apenas uma resposta rápida e fácil. Eles não querem gastar tempo como muitos de nós.
Tempo, tempo para seguir os mestres. Todos nós temos nossa versão do Monte Rushmore. Esculpido em pedra. Pessoas como Millsap, Lewis e Shallahammer, para citar alguns. Seu Mt Rushmore pode ter outros nomes ou até semelhantes. Outros que veem nosso Monte Rushmore, todo gravado em pedra, não percebem que essas pessoas boas foram nossos guias no labirinto. Eles nos mostraram como navegar pelo labirinto. Eles nos mostraram como usar as ferramentas e quais ferramentas usar quando. Aqueles de nós que aprenderam com os mestres tentam o seu melhor para pagar adiante e ensinar os outros, embora possamos nunca alcançar alturas tão elevadas, e tudo bem.
A moral da história é aprender essas ferramentas, aprender o que elas fazem e o que elas não fazem. Saiba quais problemas eles ajudam a resolver. Aproveite as ferramentas, mas perceba que você precisa aprender o máximo que puder para poder andar pelo labirinto com confiança. Infelizmente, eu tenho que terminar minha história aqui. Alguém acabou de entrar no meu escritório com outro problema de ajuste de desempenho. Hora de entrar no labirinto novamente. Agora, qual porta eu pego?