Este artigo apresenta o funcionamento da coleta das estatísticas no banco de dados Oracle e como esta atividade influencia o otimizador nas tomadas de decisão para a criação do plano de execução.
Artigo do tipo Exemplos Práticos
Recursos especiais neste artigo: Contém nota Quickupdate, Conteúdo sobre boas práticas.
Introdução à coleta de estatísticas no Oracle 11g Aprimorar o desempenho do
servidor de banco de dados é uma tarefa constante no dia a dia do profissional
de banco de dados. O ajuste pode ser realizado de diferentes maneiras, desde a
escrita de consultas SQL até a configuração interna do SGBD para gerenciar o
acesso aos dados no dispositivo físico. São tantas variáveis a serem
consideradas que, muitas vezes, não é interessante trabalhar com todas ao mesmo
tempo, até por que uma pode influenciar na outra e você pode não saber o real
motivo do ganho de desempenho.
Neste cenário, o
otimizador do Oracle utiliza as estatísticas para gerar os diversos planos de
execução e escolher aquele que for mais eficiente para realizar a busca dos
dados. Desta forma, caso as estatísticas estiverem desatualizadas, o risco de
obter planos ruins é alto, e consequentemente o desempenho do sistema será
afetada.
Neste contexto, este artigo apresenta o
funcionamento da coleta das estatísticas no banco de dados Oracle e como esta
atividade influencia o otimizador nas tomadas de decisão para a criação do
plano de execução. Para isso, será realizada uma introdução sobre
a coleta das estatísticas, o otimizador do Oracle, e vários exemplos que podem
ser aplicados no ambiente de banco de dados.
Em que situação o tema é útil Este tema é fundamental na definição de como
deve ser realizada a coleta das estatísticas do banco de dados, a fim de ajudar
o otimizador a criar um plano de execução mais eficiente e melhorar a
performance das aplicações que utilizam o banco de dados.
Existem muitos métodos, filosofias e mitos a respeito de qual
a melhor forma de coletar as estatísticas de um banco de dados. Muitas dessas
filosofias recomendam diferentes frequências e maneiras para coletar as
estatísticas, onde em muitos casos este assunto pode se tornar polêmico. Pensando
nisso, este artigo apresenta uma compilação deste assunto baseado na
documentação técnica dos manuais da Oracle, algumas pesquisas no google e
experiências práticas sobre o assunto.
As estatísticas são utilizadas pelo otimizador para
determinar o plano de execução mais eficiente para as consultas realizadas no
banco. Ele toma estas decisões com base na estrutura da consulta, nas
estatísticas dos dados que estão sendo selecionados, e nos recursos disponíveis
no banco de dados.
Quando as estatísticas dos objetos são atualizadas, o
otimizador irá gerar o mesmo, ou melhor, plano de execução para cada instrução
SQL que faz referente a estes objetos. Entretanto, em alguns casos a nova
versão das estatísticas pode trazer mais problemas do que benefícios em
comparação com a versão anterior, pois o otimizador pode gerar novos planos de execução
piores dos que já existiam. Determinar a causa raiz dessas regressões pode ser
uma tarefa assustadora.
Neste artigo será apresentado uma introdução à coleta de
estatísticas no banco de dados Oracle 11g, utilizando o utilitário DBMS_STATS
que existe desde a versão 7 e o funcionamento básico do otimizador. Estas
ferramentas são muito poderosas na mão de um DBA. Também veremos os impactos
que podem ser causados por coletar, ou não, as estatísticas do banco de dados e
como isso pode influenciar no funcionamento do otimizador.
Overview do otimizador
Para entender como o banco de dados Oracle processa uma
instrução SQL, é necessário entender como funciona o otimizador do banco,
também conhecido como otimizador de queryou otimizador baseado em custo (CBO:
Cost-Based-Optmizer). Todas as instruções SQL utilizam o otimizador para
determinar a forma mais eficiente de acessar os dados no banco de dados.
O otimizador gera o que chamamos de plano de execução,
descrevendo passo a passo como o banco de dados deve buscar as informações
solicitadas pela query. Quando uma instrução SQL é enviada para o servidor de
banco de dados pela primeira vez, o Oracle realiza uma análise detalhada desta
instrução, conhecida como Parse (ler Nota do DevMan 1). Em seguida cria o plano de execução. O plano de execução,
como vimos, contém o procedimento de como buscar as informações no banco de
dados. E o otimizador é o responsável por gerar este plano de busca da forma
mais eficiente possível.
O banco de dados otimiza as queries
baseado nas informações da última coleta de estatísticas, que foi realizado nos
objetos que estão sendo referenciados na query.
Nota DevMan 1. Parse
Sempre que uma instrução SQL é enviada para o servidor
de banco de dados, o Oracle realiza uma análise detalhada da instrução antes de
processá-lo. Esta análise é chamada de Parse, que basicamente se constitui de
uma análise sintática, semântica e atribuição de um valor hash para identificar
a instrução.
Existem dois tipos de otimizadores no Oracle: RBO e CBO, que
são utilizados pelo banco de dados. Muitos DBAs mais experientes ainda têm
dúvidas sobre as diferenças básicas entre eles, e os mais novos não chegaram a
conhecer o RBO.
Otimizador Baseado em Regra / Rule-Based Optimizer
(RBO)
Para gerar o plano de execução, uma lista de regras deve ser
seguida. Não vamos aprofundar muito neste otimizador, porque este era o método
utilizado anteriormente e nas versões atuais do Oracle já é obsoleto. Mas
basicamente, este método de otimização utiliza as regras de negócio para tomar
as decisões sobre como recuperar a informação do banco de dados. A partir da
versão 10g, suas funcionalidades estão presentes apenas para dar suporte às
aplicações antigas, porque não é mais dado suporte e nem realizado melhorias
neste otimizador.
Para melhorar a performance de uma consulta, o RBO faz o seguinte:
verifica apenas uma maneira de otimização e assim que encontrar, ele para o
processo sem verificar se outras formas podem ser aplicadas.
A Oracle não recomenda que este otimizador seja utilizado no
desenvolvimento de novos sistemas para melhorar a performance.
Otimizador Baseado em Custo / Cost-Based Optimizer (CBO)
O CBO utiliza as estatísticas do banco de dados e os
histogramas dos objetos para gerar vários planos de execução para a mesma
instrução SQL. Em seguida escolhe o plano que possui o menor custo, ou seja,
aquele que consome menos recursos do sistema. O custo está relacionado com os
recursos do sistema necessários para executar a busca dos dados.
Caso estas informações de estatísticas e histogramas não estejam
disponíveis, o Oracle utiliza os parâmetros do banco que foram previamente
definidos para tentar gerar um plano melhor do que o atual.
Comparação entre os otimizadores RBO e CBO
Percebam como os dois otimizadores trabalham de formas
diferentes na hora de gerar o plano de execução. No caso do RBO são utilizadas
as regras de negócio e quando o Oracle encontra a primeira otimização possível
ele para de realizar a análise. Já o CBO gera vários planos de execução e
define qual deles é o que consome menos recursos do sistema. Podemos notar que
o otimizador CBO realiza muito mais tarefas do que o RBO, e sua otimização pode
demorar um pouco mais, entretanto, o resultado final encontrado tende a ser melhor
do que o alcançado pelo otimizador baseado em regras, pois o plano de execução
final gerado possui um custo menor, ou seja, os recursos e tempo gastos durante
a execução da consulta serão menores.
Oferta válida para todos os planos durante o mês de dezembro
+3 MESES
Grátis
Veja os resultado dos nossos alunos
Conquistas reais de quem está aplicando o método
<Perguntas frequentes>
Carreira
Por onde devo iniciar os estudos?
Recomendamos começar pelo Plano de Estudo Carreira Programador Front-End. Essa área da programação é mais visual e intuitiva, tornando-a ideal para iniciantes. No Front-End, você aprenderá a criar a parte visual dos sites, como layout, cores e interatividade. Depois de dominar o Front-End, você pode avançar para Programador Back-End, onde aprenderá a lidar com a lógica e o funcionamento interno dos sites, e, finalmente, para Programador Mobile, focando no desenvolvimento de aplicativos para smartphones. Nossa metodologia é estruturada de forma progressiva para garantir que você desenvolva confiança e experiência ao criar projetos reais, como sites estáticos e dinâmicos.
Em quanto tempo vou me tornar um programador?
O tempo necessário para se tornar um programador varia de acordo com a dedicação de cada estudante. Com nossa metodologia, que inclui um Plano de Estudo detalhado e suporte contínuo, você pode se tornar um programador de 6 meses a um ano, dependendo do seu ritmo e esforço. Nossa abordagem prática e orientada a projetos ajudará a acelerar seu aprendizado.
Eu preciso de um diploma de faculdade para começar a atuar como programador?
Não. Ser programador é uma excelente oportunidade para quem não possui diploma de faculdade. Muitas empresas contratam baseadas nas habilidades técnicas e experiência prática, não necessariamente em diplomas. Após conquistar uma vaga, você pode optar por complementar sua formação com um diploma.
Por que a programação se tornou a profissão mais promissora da atualidade?
A necessidade de programadores cresceu exponencialmente, especialmente após a pandemia de Covid-19, que forçou muitas empresas a se adaptarem ao digital. Com o crescimento das empresas de tecnologia, a demanda por programadores aumentou. Atualmente, há mais de 200 mil vagas abertas no Brasil devido à falta de profissionais qualificados.
Metodologia
Quais são os principais diferenciais da DevMedia?
Didática e Metodologia
Com mais de 20 anos de experiência, nossa metodologia foca em menos aulas e mais prática. Desenvolvemos dezenas de projetos e exercícios para ajudar você a se tornar um programador completo. Nossos projetos são desafiadores e autênticos, não apenas exercícios repetitivos.
Projetos reais e exercícios
Você desenvolverá diversos projetos práticos em cada carreira (Front-End, Back-End e Mobile), recebendo mentoria e suporte contínuo. A prática é essencial, e oferecemos milhares de exercícios para ajudar você a fixar o conteúdo e melhorar sua posição no ranking.
Suporte ao aluno
Nossa plataforma oferece suporte dedicado com professores experientes, respondendo suas dúvidas em menos de uma hora. Isso garante que você receba a ajuda necessária durante toda a sua jornada de aprendizado.
Gamificação
A DevMedia utiliza gamificação para tornar o aprendizado mais envolvente e motivador. Você acumula pontos e moedas por acertos, que podem ser trocados por produtos e customizações no seu card pessoal. Além disso, o sistema de ranking mensal incentiva a competição amigável e a melhoria contínua.
O que eu irei aprender estudando pela DevMedia?
Ao estudar conosco, você se tornará um programador Full Stack, dominando Front-End, Back-End e Mobile. Utilizamos a linguagem JavaScript, a mais utilizada no mercado, preparando você para criar sistemas webs e aplicativos celulares. Nossa abordagem prática inclui exercícios para fixar o conhecimento e desenvolvimento de projetos reais que te preparam, para o mercado de trabalho.
Quais as vantagens de aprender programação através da linguagem JavaScript?
Ela é Multiplataforma, ela vai te permitir programar para web e para celulares utilizando praticamente a mesma sintaxe.
Elá é Full Stack. Ela te permite criar aplicações Front-end, Back-end e Mobile. Isso acelera muito sua carreira e aumenta suas possibilidades de pegar trabalhos autônomos e conquistar uma vaga no mercado.
Ela é fácil de aprender. Como ela não exige conhecimento inicial em “Orientação a Objetos” ela se torna mais simples com uma curva de aprendizado suave e vai te permitir começar a programar mais rápido do que outras linguagens
A plataforma oferece certificados?
Sim, oferecemos dois tipos de certificados: o certificado de conclusão, que você adquire ao consumir o conteúdo, e o certificado de autoridade, que você obtém ao acertar exercícios. Ambos possuem carga horária, que pode ser utilizada para fins acadêmicos, como atividades complementares na faculdade, e também para comprovações em processos seletivos ou no seu currículo.
A plataforma tem suporte ao aluno, como funciona?
Sim, temos uma equipe de programadores pronta para ajudar com todas as suas dúvidas! Durante o horário comercial, o tempo médio de resposta é de até 10 minutos. E não se preocupe, também oferecemos suporte à noite e nos finais de semana, com um prazo de resposta um pouco maior.
A DevMedia me forma como programador Full Stack?
Sim! Oferecemos uma formação completa, do zero até Full Stack. Nosso foco é na prática, então você vai encontrar muitos exercícios e projetos reais ao longo do curso. Garantimos que você sairá com a autonomia necessária para desenvolver seus próprios projetos com confiança!
Tem horário para as aulas?
Não, não temos horários fixos para as aulas. Todo o nosso conteúdo está disponível para você acessar a qualquer momento, permitindo que você estude conforme sua própria disponibilidade e ritmo. Dessa forma, você pode integrar o aprendizado à sua rotina de maneira mais flexível e eficaz.
Por que a DevMedia não usa videoaulas em sua didática?
Nosso foco principal é formar programadores de verdade. Sabemos que o dia a dia de um programador envolve muita leitura, interpretação e escrita de código. Por isso, nosso conteúdo é desenvolvido para ambientar você nesse processo desde o início, proporcionando mais autonomia e acelerando seu aprendizado.
Na vídeo-aula é o professor que está lendo, interpretando e escrevndo o código para você, isso limita o seu progresso. Ao ler e interagir diretamente com o conteúdo, você exercita sua capacidade de leitura e concentração, além de poder avançar no seu próprio ritmo. Dessa forma, você se torna um programador mais independente e preparado para os desafios reais do mercado.
Preciso de um computador específico para estudar na DevMedia?
Não é necessário nada específico. Qualquer computador com processador atual e memória de 8 GB é suficiente.
Eu consigo estudar pelo celular?
Sim, a DevMedia possui um aplicativo que te permite seguir com seus estudos de qualquer lugar.
A DevMedia tem aplicativo?
Sim, nosso aplicativo está disponível na Play Store e na Apple Store, permitindo que você estude de forma prática e conveniente em qualquer lugar.
Preciso estar na faculdade para acompanhar os estudos na DevMedia?
Não, a faculdade não é necessária. Você não precisa de nenhum conhecimento prévio para iniciar os estudos na nossa plataforma.
Assinatura e Pagamentos
Quais são os planos de assinatura disponíveis?
Oferecemos o plano anual, o valor total é lançado no cartão de crédito, parcelado em 12 vezes, e você precisa dispor do valor total no limite do seu cartão. Você também pode optar por pagar no PIX
Adquirindo o plano, terei acesso a todo o conteúdo?
Sim, ao assinar nossa plataforma, você desbloqueia acesso total a todo o nosso conteúdo, sem precisar comprar nada separadamente.
A plataforma tem planos vitalícios?
Não, nossos planos são anuais, garantindo que você tenha acesso contínuo às atualizações mais recentes e aos novos conteúdos. A tecnologia evolui rapidamente, e um plano vitalício oferece um conteúdo estático que se tornará ultrapassado em pouco tempo. Com nossos planos anuais, você está sempre à frente, aprendendo as novidades e tendências mais atuais no mundo da programação.
A DevMedia tem fidelidade?
Sim, nosso plano tem uma fidelidade de 12 meses, o que garante o tempo ideal para você explorar nosso conteúdo e desenvolver a autonomia necessária para trabalhar com programação.
Como funciona o cancelamento?
Nós garantimos seu direito de cancelamento com reembolso total dentro dos primeiros 7 dias.
Para que você aproveite ao máximo seu investimento, oferecemos suporte personalizado para orientá-lo na utilização da plataforma. Também temos a opção de transferência de titularidade do plano, permitindo que outra pessoa aproveite o restante do seu período de assinatura.
Cadastro
Como excluir meus dados da plataforma?
Para excluir seus dados da plataforma, acesse o link : https://www.devmedia.com.br/fale-conosco/ e abra um protocolo de 'Exclusão de dados'. Nossa equipe processará a solicitação e removerá todas as informações do seu cadastro.
Compartilhe esse conteúdo com um amigo!
Faça login para ganhar recompensas.
Ou
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.