Atividades de um DBA e questões sobre performance
O objetivo deste artigo é dar uma visão resumida das principais tarefas de um administrador de banco de dados (em inglês, DBA), para aqueles que estão iniciando seus estudos e almejam salvaguardar as informações de alguma corporação.
Tarefas de um DBA:
- Planejar a infra-estrutura
- Instalar o SGBD e ferramentas de suporte
- Configurar os componentes físicos e lógicos
- Realizar modificações propostas pelo desenvolvedor
- Criar usuários e definir seus perfis de acesso
- Controlar e monitorar o acesso dos usuários
- Monitorar a performance do banco de dados
- Auditar as atividades no banco de dados
- Suporte à equipe de desenvolvimento
- Implementar a estratégia de Backup e Recovery
Planejar a infra-estrutura
Antes da implantação de um banco de dados, é importante que o DBA conheça a demanda de informação da empresa, com a finalidade de definir uma infra-estrutura que a contemple. Isso irá assegurar um ambiente computacional compatível com o esperado, evitando surpresas. Por exemplo, o investimento de hardware e software pode não suportar a demanda de recursos do sistema em produção. Também é importante que o DBA conheça e configure o sistema operacional de acordo com as necessidades do sistema gerenciador de banco de dados (SGBD) utilizado.
Instalar o SGBD e ferramentas de suporte
Além de definir o produto de software e a plataforma de hardware, o DBA deve cuidar da instalação e atualização do SGBD. Antes de uma atualização de versão, é necessário analisar o impacto que pode ser causado nos sistemas que utilizam o banco.
Na mesma direção, as ferramentas de suporte podem ser um diferencial na qualidade do serviço prestado pelo administrador. O ideal é escolher um conjunto de ferramentas que aliviem o DBA das atividades rotineiras e sujeitas a erro.
Configurar os componentes físicos e lógicos
O objetivo é reduzir a contenção de recursos e os gargalos, definindo corretamente a distribuição de arquivos físicos do banco, estrutura de tabelas, tipos de dados, índices, entre outros.
Realizar modificações propostas pelo desenvolvedor
Em muitos casos a necessidade de alteração no banco de dados é causada pela falta de planejamento adequado, sendo uma medida reativa. Se isso acontecer, o ideal é mapear o problema como um todo, diminuindo novas solicitações de alteração no futuro. Além disso, o DBA, antes de efetuar qualquer modificação, deve realizar uma análise de impacto, a fim de não introduzir outras complicações ao sistema. Vale notar que as soluções pró-ativas sempre são mais eficientes.
Criar usuários e definir seus perfis de acesso
Estar de acordo com a política de segurança da empresa e definir padrões de acesso que garantam a integridade dos dados é um requisito para o administrador. Essa tarefa inclui a definição dos recursos que cada usuário poderá acessar.
Controlar e monitorar o acesso dos usuários
É função do DBA acompanhar e controlar o acesso aos dados, procurando por situações atípicas. O objetivo é detectar possíveis falhas de segurança nas aplicações ou ações mal intencionadas.
Monitorar a performance do banco de dados
O monitoramento, seja de usuário ou de performance, é uma atividade diária. Cabe ao DBA analisar comportamentos não esperados, incluindo redução de desempenho e consultas ineficientes, bem como condições gerais do SGBD e do sistema operacional. Entre os objetivos dessa rotina está a detecção de problemas potenciais, como verificar que existe um número crescente de acessos simultâneos aos dados. Nesse caso particular, o administrador deve tomar medidas para diminuir a degradação da performance de acesso, evitando uma futura interrupção do sistema.
Auditar as atividades no banco de dados
Entende-se por auditoria, nesse caso, como a atividade de investigar ações efetuadas por usuários. Por exemplo, identificar qual usuário excluiu dados, em que data, hora e por qual aplicação.
Suporte à equipe de desenvolvimento
Com o domínio do SGBD, o administrador pode dar suporte aos desenvolvedores, para que os recursos sejam utilizados de forma racional. Ele pode atuar na codificação de consultas consideradas críticas e na construção de procedimentos armazenados no banco de dados. Dependendo do tipo de aplicação, o DBA pode ter um papel muito próximo do desenvolvimento, ficando responsável por todo o backend do sistema.
Implementar a estratégia de Backup e Recovery
Informações como disponibilidade do banco durante essa atividade, tempo de recuperação em caso de desastre e período no qual as informações antigas devem ser mantidas são alguns entre os diversos parâmetros que o DBA deve analisar para implantar o sistema de Backup e Recovery. Sendo a pessoa responsável pela integridade das informações da empresa, o administrador deve se preocupar em efetuar testes regulares sobre o sistema de backup, comprovando sua eficácia.
Refinamento de Performance:
- Refinar regras do negócio
- Refinar o projeto de dados
- Refinar o projeto de aplicações
- Refinar a estrutura lógica do banco de dados
- Refinar operações do banco de dados
- Refinar caminhos de acesso
- Refinar a alocação de memória
- Refinar entrada e saída de dados
- Refinar a contenção de recursos
- Refinar as plataformas subadjacentes
Alguns profissionais acreditam que o processo de otimização começa com as reclamações dos usuários. Normalmente, esse momento se demonstra tardio para aplicar algumas das estratégias de refinamento realmente eficazes e, na maioria das vezes, o real problema acaba sendo adiado, em vez de resolvido.
A análise pró-ativa sobre o desempenho do sistema é a abordagem mais eficiente e evita esse cenário. Para que isso seja possível, é preciso que os executivos da empresa colaborem com os projetistas, no sentido de estabelecer metas justificáveis de performance, fixando expectativas reais desde o início.
O estudo de desempenho também deve levar em consideração o tipo de aplicação, pois sistemas com diferentes propósitos podem requerer abordagens específicas. Por exemplo, a estratégia de otimização em um sistema OLTP (On Line Transaction Process) segue caminho inverso a de um sistema OLAP (On Line Analytical Process). Contudo, alguns passos da análise pró-ativa são comuns a todos os sistemas e estão listados na figura 1.
Observe na figura que o processo de otimização é um ciclo, que pode ser percorrido mais de uma vez. Note também que a performance alcançada em alguns passos pode abrir caminho para passos anteriores adicionais, gerando a necessidade de se retroceder algumas etapas no processo.
Vejamos uma descrição de cada item ilustrado na figura:
Refinar regras do negócio
Visa adaptar as necessidades do sistema aos objetivos de desempenho. Entre as questões relacionadas a esta fase estão o número de usuários simultâneos, tempo de resposta por transação e número de registros em cache que o aplicativo front-end suporta.
Refinar o projeto de dados
Nesta fase é importante organizar as estruturas de dados de modo que se atinja o melhor desempenho. Em alguns casos, é interessante desnormalizar o projeto, em prol da performance.
Refinar o projeto de aplicações
Executivos e projetistas da aplicação devem traduzir metas em um projeto eficaz. Um exemplo seria um sistema que utiliza várias vezes um índice diário. O índice poderia ser calculado uma vez pela manhã, evitando a repetição do cálculo durante o dia.
Refinar a estrutura lógica do banco de dados
Inclui, por exemplo, a preocupação com o projeto de índices. Sabe-se que uma quantidade excessiva de índices em um tabela pode ocasionar gargalos, pois a alteração em uma coluna indexada resulta em trabalho adicional para atualizar também seus índices. Em contrapartida, um número reduzido de índices aumenta o tempo de resposta em consultas.
Refinar operações do banco de dados
O aplicativo deve obter o máximo de vantagem da linguagem SQL e dos recursos disponíveis para o aumento de performance. Lembrando sempre que não há refinamento de comando SQL que compense um projeto ineficiente.
Refinar caminhos de acesso
Assegure-se de que existe um acesso eficaz aos dados. Em alguns casos, pode ser interessante o uso de recursos específicos do SGBD utilizado, como índices cluster ou views materializadas.
Refinar a alocação de memória
A memória RAM destinada ao SGBD pode afetar positivamente a performance. A escolha deve levar em consideração que o sistema operacional também necessita de memória. Se uma quantidade excessiva for destinada ao SGBD, o sistema operacional pode aumentar a atividade de swap, prejudicando o desempenho do sistema como um todo.
Refinar entrada e saída de dados
O I/O de disco tende a reduzir a performance. Alguns procedimentos podem minimizar esse impacto, como a distribuição dos dados em unidades de disco distintas. Fatores externos também devem ser levados em conta, como um antivírus rodando em paralelo ao serviço do banco de dados.
Refinar a contenção de recursos
O acesso concorrente de múltiplos usuários precisa ser gerenciado através da contenção de recursos. Por exemplo, deve-se evitar que um usuário bloqueie uma tabela inteira enquanto na realidade ele só precisa bloquear uma linha, bem como impedir que um bloqueio de linha permaneça por um tempo além do aceitável.
Refinar as plataformas subadjacentes
Por exemplo, nos sistemas baseados em UNIX, pode-se refinar o tamanho destinado à memória compartilhada, gerenciadores de volumes lógicos de disco e quantidade de memória para cada processo.
Conclusão
De forma geral, no que se refere à otimização e integridade, é fundamental a utilização de métodos pró-ativos, que incluem atividades exercidas antes da existência do próprio banco de dados. O DBA deve estar presente em todos os passos referidos neste artigo, dando apoio à equipe de arquitetos e buscando sempre a qualidade na manutenção dos dados, que se tornaram o bem mais valioso nas empresas.
REFERÊNCIAS BIBLIOGRÁFICAS
- ARONOFF, Eyal, LONEY, Kevin, SANAWALLA, Noorali, ORACLE 8 Advanced Tuning & Administration, Berkeley, California, Oracle Press, 1998
- BYLIS, Ruth & FEE, Joice. Administrator´s Guide, Release 2 (8.1.6), Oracle Corporation, 1999.
- CYRAN, Michele. Desinginig and Tuning for Performance, Release 2 (8.1.6), Oracle Corporation, 1999.
- DATE, C. J., Introdução a Sistema de Banco de Dados, 7ª ed. [Tradução: Vandenberg D. de Souza], Rio de Janeiro, 2000.
- KORTH, Henry F., SILBERSCHATZ, Abrahan. Systema de Banco de Dados, 2ª ed. [Tradução: Maurício Heihachiro Galvan Abe], São Paulo, MAKRON Books, 1995
- ORACLE (Designing and Tuning for Performance)
Confira também
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo