Faculdade INED Curso Superior de Tecnologia em Bando de Dados Disciplina: Projeto de Banco de Dados Relacional II Prof.: Fernando Hadad Zaidan Unidade 2.2 1 2 Material usado na montagem dos Slides Bibliografia adicional para desenvolvimento das aulas BARBIERI, Carlos. BI - Business Inteligence: Modelagem e tecnologia. de Janeiro, Axcel Books, 2001. HEUSER, C. A. Projeto de Banco de Dados. 5a. Edição. Porto Alegre: Sagra Luzzatto, 2004. ROCHA, Rogério Morais. Slides da disciplina Projeto de Banco de Dados Relacional II. Faculdade INED, 2008. SILBERSCHATZ, Abraham; KORTH, Henry F.; SUDARSHAN, S. Sistema de banco de dados. Tradução da 5ª Edição. São Paulo: Campus, 2006. Rio A tradução literal de tuning seria sintonia ou ajuste de alguma coisa para que funcione melhor. Um SGBD é um produto de software sofisticado permitindo vários ajustes. Por ser flexível, é possível fazer pequenos ajustes que afetam a performance do banco de dados. 3 4 1
O que é performance de banco de dados? Fazendo uma analogia em termos de oferta e demanda. Os usuários demandam informações do banco de dados. O SGBD fornece informação para aqueles que o pedem. Workload são os pedidos do SGBD que definem a demanda. Ele é o conjunto de transações online, jobs batch, pesquisas ad hoc, etc. Pesquisas ad hoc pesquisa feita sob encomenda - a partir das necessidades específicas de cada cliente A taxa entre os pedidos que o SGBD atende e a demanda para informação pode ser denominado performance de banco de dados. Cinco fatores influenciam a performance do banco de dados: workload, throughput, recursos, otimização e contenção. 5 Throughput define a capacidade do computador de processar os dados. Ele é uma composição de velocidade de I/O, velocidade da CPU, capacidades de paralelismo da máquina e a eficiência do sistema operacional e o software básico envolvido. 6 Uma metodologia recomendada deveria seguir os seguintes passos: 7 Ajuste das Regras de Negócio Uma análise do sistema inteiro em mais alto nível. Por exemplo, a função de negócio de impressão de cheques. O requisito real é pagar dinheiro a pessoas; o requisito não é necessariamente imprimir pedaços de papel. Poderia ser bastante complicado imprimir milhares de cheques por dia. Seria relativamente mais fácil gravar os depósitos de pagamento em uma fita que seria enviada ao banco para processamento. 8 2
Ajuste do projeto de Base de Dados Ajuste do Projeto da Aplicação Na fase de projeto de base de dados, deve-se determinar que dados são necessários para as aplicações. Precisa-se considerar que relações são importantes e quais são seus atributos. Finalmente, precisa-se estruturar a informação para melhor atingir as metas de performance. Transformar metas de negócio em um projeto de sistema efetivo. Processos de negócio referem-se a uma aplicação particular dentro do sistema ou uma parte da aplicação. Um exemplo de projeto de processo é deixar alguns dados em cache. Deste modo você evita a recuperação da mesma informação várias vezes durante o dia. 9 10 Ajuste da Estrutura Lógica da Base de Dados Ajuste fino do projeto de índices, para garantir que não ocorra falta ou exagero de índices. Nesta fase pode-se criar índices adicionais além da chave primária i e estrangeira. Ajuste das Operações de Base de Dados Utilizar todas as vantagens do SQL e das características do gerenciador para o processamento da aplicação. Ajuste da Alocação de Memória Alocação apropriada de recursos de memória para as estruturas do SGBD pode trazer efeitos positivos na performance. Ajuste de I/O e Estrutura Física I/O de disco tende a reduzir a performance de várias aplicações de software. 11 12 3
Ajuste da Contenção de Recursos O processamento concorrente de vários usuários pode criar a contenção de recursos. A contenção faz com que os processos esperem até que os recursos sejam disponibilizados. Ajuste das Plataformas Básicas Conforme a versão do gerenciador para um determinado sistema operacional pode haver parâmetros diferentes de ajuste. Ajuste das Operações na Base de Dados Todo acesso a dados relacionais pelos programas de aplicação é feito usando SQL. Revisões de SQL deveriam ser um componente necessário para análise de performance de aplicações em banco de dados antes e depois da implementação. Segundo Craig Mullins o consenso da indústria indica que 75% a 80% de todos os problemas de performance em banco de dados pode ser encontrado em códigos SQL ruins. 13 14 Ajuste das Operações na Base de Dados Não significa que o SQL nas aplicações sejam ruins desde o início. De fato, uma aplicação pode ser 100% ajustada para acesso rápido quando ele é transferido para produção, mas durante o tempo ocorrem degradações de performance. Isto pode ocorrer por muitas razões tais como crescimento da base de dados, novos caminhos de acesso, mudanças no negócio, etc. Objetivo é encontrar os comandos que consomem mais/menos recursos, e/ou são executados mais freqüentemente. 15 Abordagens para ajuste de comandos SQL Reestruture os índices Reestruturação de índices é um bom ponto de começo, porque ela tem mais impacto na aplicação que a reestruturação do comando ou dos dados. d Veja que índices são usados para pesquisas comuns e exclua qualquer um que não esteja sendo usado. Muitos índices em uma tabela podem causar uma sobrecarga, pois todos os índices precisam ser atualizados na atualização da tabela. 16 4
Depois de reestruturar os índices, tente reestruturar os comandos SQL. Escrever novamente um comando SQL ineficiente i é mais fácil do que repará-lo. Entendendo a finalidade do comando, pode-se rapidamente escrever um novo comando que atenda aos requisitos. Comandos SQL podem ser formulados de várias maneiras diferentes com a mesma funcionalidade. Principal Objetivo. Evitar realizar trabalho desnecessário para acessar linhas que não afetarão o resultado. Evitar ler uma tabela inteira se é mais eficiente obter as linhas desejadas através de um índice. Evitar usar um índice que traga mais linhas que um outro. 17 18 Maneiras de melhorar performance. Verifique a ordem de um Join. Decida questões tais como palavras-chave, alinhamento de comandos e aliás de objetos. Minimize o tempo de recursos bloqueados com o comando commit logo após as alterações do banco. Maneiras de melhorar performance. Não use funções SQL em cláusulas de predicado ou cláusulas where pois eles deixarão de utilizar índice. Qualquer expressão usando uma função com a coluna como seu argumento, o otimizador ignorará a possibilidade de usar o índice daquela coluna. Escreva comandos SQL separados para valores específicos. Cuidado ao usar IN com uma lista de valores. 19 20 5
Modifique ou desabilite triggers Reestruture o Dado A utilização de triggers consome recursos do sistema. A utilização de muitas triggers, pode afetar negativamente a performance e pode precisar modificá-lo ou desabilitá-lo. Evite cláusula Group By em códigos com respostas críticas. Implemente entidades que faltam. Reduza a carga da rede. Migre, replique ou particione os dados. 21 22 Conclusão O DBA é um parceiro estratégico no desenvolvimento e manutenção de aplicações. Gerenciar e pró-ativamente a te os sistemas. ste Identificando do problemas potenciais antes de eles ocorrerem, prevenindo quedas do sistema e perda de dados; Conhecimento profundo do funcionamento físico do sistema. Como o volume de dados e a demanda por eles cresce exponencialmente, é necessário sugerir modos melhores, mais rápidos e mais baratos para armazenar e movimentar informações. 23 Bons Estudos! Prof. Zaidan fhzaidan@gmail.com Somos o que fazemos repetidamente. Por isso o mérito não está na ação, e sim no hábito. Aristóteles 24 6