Avançar para a área de conteúdo

ir para o conteúdo principal

developerWorks Brasil  >  Information Management  >

O Efeito Cadeia da Otimização de Desempenho e Custo

O que todo gerente precisa saber para tornar a otimização de banco de dados bem-sucedida

developerWorks
Opções de documento

Opções de documento que necessitam de JavaScript não são exibidas


Classificar esta página

Ajude-nos a melhorar este conteúdo


Nível: Introdutório

Scott Hayes, President and CEO, DBI Software

30/Jun/2009

Uma olhada na otimização de banco de dados e no que todo o gerente deve saber para torná-la bem-sucedida

Data Manager column from print edition of IBM Database magazine

Seu banco de dados é, provavelmente, o último lugar para o qual você olharia em busca de economia nos custos de TI. Afinal de contas, o que é mais importante para um banco de dados é que ele sempre forneça as informações apropriadas e na hora certa. No entanto, a beleza da otimização do banco de dados é que, ao mesmo tempo, ela corta custos e melhora o desempenho. A otimização dos bancos de dados da sua organização reduz o consumo desnecessário e o desperdício da CPU, gerando um efeito em cadeia de benefícios: menor consumo da CPU, menor custo da energia de alimentação de hardware e refrigeração, maior consolidação e virtualização do servidor, menores custos de hardware, menores custos de licenciamento de software e maior produtividade organizacional por meio de tempos de repostas melhores, mais confiáveis e mais previsíveis.

No entanto, para tirar o máximo dos seus esforços de otimização do banco de dados, há duas coisas que você precisa saber. A primeira é: O design físico do banco de dados é de importância crítica, principalmente os índices. Os índices são importantes para os bancos de dados, praticamente, pelos mesmos motivos que os são para as pessoas: eles tornam possível localizar coisas mais rapidamente, com menos esforços.

Imagine se você tem uma tigela de amoras no seu refrigerador e deseja utilizá-las em uma receita. Você pega o seu livro de culinária favorito para localizar receitas que usam amoras, mas ele é muito grande: 592 páginas. É possível consultar cada página do livro e examinar as listas de ingredientes procurando por amoras, mas essas consultas não são de graça. Elas envolvem tempo, consomem energia e podem, até mesmo, deixar os seus olhos doendo. É mais provável que o seu livro de culinária tenha um bom índice no final e que seja possível procurar por "amoras", localizar as receitas e ir diretamente às páginas a fim de selecionar a que se deseja.

Os bancos de dados funcionam do mesmo modo. Seu livro de culinária de 592 páginas não resultaria em uma tabela de banco de dados muito grande - ela seria, quase certamente, pequena o suficiente para caber em um pendrive USB de 32 MB. Mas, se você solicitasse a um aplicativo culinário para procurar receitas com amoras na lista de ingredientes, ele enviaria uma consulta ao banco de dados e este, por sua vez, varreria as entradas das receitas. A varredura teria de consultar 592 instruções da CPU ou mais, caso o livro culinário ainda não estivesse na memória do banco de dados, e isso levaria cinco segundos para ser executado. Agora, e se houvesse um índice útil sobre INGREDIENTES? A mesmo pesquisa poderia ser concluída usando apenas seis instruções da CPU, o que envolveria uma fração de segundo.

Os aplicativos do sistema da sua empresa, provavelmente, não pesquisam amoras com muita frequência, mas o mesmo princípio se aplica. Praticamente, todo armazém de dados e banco de dados corporativo possuem um grande número de pequenas tabelas acessadas com frequência que caberiam em unidades de jump USB. Pergunte aos DBAs, quantas tabelas existem nos seus bancos de dados menores que 64 MB - a resposta poderá ser surpreendente. As tabelas de banco de dados menores são importantes devido à segunda coisa que você precisa saber: A máxima otimização do desempenho é possível apenas quando você leva em consideração todo o sistema.

