AUMENTO DE PERFORMANCE POR MEIO DA OTIMIZAÇÃO DE BANCO DE DADOS

Documentos relacionados
IMPLEMENTAÇÃO DE BANCO DE DADOS

Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas

Sistemas Gerenciadores de Banco de Dados

MATA60 BANCO DE DADOS Aula 10- Indexação. Prof. Daniela Barreiro Claro

Índices. 1. Introdução. Universidade Federal de Pelotas Departamento de Informática Bacharelado em Ciência da Computação Banco de Dados I

26/04/2017 Triggers no SQL Server: teoria e prática aplicada em uma situação real

Oracle Database 11g: Introdução à Linguagem SQL Novo

Administração de Banco de Dados

Banco de Dados I Introdução SQL

Curso: Banco de Dados I. Conceitos Iniciais

Sistemas da Informação. Banco de Dados I. Edson Thizon

Administração de. José Antônio da Cunha CEFET-RN

Disciplina: Banco de Dados Tema: SQL Parte 2

Oracle Database 12c: Introdução ao SQL Ed. 2

OTIMIZAÇÃO DE CONSULTAS - MYSQL. Prof. Antonio Almeida de Barros Junior

S U B G R U P O S D M L E D Q L : A L T E R A N D O E A P A G A N D O D A D O S E M U M A T A B E L A

Aula 2 BD Introdução. Profa. Elaine Faria UFU

ANEXO B Manual básico de SQL

saída durante o runtime Usando Functions de uma Única Linha para Personalizar Relatórios Mostrar as diferenças entre as functions SQL de uma única

AULA 8. Ambientes Visuais 8.1. OBJETIVO DA AULA SQL (Structured Query Language)

BANCO DE DADOS. Araújo Lima. Jan / Araújo

GESTÃO DE DADOS NAS ORGANIZAÇÕES. Prof. Robson Almeida

COMPARATIVO DE DESEMPENHO DE SISTEMAS DE BANCO DE DADOS SQL E NOSQL USANDO NODE.JS

Banco de Dados I. Prof. Edson Thizon

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 9- Introdução ao JDBC

Aula 06 Sistemas Embarcados LT38C

Uso de Índices na Otimização e Processamento de Consultas. Otimização e Processamento de Consultas. Otimização e Processamento de Consultas

Aula 01 Revisão Geral Banco de Dados I Conceito de Banco de Dados e SGBD

OTIMIZAÇÃO E PERFORMANCE DE BANCO DE DADOS UTILIZANDO SQL TUNING

Administração de Banco de Dados

Técni n c i as e L i L n i g n u g age g ns n p ara r Ba B nc n o d e D ados I ACCESS

Introdução. O que é um Banco de Dados (BD)?

A linguagem SQL

FTIN FORMAÇÃO TÉCNICA EM INFORMÁTICA. Módulo de Programação Prof. Flávio Dantas

Revisão de Bancos de Dados

Banco de Dados. Professora: Luciana Faria

NoSql Uma Alternativa ao Tradicional Modelo Relacional

Configurações de performance no SQL Server José Antônio da Cunha CEFET-RN

2 Instalando e configurando o ambiente de desenvolvimento do Microsoft SQL Server

ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL

Universidade Federal da Paraíba CCEN Departamento de Informática Disciplina: Banco de Dados. Aula 1 Introdução a Banco de Dados

Oracle Database 10g: Fundamentos de SQL e PL/SQL

Introdução. descrever os tipos de interfaces e linguagens oferecidas por um SGBD. mostrar o ambiente de programas dos SGBD s

Modelo Relacional. Josino Rodrigues

Reindexação Automática em SGBDs Relacionais

Introdução a Banco de Dados Prof. Msc Denival A. dos Santos

Banco de Dados. Introdução. Profa. Flávia Cristina Bernardini

Introdução a Ciência da Computação Estrutura e Organização das Informações PROFESSORA CINTIA CAETANO

Banco de Dados II. Administrador de Banco de Dados - DBA. Portela

Introdução a B anco de Dados. INE5206 Introdução à Informática INE/CTC/UFSC Prof. Roberto Willrich


BANCO DE DADOS. Vinícius Pádua

Banco de dados. Conteúdo: DDL Prof. Patrícia Lucas

Prof. Luiz Fernando. Unidade I ADMINISTRAÇÃO

23/05/12. Consulta distribuída. Consulta distribuída. Objetivos do processamento de consultas distribuídas

BANCO DE DADOS AULA-01. Prof. Fabiano Papaiz IFRN

LINGUAGEM, TIPOS DE USUÁRIOS DE SGBD E MODELOS DE DADOS

Manipulação de Dados com SQL

Banco de Dados. -Aprendendo conceitos -Usando o SQL Conf para: -Conectar no banco de dados -Criar, alterar, excluir e consultar estruturas de tabelas

MATA60 BANCO DE DADOS Aula 2- Sistema Gerenciador de Banco de Dados. Prof. Daniela Barreiro Claro

FACULDADE INGÁ Unidade de Ensino Superior Ingá Ltda Ciência da Computação TRIGGERS. Prof. Erinaldo Sanches Nascimento

3 Arquitetura do Sistema

Benvindo ao Curso de Introdução ao Firebird com Ferramenta de Relatórios!

GBC053 Gerenciamento de Banco de Dados. Plano de Curso e Introdução. Ilmério Reis da Silva UFU/FACOM/BCC

Tabelas. Banco de Dados I MySQL

Adriano Maranhão PROFISSIONAIS E ATIVIDADES ENVOLVIDAS EM UM SGBD

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE INTRODUÇÃO A SQL

UTFPR - Universidade Tecnológica Federal do Paraná. Processamento e otimização de consultas

O Modelo e a Álgebra Relacional

FTIN FORMAÇÃO TÉCNICA EM INFORMÁTICA. Módulo de Programação Prof. Bruno Maciel

Banco de dados. Prof. Emiliano S. Monteiro 5º.Sem. Licenciatura

Administração de Sistemas Operacionais. Prof. Marlon Marcon

Curso PostgreSQL - Treinamento PostgreSQL - Fundamental

Laboratório de Banco de Dados. Prof. Luiz Vivacqua.

BD II (SI 587) Segurança em Banco de Dados. Josenildo Silva.

A c c e s s B á s i c o

Aula 01 Conceito de Banco de Dados e SGBD

Bancos de Dados Notas de Aula Introdução Prof. Dr. Daniel A. Furtado

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini /

ORGANIZANDO DADOS E INFORMAÇÕES: Bancos de Dados

PROJETO DE BANCO DE DADOS

SQL Básica DML. Prof. Marcos A. Schreiner. 22 de outubro de Curso de Licenciatura em Computação

MATA60 BANCO DE DADOS Aula: Otimização. Prof. Daniela Barreiro Claro

Para criarmos um banco de dados no MySql, utilizamos à instrução:

Tecnologia da Informação

MODELO DE BANCO DE DADOS RELACIONAL

Banco de Dados Relacional

Banco de Dados. Prof. Gleison Batista de Sousa Aula 01

INTRODUÇÃO AO MYSQL PROF. ME. HÉLIO ESPERIDIÃO

Sistemas de Informações Gerenciais Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios

2 Conceitos Básicos e Trabalhos Relacionados

Introdução às Bases de Dados

Tratamento dos Erros de Sintaxe. Adriano Maranhão

3 Arquitetura MVC baseada em modelos

Transcrição:

AUMENTO DE PERFORMANCE POR MEIO DA OTIMIZAÇÃO DE BANCO DE DADOS Quezia Gonçalves Oliveira 1, Luiz Fernando Braga Lopes 1 1 Universidade Paranaense (UNIPAR) Paranavaí - PR - Brasil queziagonoli@yahoo.com.br, lfbraga@unipar.br Resumo. Este artigo descreve as técnicas de otimização de banco de dados, concentrado especificamente nas de comandos SQL e índices. Apresenta alguns dos fatores que devem ser seguidos para que por meio da otimização consiga um aumento na performance das aplicações de banco de dados, pois se as mesmas forem aplicadas de maneira incorreta podem acarretar perda no desempenho ao invés de ganho. 1. Introdução A otimização de banco de dados consiste em trazer as informações para os usuários no menor tempo possível, encontrando assim um caminho mais eficiente para o processamento das mesmas [Couto 2006]. Otimização de banco de dados trata-se de técnicas para aumentar o desempenho das aplicações, entre as diversas estão as dos comandos SQL e índices. Mesmo em um aplicativo bem projetado podem ocorrer problemas se a escrita dos comandos SQL for mal construída [Volaco 2004]. Portanto, para resolver problemas como este existe a otimização dos comandos SQL. Os índices têm como objetivo aumentar o desempenho na busca dos dados de uma tabela do banco de dados [Gonçalves 2006]. Entretanto eles devem ser usados cuidadosamente, já que em excesso podem prejudicar a performance das aplicações. O objetivo deste trabalho é uma revisão bibliográfica sobre as técnicas de otimização, com foco nas dos comandos SQL e índices e demonstrando alguns dos fatores necessários para se ter um aumento de performance no desempenho das aplicações de banco de dados. 2. Otimização de Banco de Dados A otimização de banco de dados consiste em técnicas para melhorar o desempenho dos mesmos. Existem duas formas de se efetuar a otimização, sendo as baseadas na sintaxe e as não sintáticas (por exemplo, índices, armazenamento, tamanho de tabelas, entre outras). Otimização dos dados que estão armazenadas em um SGBD (Sistema Gerenciador de banco de Dados) qualquer tem dois enfoques: otimizar o armazenamento das informações e o acesso a elas [Molinari apud Gonçalves 2006]. Portanto a otimização de banco de dados tem como objetivo refinar o SGBD, visando melhoria na performance [Gonçalves 2006].

Para se otimizar o banco de dados, é necessário identificar quais componentes do sistema estão causando problema, quais tipos de operações estão muito lentas e quando estão retardando para baixo [Greenwald e Stackowiak e Stern 2007]. 2.1. Otimização dos comandos SQL As instruções SQL mal estruturadas podem representar um problema para a performance de uma aplicação, ou seja, a maneira como um código é escrito pode influenciar diretamente no desempenho da aplicação. A otimização de SQL tem como objetivo auxiliar na escrita e execução adequada dos comandos, para que a manipulação dos dados seja realizada com uma maior performance [Gonçalves 2006]. O principal objetivo da otimização de comandos SQL é produzir a escolha mais eficiente para a execução de um comando SQL, garantindo assim um ótimo desempenho para aplicação [Gonçalves 2006]. Entender como acontece o processamento da pesquisa no SGBD é importante para escrever comandos SQL permanente [Ikematu 2000]. Portanto, antes de aplicar as dicas sobre a melhora de desempenho dos comandos SQL, é necessário conhecer algumas considerações conforme descritas na subseção abaixo. 2.1.1. Considerações gerais Antes de começar otimizar os comandos SQL, o usuário deve estar ciente de que somente algumas instruções tornam a otimização possível e como este tipo esta relacionado com a sintaxe, os fatores não sintáticos devem ser esquecidos. Somente algumas instruções SQL tornam a otimização possível, portanto não é viável tentar otimizar grande parte da sintaxe SQL [Gulutzan e Pelzer 2004]. Antes de executar um ajuste no SGBD com relação a um problema desempenho, deve ter um diagnóstico correto. Sem este diagnóstico, não faz sentido prosseguir. E para fazê-lo de maneira correta, quando o problema é a falta de desempenho, deve-se saber onde o tempo é gasto [Proni 2010]. É necessário que se tenha um planejamento com o objetivo de monitorar e analisar todo o nível de desempenho da aplicação, em outras palavras, deve-se conhecer todos os passos a serem tomados antes de qualquer alteração. O planejamento para o gerenciamento da performance do banco de dados é um componente essencial em qualquer implementação de aplicação. Sem este planejamento para monitorar desempenho, a degradação da mesma fatalmente ocorrerá [Ikematu 2000]. Quando um usuário escreve comandos SQL, é bem provável que os mesmos não estejam escritos da forma esperada pelo otimizador. Como exemplo: códigos escritos em excesso, uso inadequado do operador OR, funções de caracteres ou numéricos que não estejam usadas adequadamente, entre outros. Nestes casos o otimizador tende a aplicar transformações para melhorar as sentenças e torná-las mais eficiente, mas para que isso ocorra pode levar algum tempo e assim refletir na performance de forma negativa [Gonçalves 2006].

