Sei sulla pagina 1di 8

Processamento e Otimizao de Consultas em PostgreSQL

Daniel Flores Bastos Universidade Luterana do Brasil (ULBRA) Campus Santa Maria Caixa Postal 21.834 97020-001 Santa Maria RS - Brasil Santa Maria RS Brasil
daniellbastos@yahoo.com.br

Abstract. This article will conduct a research on how is processed and query optimization in relational database management system (Management System Database) in particular, the PostgreSQL software for free distribution, which has gained prestige among developers looking to get the best performance SGBD robust and at the same time free license. Therefore, it is recommended to have some knowledge about the concepts of database and relational algebra. Resumo. Este artigo realizar uma pesquisa sobre como realizado o processamento e otimizao de consultas em SGBDs (Sistema Gerenciador de Banco de Dados) em especfico, o PostgreSQL um software de livre distribuio, que vem ganhando prestigio entre os desenvolvedores que buscam obter o melhor desempenho de um SGBD robusto e ao mesmo tempo de licena gratuita. Para tanto recomendado tenha algum conhecimento sobre os conceitos de banco de dados e lgebra relacional. Palavras-chave. PostgreSQL, otimizador de consultas, processamento de consultas.

1. Introduo
O seguinte artigo abordar conceitos de forma simples e o modo como realizado o processamento e a otimizao de consulta, onde ser tratado consultas SQL utilizando banco de dados PostgreSQL. Com a necessidade de se obter informaes cada vez mais rpidas em grandes volumes de dados vem o desafio de realizar grandes operaes com o menor consumo de processamento possvel. Para que isso seja possvel, crucial que haja um grande conhecimento de como funciona um SGBD (Sistema Gerenciador de Banco de Dados) internamente. SGBDs de alto desempenho esto sempre ligados diretamente a um otimizador eficiente, que o auxilia nas tarefas de otimizao reduzindo o esforo manual de identificar e corrigir comandos de SQL realizados de maneira incorreta. PostgreSQL por se tratar de um SGBD de grande capacidade de armazenamento e processamento, exige do seu DBA (Administrador de Banco de Dados) um grande conhecimento para que possibilite formas de se obter informaes com menor consumo de processamento possvel.

Sero especificados algumas caractersticas e um poucos da histria do PostgreSQL, logo aps sero apresentados os conceitos bsicos necessrios para a compreenso de como realizado o processamento e como o otimizador de consulta realiza suas tarefas em um sistema gerenciador de banco de dados por meio de instrues SQL.

2. PostgreSQL
2.1 Histrico Seu incio se deu na Universidade de Berkeley, na Califrnia, em 1986. Um programador chamado Michael Stonebraker, na poca liderou um projeto para a criao de um servidor de banco de dados relacional chamado Postgres, este projeto era oriundo de outro projeto da mesma instituio denominado Ingres. Ento essa tecnologia foi adquirida pela Illustra, empresa posteriormente comprada pela Informix. Porm, mesmo diante disso, dois estudantes de Berkeley (Jolly Chen e Andrew Yu) compatibilizaram o Postgres linguagem SQL. Este projeto recebeu o nome de Postgres95. Dez anos depois, j em 1996, quando o projeto estava estvel, o banco de dados recebeu o nome de PostgreSQL. Porm, houve vrias mudanas enquanto ainda possua o nome Postgres95. O seu cdigo foi totalmente revisado e a linguagem SQL foi definida como padro. 2.2 Descrio Tecnicamente falando, o PostgreSQL um banco de dados relacional e orientado a objetos. Uma de suas caractersticas possuir recursos comuns em banco de dados de grande porte, o que o deixa apto a trabalhar, inclusive, com operaes de misso crtica. Alm disso, trata-se de um banco de dados verstil, seguro, gratuito e de cdigo aberto (disponvel sob uma licena BSD). O PostgreSQL otimizado para aplicaes complexas, isto , que envolvem grandes volumes de dados ou que tratam de informaes crticas. Assim, para um sistema de comrcio eletrnico de porte mdio/alto, esse SGBD capaz de lidar de maneira satisfatria com o volume de dados. Entre suas caractersticas, encontram-se: Compatibilidade multi-plataforma, ou seja, pode ser executado em vrios sistemas operacionais, como Windows, Mac OS X, Linux e outras variantes de Unix; Compatibilidade com vrias linguagens, entre elas, Java, PHP, Python, Ruby, e C/C++; Base de dados de tamanho ilimitado;

Tabelas com tamanho de at 32 TB; Quantidade de linhas de at 1.6 TB ilimitada; Campos de at 1 GB; Suporte a recursos como triggers, views, stored procedures, SSL, MVCC, schemas, transactions, savepoints, referential integrity e expresses regulares; Instruo em SQL, como indica o nome;

3. Processamento de Consultas
Atualmente diversos SGBDs, assim como o PostgreSQL, utilizam diferentes tcnicas para processar, otimizar e executar consultas feitas atravs de comandos SQL. Uma consulta deve ser examinada (scanner), analisada (parser) e validada. O scanner identifica os componentes da linguagem no texto da consulta, enquanto o parser verifica a sintaxe da consulta para determinar se a mesma esta seguindo a sintaxe da linguagem SQL. A consulta tambm ser validada, atravs da verificao de todos os nomes de atributos e tabelas so vlidos e semanticamente significativos. Uma representao interna da consulta criada, geralmente usando uma estrutura de rvores ou grafos, chamada de rvore de consulta ou grafo de consulta. Depois de examinado, analisando e validado um comando SQL, o sistema tem de traduzir o comando para uma expresso equivalente da lgebra relacional e represent-la em uma estrutura de dados conhecida como rvore de consulta. Tendo convertido a representao em uma forma interna melhor, o otimizador deve ento decidir como avaliar a consulta transformada representada pela forma convertida. A seguir a Figura 1 descreve os passos do processamento de consultas de alto nvel:

Figura 1. Consulta de alto nvel.

4. Otimizador de Consultas
A finalidade do otimizador de um banco de dados livrar os usurios de suas complexidades e das exigncias necessrias para se conseguir consultas de forma eficiente. Usar tcnicas para reformular consultas em outras que desempenha a mesma funcionalidade, mas com tempo de resposta menor que a consulta original uma das principais caractersticas de um Otimizador de Consulta. O otimizador faz com que reduza o esforo manual e repetitivo de identificar e corrigir comandos de SQL realizados de maneira incorreta, causando em baixos desempenhos. Assim que uma consulta for examinada, analisada e validada, deve ento determinar uma estratgia de execuo para a recuperao dos dados da consulta. O PostgreSQL usa algumas estatsticas mantidas em tabelas do sistema para direcionar o seu otimizador. Uma consulta tipicamente possui diversas estratgias de execuo, e o processo para escolher dentre elas a mais eficiente estratgia de execuo concedido ao Otimizador de Consultas. Portanto a otimizao envolve: Determinar uma expresso equivalentemente mais eficiente;

Escolha da melhor estratgia de execuo para a consulta (plano de acesso).

5. lgebra Relacional
5.1. Projeo Geralmente indicada na literatura por (a letra grega pi) produz um conjunto onde h um elemento para cada elemento do conjunto de entrada, sendo que a estrutura dos membros do conjunto resultante definida nos argumentos da operao. Pode ser entendida como uma operao que filtra as colunas de uma tabela. Por operar sobre apenas um conjunto de entrada, a projeo classificada como uma operao unria. Ex.: Nome_Func (funcionrio) Essa expresso produz um conjunto contendo um elemento para cada funcionrio, e cada elemento contm apenas a informao referente Nome_Func da relao funcionrio original. 5.2. Seleo Indicada por (a letra grega sigma) uma operao que para um conjunto inicial fornecido como argumento, produz um subconjunto estruturalmente idntico, mas apenas com os elementos do conjunto original que atendem a uma determinada condio (tambm chamada de predicado). A seleo pode ser entendida como uma operao que filtra as linhas de uma tabela, e tambm uma operao unria, j que opera sobre um nico conjunto de dados. Ex.: Sexo = M (funcionrio) Produz o conjunto dos elementos de funcionrio que atendem ao predicado [Sexo = M], ou seja, representa um subconjunto dos funcionrios para o qual essa condio avaliada como verdadeira. 5.3. Produto cartesiano A notao geralmente adotada (na forma conjunto1 x conjunto2) para representar essa operao binria indica bem a sua natureza: o resultado do produto cartesiano de duas tabelas uma terceira tabela contendo todas as combinaes possveis entre os elementos das tabelas originais. Essa tabela resultante possuir um nmero de colunas que igual soma das quantidades de colunas das duas tabelas iniciais, e um nmero de linhas igual ao produto do nmero de suas linhas. Portanto, se fizermos o produto cartesiano de uma tabela A que possua quatro colunas e dez linhas com uma tabela B onde existem trs colunas e sete linhas, a tabela resultante ter 4 + 3= 7 colunas e 10*7=

70 linhas. Assim, cada linha dessa tabela corresponder concatenao de uma linha da primeira tabela com uma linha da segunda. O produto cartesiano no muito usado como um fim em si mesmo, ou seja, dificilmente estaremos interessados em saber quais so todas as combinaes possveis entre as linhas de duas tabelas, pois a utilidade prtica desse tipo de conhecimento muito discutvel. Entretanto, a nica forma primitiva de que dispomos para fundir informaes de duas tabelas heterogneas para posterior processamento. Nesse caso, tipicamente ser necessrio executar uma Seleo sobre o resultado do Produto Cartesiano, de maneira a descartar as combinaes invlidas entre as linhas das tabelas originais. 5. 4. lgebra Relacional Equivalente Uma regra de equivalncia diz que uma expresso de duas formas so equivalentes: podemos transformar uma na outra preservando a equivalncia. Manter a equivalncia significa que as relaes geradas pelas duas expresses tm o mesmo conjunto de atributos e contm o mesmo conjunto de tuplas, embora seus atributos possam estar ordenados de forma diferente. As regras de equivalncia so usadas pelo otimizador para transformar expresses em outras logicamente equivalentes. O processo caro, tanto em termos de espao quanto de tempo. Alm disso, nem sempre necessrio gerar expresses usando regras de equivalncias. Se as estimativas de custo da avaliao so levadas em considerao, um otimizador pode ser capaz de evitar o exame de algumas das expresses. Nesse estgio, o otimizador pode escolher uma expresso equivalente avaliada e ainda obter o mesmo resultado. A seguir um resumo dos operadores da lgebra relacional com mostrado na tabela 1: Smbolo Operao Seleo / Restrio Projeo Unio Interseco Diferena de conjuntos Sintaxe Tipo Primitiva Primitiva Primitiva Adicional Primitiva

U
-

Condio (Relao) Expresses (Relao)


Relao1 U Relao2

Relao1 Relao2 Relao1 - Relao2

X |x|

Produto cartesiano Juno Diviso Renomeao Atribuio

Relao1 X Relao2 Relao1 |x| Relao2 Relao1 Relao2

Primitiva Adicional Adicional Primitiva Adicional

nome (Relao)
Varivel Relao

Tabela 1. Resumo dos Operadores da lgebra Relacional. Fonte: Operaes Relacionais e lgebra Relacional.

6. Concluso
Neste artigo foi apresentando como um SGBD, em especfico o PostgreSQL, realiza a Otimizao de Consulta, onde foi mostrado os processos de uma consulta SQL. Assim foi possvel ter um melhor entendimento de como o funcionamento de um SGBD, focando principalmente, nas tarefas de Processamento e da Otimizao de Consultas realizadas internamente por um banco de dados. Analisando o que foi apresentado neste artigo podemos concluir: Como so os passos do processamento de uma consulta escrita na linguagem SQL. Primeiramente examinada para identificar os componentes da linguagem de consulta no texto, aps analisado a sintaxe da consulta para determinar se a mesma esta seguindo a sintaxe da linguagem SQL e por ltimo validada a consulta, verificando se os nomes de atributos e tabelas so vlidos e se possuem um significado semanticamente. Aps todo o processamento da consulta, a mesma repassada ao Otimizador de Consultas, onde o mesmo encarregado de reescrever toda a consulta utilizando tcnicas para reformular a consulta em outras que visam um melhor desempenho com a mesma funcionalidade da consulta originalmente escrita. Com isso reduzido o esforo manual de identificar e corrigir comandos SQL escrito de maneira incorreta, causando baixo desempenho. Compreendendo estes passos que um banco de dados realiza para executar uma consulta, e tendo um entendimento sobre lgebra relacional, fica mais claro o funcionamento interno de um banco de dados.

Referncias
Anderson Naidon, Daniel Bastos e Gleizer Voss. PostgreSQL ou MySQL. Disponvel em: <http://www.danielbastos.eti.br/trabalhos_interdiciplinar.php>. Acesso em Setembro, 2009. Joo Paulo Silva Cintra e Renato Capello. Otimizao de Consultas Relacionais. Disponvel em: <http://www.ic.unicamp.br/~geovane/mo410-091/ch15Resumo.pdf>. Acesso em Outubro, 2009. Cristiano Tonietto Galina. Processamento de Consultas. <http://ctgalina.googlepages.com/ProcessamentoConsultas.ppt>. Setembro, 2009. Disponvel Acesso em: em

Javam C. Machado. Otimizao de Consultas Relacionais. Disponvel em: <http://www.lia.ufc.br/~javam/Bd_avancado/otimizacao-consulta.pdf>. Acesso em Setembro, 2009. Ligia Flvia Antunes Batista. Processamento e otimizao de consultas. Disponvel em: <http://inf.cp.cefetpr.br/ligia/material/bd2/cli-serv/otimiz_dissertacao_oracle.ppt>. Acesso em Outubro, 2008. Juliano Tonezer da Silva. Otimizao Algbrica. Disponvel em: <http://usuarios.upf.br/~tonezer/bd2/otimizacao_v.pdf >. Acesso em Outubro, 2008. PostgreSQL: Documentation. Disponvel em: <http://www.postgresql.org/docs>. Acesso em Outubro, 2008. Walter Cruz. Disponvel em: < http://artigos.waltercruz.com/postgresql/otimizador/>. Acesso em Outubro, 2008. Carlos Eduardo Santos Pires, Rilson Oscar Nascimento, Ana Carolina Salgado. Comparativo de Desempenho entre Bancos de Dados de Cdigo Aberto. Disponvel em: <http://www.itautec.com.br/FileExplorer/Arquivo/Empresa/Documentos/Corporativ o_%20Bancos%20de%20Dados_%20SW%20Livre.pdf>. Acesso em Outubro, 2008. Antonio Cesar de Barros Munari. Operaes Relacionais e lgebra Relacional. Disponvel em: <http://www.pucrs.campus2.br/~jiani/bd/OpRelacional.pdf>. Acesso em Outubro, 2008.

Potrebbero piacerti anche