Os DBAs usam um utilitário fornecido pelos fornecedores de banco de dados, denominado EXPLAIN, para examinar a estratégia de acesso do banco de dados ao satisfazer as consultas. O utilitário EXPLAIN informa o custo antecipado do recurso de processamento de execução da consulta. Os DBAs, normalmente, examinam os custos antecipados antes de colocar as consultas em produção. Se esse custo for alto, eles ajustarão a instrução e o design físico do banco de dados a fim de reduzir seu custo antecipado, muitas vezes, adicionando um índice.

Se o custo antecipado de uma consulta for relativamente baixo - digamos, uma consulta de cinco segundos sobre amoras - o DBA dificilmente prestará atenção nela. O problema é que o EXPLAIN fornece estimativa apenas para uma única execução de determinada consulta. Se o seu aplicativo acessar frequentemente tabelas menores sem os índices apropriados, o banco de dados as carregará na memória toda vez e fará a varredura.

O desperdício de processamento como esse prolifera em, pelo menos, 9 de cada 10 bancos de dados de produção. Em um grande banco de dados em que trabalhei recentemente, um aplicativo financeiro OLTP, com vários Terabytes, gastou 34% de todo o tempo da CPU executando consultas em uma tabela com apenas 32 linhas. Em um grande varejista, a inclusão de um índice ausente em uma tabela pequena, de 2.000 linhas, em um armazém de dados de 8 TB reduziu o tempo de decorrido de uma consulta de suporte de decisão crítica de três horas para dois minutos. Em outro varejista on-line, 97% do custo da CPU em um sistema com oito CPUs foram atribuídos a uma única consulta acessando uma tabela relativamente pequena. Agora, vamos direto ao âmago da questão - instruções esbanjadoras e de custo elevado como essas existem, praticamente, em todos os bancos de dados, mas elas ficam fora da visão comum porque acessam tabelas menores.

Banco de dados com recursos de autoajuste de memória detectarão consultas dispendiosas e tentarão preservar as tabelas menores na memória, diminuindo os custos de E/S e reduzindo, um pouco, o tempo de resposta. Mas essas consultas que ainda estão executando em uma CPU custam 99 por cento a mais do que deveriam custar. O autoajuste da memória simplesmente reage às características de desempenho observadas e faz o melhor que pode para compensar as deficiências no design físico.

No atual clima econômico, a necessidade imediata e o valor do ajuste e da otimização dos custos de desempenho do banco de dados não podem ser exagerados. A menos que a sua organização esteja soltando dinheiro pelo ladrão e não tenha nenhuma restrição quanto à energia e meio-ambiente, já passou do tempo de aplicar em seus bancos de dados o ajuste apropriado. Ignorar essa convocação para ação não faz mais sentido do que dirigir seu carro com pneus murchos e um porta-malas cheio de pedras. Pense: Se fosse possível cortar o número de servidores de banco de dados pela metade, seus custos com licença pela metade, seus custos com energia pela metade e, simultaneamente, dobrar ou triplicar o desempenho e aumentar a confiabilidade, você faria? E em que você gostaria de investir para obter essas economias e aprimoramentos?



Sobre o autor

Scott Hayes é presidente e CEO da DBI Software. Integrante dos programas IBM Data Champion e Gold Consultant, ele é orador frequente nas conferências IDUG, IBM, ISACA e ISSA; autor de livro publicado; e autor constante de um blog sobre o desempenho do DB2 para Linux, UNIX e Windows.




Avalie esta página


Reserve um instante para completar este formulário para nos ajudar a servi-lo melhor.



 


 


Não
são úteis
Extremamente
úteis
 






Voltar para parte superior


Esta é a primeira declaração de atribuição de marca registrada. Esta é a segunda declaração de atribuição de marca registrada. Outros nomes de empresas, produtos e serviços podem ser marcas registradas ou marcas de serviço de terceiros.