Ao trabalhar em determinado processo, pode-se estar tirando o desempenho de outro [Gonçalves 2006 p. 64], então deve se conhecer toda a aplicação para saber qual possui mais prioridade para que se possa melhorar sua performance. Também devem ser considerados alguns fatos que ajudam na otimização como: Otimizar comandos SQL somente depois que tiver certeza que os mesmos estão corretos [Couto 2006]. Otimizar primeiro os comandos SQL mais críticos, ou seja, o tempo não deve ser gasto com a otimização de comandos que raramente ou nunca serão usados [Couto 2006]. Evitar o tráfego na rede, ou seja, que um conjunto muito grande de dados seja retornado sem necessidade [Souza 2000]. Trazer do banco de dados somente as informações necessárias. Se não necessita de informação contida em uma coluna especifica, evite trazê-la [Couto 2006]. Exemplo use: SELECT cpf FROM cliente; Ao invés de: SELECT * FROM cliente; Essas e outras considerações são fatores importantes que tendem a auxiliar e trazem benefícios quando o assunto é falta de performance em banco de dados. 2.2. Otimização de índices Índices têm como objetivo aumentar o desempenho das tabelas na busca dos dados. Índices permitem o acesso mais rápido às linhas de uma tabela quando um subconjunto de linhas for recuperado desta mesma tabela [Bryla e Loney 2009]. O principal propósito dos índices é aumentar a performance na busca pelos dados em tabelas do banco de dados [Gonçalves 2006 p. 66]. E com o uso de índices o acesso aos dados tende a acelerar tremendamente [Mayer 2001]. Entretanto, os índices devem ser usados cuidadosamente. Já que o excesso deles pode causar prejuízo para a performance [Mayer 2001]. Outra desvantagem da existência de índices em excesso é que os mesmos podem ocupar espaço desnecessário em disco para seu armazenamento [Mayer 2001]. Portanto a utilização de índices para melhorar o desempenho depende de alguns fatores, os quais serão descritos na subseção seguinte. 2.2.1. Utilização de índices Índices são criados visando a melhoria na performance das aplicações, entretanto a sua criação e utilização deve ser feita cuidadosamente, pois os mesmos em excesso podem prejudicar o desempenho da aplicação. Os índices também podem gerar perda de desempenho. Por exemplo, em instruções INSERT, o desempenho tende a diminuir. Isto ocorre porque quando se insere uma linha em uma tabela na qual possui colunas indexadas, é inserida também uma linha no índice. Em operações DELETE, quando se exclui a metade dos registros de uma tabela, também exclui metade das linhas do índice [Gonçalves 2006].

No caso da atualização (UPDATE) de uma coluna indexada, ocorrerá a exclusão e inserção de uma linha do índice. A linha com o valor antigo será excluída e a com o novo será inserida o que pode deixar o processo mais lento. Nesse caso, deve ser avaliado o benefício que o índice proporcionará, levando em consideração que haverá ganho de performance na recuperação das informações, mas poderá surtir efeitos negativos quando for usadas as instruções INSERT, DELETE, UPDATE [Gonçalves 2006]. Quanto maior o número de índices em uma tabela, maior será o tempo para finalizar um comando SQL INSERT ou SQL UPDATE, pois cada registro precisa ser reposicionado em todos os índices da tabela [Adami 2007 p. 38]. Índices em excessos tendem a trazer diversos prejuízos para a aplicação. Entre os quais se podem destacar: a cada vez que for incluído, modificado ou eliminado uma informação da relação será necessário atualizar um número maior de índices. Se a atualização de índices exigirem reestruturação frequente, a degradação do desempenho será bem maior [Mayer 2001]. Alheio ao tempo de atualização cada índice criado consome espaço em disco, pois precisa organizar os ponteiros e gravar a ordem para ser consultada posteriormente [Adami 2007 p. 38], no entanto um índice pode pesar no momento de inserção e atualização dos registros. Não existe proporção fixa para definir os tamanhos dos índices ao qual varia de acordo com o número de registros existentes em cada tabela e com o tipo de colunas indexadas. Este fator deve ser analisado com cuidado, pois nem sempre economia de espaço em disco, poderá trazer mais benefícios do que uma consulta com baixo tempo de resposta [Adami 2007]. Com a criação de muitos índices, o gerenciador de banco de dados pode escolher o índice errado, já que quando ele precisa escolher entre os muitos índices existentes para executar uma operação, pode ser que não sejam consideradas todas as possibilidades, pois a quantidade de possibilidades torna-se muito grande. Neste caso, ele acaba executando a operação com um índice que não resultaria no melhor desempenho para a consulta. Mas se esse índice fosse o único disponível ou então um entre poucos, o gerenciador escolheria o índice certo [Mayer 2001]. Entretanto antes de fazer qualquer utilização de índices é necessário conhecer todos os benefícios e malefícios dos mesmos, mas se eles forem criados e utilizados de maneira correta pode-se aumentar o desempenho de forma considerável. 3. Metodologia Para a realização deste trabalho foi realizada uma revisão bibliográfica em materiais como livros, artigos de revista e sites de internet. 4. Conclusão Otimização de banco de dados são técnicas que visam melhorar a performance das aplicações de banco de dados. No entanto para que as mesmas tragam aumento no desempenho é preciso aplicá-las de forma correta.

Este artigo abordou as técnicas de otimização de banco de dados com foco nas dos comandos SQL e índices e alguns dos fatores que devem ser seguidos para que se tenha um aumento de desempenho das aplicações. Com este estudo pode se concluir que para aumentar o desempenho das aplicações às técnicas de otimização devem ser aplicadas de forma correta, pois se forem utilizadas de maneira incorreta podem resultar em perda de desempenho e não em ganho. Referências Adami, T. J. (2007) Criando índices otimizados: técnicas para a criação de índices otimizados em banco de dados relacionais. SQL Magazine, n. 48, p. 32-38. Bryla, Bob; Loney, Kevin. (2009) Oracle Database 11g: Manual do DBA. Editora Bookman: Porto Alegre. Couto, Eder. (2006) Aumentando a performance da aplicação através da otimização de SQL.<http://imasters.com.br/artigo/4055/bancodedados/aumentando_a_performanc e_da_aplicacao_atraves_da_otimizacao_de_sql/> Acesso em: 30 maio 2011. Gonçalves, E. (2006) Tuning de SQL: a importância da otimização em comandos SQL. SQL Magazine, n. 31, p.64-66. Greenwald, R.; Stackowiak, R.; Stern, J. (2007) Oracle Essentials: Oracle Database 11g. Editora O REILLY Media: Sebastopol. Gulutzan, P.; Pelzer T. (2004) Ajustes de desempenho em consultas simples na SQL. SQL Magazine, n. 11, p. 24-31. Ikematu, Ricardo Shoiti. (2000) Realizando tuning na base de aplicações. <http://www.batebyte.pr.gov.br/modules/conteudo/conteudo.php?conteudo=1592> Acesso em: 30 maio 2011. Mayer, Roberto Carlos. (2001) Otimizando a Performance de Bancos de Dados Relacionais. Editora Axcel Books: Rio de Janeiro. Proni, R. P. (2010) Oracle performance diagnostics e tuning. SQL magazine, n. 73, p. 46-53. Souza, Marco Aurélio de. (2000) Oracle Banco de Dados. Editora Ciência Moderna: Rio de Janeiro. Volaco, Everson Borges. (2004) Otimização de comandos SQL. <http://www.devmedia.com.br/post-6926-artigo-sql-magazine-1-otimizacao-de- Comandos-SQL.html> Acesso em: 22 fev. 2011.