Sistemas de Base de Dados

Tamanho: px
Começar a partir da página:

Download "Sistemas de Base de Dados"

Transcrição

1 Sistemas de Base de Dados Comparação entre PostgreSQL, Oracle e Microsoft SQL Server dos mecanismos para processamento e optimização de perguntas Grupo 17 Elaborado por: Diogo Brito, nº37739 João Costa, nº Pedro Pires, nº25806 Dezembro 2011

2 Índice: 1. Introdução Microsoft SQL Server Oracle PostgreSQL Comparação Linguagem Intermédia Implementação de operações básicas Algoritmos suportados Mecanismos para consultar planos Paralelização de Queries Optimização Estimativa de Custos Comandos para parâmetrizar a construção e uso de estimativas Transformações Conclusão Bibliografia... 38

3 Índice de imagens Figura Pipelining base de uma query... 9 Figura Representação de uma query Figura 2.3 Operadores Figura Hash Join Figura Funcionamento do Hash Join Figura Processamento de uma query Figura Árvore derivada Figura Cálculo do custo... 25

4 1. Introdução A análise do processamento de perguntas num sistema de gestão de base de dados (SGBD) surge pela necessidade de optimização das mesmas. Apesar de numa base de dados de pequena escala a optimização poder não ter grande impacto, numa base de dados de grande escala a forma como as perguntas são particionadas internamente pode reduzir o tempo de resposta a uma dada pergunta. Geralmente as SGBDs estão divididas em duas partes. Uma que gere e controla os dados guardados, sendo responsável pela gestão destes. A segunda é responsável por receber uma query e produzir o output da mesma. Para isto primeiro é criado um plano de execução e, após o plano estar completo, este é executado. Este plano é feito através da transformação da operação lógica original em operações físicas. Uma operação lógica pode estar associada a apenas operação física, como é o caso da ordenação, ou pode estar associada a mais, por exemplo, transformar um join num nested loop join, merge join ou hash join. Para a elaboração dos planos são usadas estatísticas, para que seja possível calcular qual a melhor forma de produzir os resultados esperados, e, dependendo do custo de cada plano, é escolhido um que irá ser levado adiante. É sobre esta segunda parte das SGBDs que este relatório vai recair. Como são elaborados planos e como estes podem ser optimizados. Para a elaboração deste trabalho foram escolhidas, para além de Oracle, as SGBDs Microsoft SQL Server 2008 e PostgreSQL, sendo que esta escolha baseou-se nas funcionalidades oferecidas por cada uma das SGBDs, e pela documentação existente sobre as mesmas.

5 1.1. Microsoft SQL Server Desenvolvido pela Microsoft em parceria com a Sybase em 1988 aparece como um produto complementar do Windows NT. A versão mais actual é o SQL Server 2008 R2 mas espera-se já uma nova versão em As principais linguagens que aceita são Transact SQL (T-SQL) e ANSI SQL. É um sistema de gestão de bases de dados que pode funcionar tanto localmente apenas num computador como em vários ao mesmo tempo, mesmo pela internet Oracle Lançada em 1979 por uma empresa criada por Larry Ellison (actualmente CEO da Oracle Corporation) e dois colegas, foi a primeira base de dados relacional a estar disponível comercialmente. Os objectos e funções guardados podem ser invocados pela linguagem PL/SQL, linguagem proprietatia da Oracle Coorperation, ou por Java. A última versão é Oracle 11g PostgreSQL O PostgresSQL é uma SGBD desenvolvida na Universidade da Califórnia no Berkeley Computer Science Department. Esta SGBD foi pioneira em diversos conceitos que só foram implementados em SGBDs comerciais vários anos mais tarde.

6 Esta SGBD é open-source que nasceu no final dos anos 70 a partir de um projecto académico. Antes do nome Postgres ser adoptado este tinha como nome INGRES (INteractive Graphics REtrieval System). São suportadas vários standards do SQL bem como novas operações: Queries complexas; Chaves externas; Triggers; Vistas; Integridade de transacções; Controlo de concorrência; No ano de 1986, o Professor Michael Stonebraker, patrocinado pela Defense Advanced Research Projects Agency (DARPA), Army Research Office (ARO), National Science Foundation (NSF) e ESL, Inc, liderou o projecto com uma vasta equipa por trás conseguindo implementar um largo número de operações sendo que a primeira versão, ainda que não finalizada, surgiu em Em 1990 o sistema foi redesenhado com um novo sistema de regras e, em 1991, surgiu uma versão melhorada suportando múltiplos gestores de armazenamento, um executante de queries melhorado e o sistema de regras foi reescrito. Como podemos constatar através dos factos referidos atrás, o PostgreSQL evoluiu de uma maneira acelerada, no entanto, em 1994 surgiu uma versão que revolucionou o projecto. Esta versão é a chamada POSTGRES95 e foi desenvolvida por dois alunos, Andrew Yu e Jolly Chen. O que se destaca esta versão é o facto de ter um interpretador da linguagem SQL. Esta versão foi disponibilizada na internet numa versão opensource, juntamente com um tutorial o que facilitou e impulsionou o desenvolvimento da SGBD. O Posrgres possibilita também a adição de novos tipos de dados, funções, operadores, funções agregadas, métodos de index e linguagens procedimentais (PL/pgSQL, PL/Perl, PL/Java, PL/Ruby, etc.).

7 O facto de o Posrgres ser open-source torna possível e gratuita a sua modificação quer seja por privados, comerciais ou com objectivos académicos, e é de realçar que várias empresas usam esta SGBD para gerir os seus dados, como por exemplo o MySpace, Skype, IMDB, Yahoo, chegando a albergar dados na ordem dos petabytes neste último caso.

8 2. Comparação 2.1. Linguagem Intermédia Uma linguagem intermédia é a linguagem desenhada para correr numa máquina abstracta e é usada muitas vezes pelos compiladores como, tal o nome indica, uma linguagem intermédia antes de passar para a linguagem máquina. Isto existe pois é uma linguagem que pode ser independente do CPU e ao mesmo tempo da linguagem de programação em si. Um exemplo disso é, dentro da plataforma.net, todas as linguagens (C#, vb.net, etc) serem traduzidas para MSIL (Microsoft Intermediate Language) e apenas depois para linguagem máquina. Este tipo de linguagens intermédias são utilizadas pelos compiladores e também por outras ferramentas. O Oracle e o PostgreSQL, por utilizarem o PL/SQL, que é baseado em Ada utilizam uma variante do Desciriptive Intermediate Attributed Notation for Ada (DIANA). Para estes dois últimos, o funcionamento é o seguinte: no momento de compilar o PL/SQL é traduzido em código de sistema e é formado um pacote que é gravado na base de dados; no momento de execução estes são carregados para a memória partilhada e o código é executado. Na memória partilhada um pacote está limitado a 2^26 nós de DIANA o que corresponde a cerca de 6 milhões de linhas de código. O SQL Server utiliza o MSIL, como referido anteriormente. O MSIL: Microsoft Intermediate Language mas actualmente denominada por Common Intermediate Language. Esta linguagem é também utilizada por todas as outras.net Languages (C#, VB.NET, ASP.NET).

9 2.2. Implementação de operações básicas Figura Pipelining base de uma query Quando uma query é compilada o código é primeiro traduzido para uma representação equivalente em árvore. Depois, e caso a query tenha uma sintaxe SQL válida, um conjunto de verificações é efectuado para verificar se o utilizador tem acesso às tabelas e colunas pertencentes à arvore, tal como é verificado se estas existem. É ainda neste passo que são efectuadas verificações de semântica para garantir que são válidas e que, por exemplo, as colunas enumeradas num GROUP BY são válidas no caso em questão. Quando é completa a árvore da query e se verificou que a query está totalmente correcta então entra em acção a optimização. Neste passo o optimizador de query verifica diferentes tipos de planos, escolhendo a melhor a ser executada para o caso e entrega ao sistema para o plano escolhido para que este execute a query. Ao construir a representação da query em árvore é atribuído a cada operação um nó da árvore distinto. Vejamos o exemplo de como SELECT * FROM Customers C INNER JOIN Orders O in C.cid = O.cid WHERE O.date= poderá ser representado internamente.

10 Figura Representação de uma query O processador de queries utiliza diferentes árvores durante o processo. Um caso onde tal pode ser verificado é quando o Optimizador de Queries transforma uma operação lógica numa física, como exemplo, transforma um JOIN lógico (neste caso um INNER JOIN) num JOIN físico (Hash, merge ou nested). SQL Server tem cerca de 40 operadores lógicos e ainda mais operadores físicos. Alguns dos mais comuns irão ser focados, como o JOIN ou SELECT e outros mais específicos, como UDX ou Segment, não serão abordados. Operadores: Todos os operadores, em SQL Server, funcionam por pedidos de linhas aos seus nós filhos e, depois, retornando linhas aos nós que o chamam (pais), como no exemplo a seguir.

11 Figura 2.3 Operadores Cada operador retorna uma linha de cada vez, por isso, um caller terá de fazer vários pedidos para obter várias linhas. O nó caller poderá ser um operador pai ou o utilizador, que irá receber a resposta da query. Existem três tipos de join físico: HASH JOIN MERGE JOIN NESTED LOOP JOIN Em queries pequenas, que afectam um número reduzido de valores, o nested loop join é muito superior em relação aos demais, porem em queries com muitos valores as duas primeiras podem ser melhores. A escolha de qual usar é feita dinamicamente pelo optimizador. Hash Join Vejamos o seguinte exemplo, relativo ao seguinte código SQL:

12 Figura Hash Join Um hash join utiliza duas entradas, uma de construção e uma de indicação. A entrada de construção é mostrada no topo enquanto a de indicação, é mostrada em baixo. A mais pequena das duas entradas é escolhida para ser a de construção. A operação é feita em duas fases: a de construção e a de indicação. O caso mais comum de hash join é o in-memory hash join, onde na primeira fase, o conjunto de entrada de construção é totalmente consultado e, depois, uma tabela de hash é escrita em memória. Cada linha é, de seguida, inserida num conjunto de hash (denominado hash bucket) dependendo do valor de hash computado para a sua chave de hash. Esta fase é seguida da de indicação onde, para cada linha na entrada de indicação, é gerada uma chave de hash. Então, no correspondente conjunto de hash para aquela chave, é pesquisada a chave da entrada de indicação e são gerados os valores comuns. A figura seguinte ilustra bem como é feito.

13 Figura Funcionamento do Hash Join Este tipo de pesquisa é usado maioritariamente quando existem um grande número de dados, tipicamente não ordenados e não indexados. Merge Join Neste tipo de query é necessário que ambas as entradas estejam ordenadas nas colunas que estão a ser misturadas. Se houver índices disponíveis em ambas as colunas de entrada então é obtida uma linha de cada uma, são comparados os valores e, se coincidirem, é adicionada essa linha ao resultado final. Este processo é executado para todas as entradas. Nested Loop Join O nested loop join usa uma das entradas dos join como entrada exterior da tabela e a outra como entrada interior da tabela. Basicamente existem dois ciclos sendo que um

14 deles está dentro do outro. O ciclo exterior vai consumindo a entrada exterior linha por linha à medida que o interior verifica entradas na entrada interior. Este tipo de join é muito eficiente quando a entrada exterior é relativamente pequena e a entrada interior é grande mas indexada. Em muitos tipos de query onde existem apenas um conjunto pequeno de entradas este é muito superior aos dois tipos de join referidos anteriormente. Caso a tabela interior não esteja indexada na coluna em questão é, então, necessário usar um hash join Algoritmos suportados Os índices são a base da melhoria de performance das queries. Um índice bem feito poderá melhorar substancialmente o tempo de resposta de uma query, no entanto, um índice incorrecto ou colocado na coluna errada pode ter o efeito contrário podendo aumentar o tempo de resposta. Sendo uma das melhores formas de reduzir as leituras/escritas do disco permite encontrar informação numa tabela sem ter que a percorrer por completo; pode até ser comparada a um índice de um livro: se o consultarmos e encontrarmos a informação necessária podemos ir directamente para a página que nos interessa. Há duas operações básicas que podem ser aplicadas através do índice: Pesquisa (por um valor ou um conjunto de valores na chave do índice); Percorrer o índice (para a frente ou para trás); Para a pesquisa, o operador inicial começa na raiz da árvore B+ e navega em profundidade até ao local desejado, baseado nas chaves dos índices. Uma vez completo é então possível para o processador de query iterar sobre todas as linhas que verificam um certo predicado ou até que o último valor pertencente ao predicado seja encontrado.

15 Uma vez que os nós de folha numa árvore B+ (usada pelo SQL Server) estão ligados então é possível consultar linhas ordenadamente à medida que se navega por esses mesmos nós. Uma das tarefas com Optimizador de Query é o de assimilar quais predicados poderão ser aplicados a um certo índice para retornar linhas o mais rápido possível; alguns podem ser aplicados a um índice enquanto outros não. Os predicados que podem ser convertidos em índices são muitas vezes denominados sargable, de significado Search-ARGument-able, enquanto os que não podem são denominados non-sargable. Estes últimos seriam normalmente aplicados depois de uma pesquisa ao índice ou após percorrer este; isto para que a pesquisa retornasse todos os valores que verificam todos os predicados. No entanto, no SQL Server verifica normalmente os non-sargable dentro da pesquisa/percorrer índice na árvore da query, por questões de optimização. Caso não o fizesse os passos seriam: 1. Operador de pesquisa: Pesquisar uma chave no índice da árvore B+; 2. Trancar a página; 3. Ler a linha; 4. Libertar a página; 5. Retornar a linha ao operador de filtro; 6. Filtro: testar se a linha verifica o predicado non-sargable. Se sim, passar a linha para o operador pai. Se não, voltar a 2; No entanto, esta opção é mais lenta que a óptima pois retornar a linha para um outro operador exige carregar um novo conjunto de instruções e dados para o CPU. Se o conjunto da operação for mantido apenas num sítio, o custo geral de CPU irá baixar. Os passos são: 1. Operador de pesquisa: Pesquisar uma chave no índice da árvore B+; 2. Trancar a página; 3. Ler a linha; 4. Aplicar o filtro non-sargable. Se não passar o filtro ir para o passo 3, se não ir para 5;

16 5. Libertar a página 6. Retornar a linha Isto é chamado de injectar predicados non-sargable, pois o predicado passa duma operação exterior para dentro da pesquisa/percorrer. É uma optimização física mas pode aparecer em queries que processem muitas entradas. No entanto nem todos os predicados podem ser avaliados desta forma pois, como trancar uma página bloqueia até o acesso de outros utilizadores a consultarem, então esta operação está reservada apenas a predicados que não sejam muito pesados em termos de custo. São os chamados predicados non-pushable, non-sargable Mecanismos para consultar planos Quando se trabalha com sistemas com um tamanho considerável e que exijam resultados rápidos/consistentes, muitas vezes é necessário recorrer a ferramentas que permitam verificar se as queries estão correctas, o que se está a passar por detrás da black-box. Para isso os sistemas muitas vezes disponibilizam tais ferramentas para que um administrador de bases de dados possa cumprir o seu papel. Estes mecanismos mostram também os planos que estão por detrás das chamadas que são feitas, podendo verificar-se as decisões do optimizador de query, como verificar se se optou por um nested loop join ou um hash join, etc. Em SQL Server a ferramenta existente é o SQL Profiler Tool. O SQL Profiler tool é um ambiente gráfico que permite ao utilizador fazer variados tipos de consulta sobre uma base de dados sem SQL Server, como por exemplo: Monitorizar graficamente SQL Server queries Guardar informação sobre queries em background Analisar a performance do sistema Diagnosticar problemas como deadlocks Fazer debug a uma sintaxe T-SQL

17 Permite também criar SQL Traces Em Oracle existe o Explain Plan que permite verificar os planos para operadores de SELECT, UPDATE, INSERT e DELETE. É mostrada uma árvore com o conjunto de chamadas que o Oracle executa para uma determinada chamada. Nessa árvore podese ver: Conjunto de tabelas que são referenciadas no pedido; Método de acesso por cada tabela mencionada; Método de join para cada tabela afecta a um operador de join; Operadores de dados como filter, sort ou aggregation; Para além da informação na árvore é ainda possível ver informação sobre: Optimização, como o custo e cardinalidade de cada operação; Particionamento, como o conjunto de partições a que se acedeu; Execuções paralelas, como a distribuição de métodos de entrada de join; Em PostgreSQL a ferramenta utilizada chama-se EXPLAIN e tem a seguinte sintaxe: EXPLAIN [ ( option [,...] ) ] statement EXPLAIN [ ANALYZE ] [ VERBOSE ] statement where option can be one of: ANALYZE [ boolean ] VERBOSE [ boolean ] COSTS [ boolean ] BUFFERS [ boolean ]

18 FORMAT { TEXT XML JSON YAML } Este comando permite fazer consultas semelhantes à ferramenta anterior, do Oracle. Para além desta ferramenta existe ainda outra que é a tkprof Paralelização de Queries Paralelização de queries é a tecnologia usada para dividir um comando SQL em vários e distribui-los por dois ou mais processadores. Funções como full-table scans, sorts, etc. podem ter um aumento de performance ao serem paralelizadas. Apesar de em 1987 a Ingres, predecessora do PostgreSQL, ter começado a desenvolver paralelização de queries, o projecto foi abandonado pouco tempo depois. Como tal, apesar de ser uma das features mais comuns vistas em SGBDs, o PostgreSQL não tem esta função implementada. É considerada algo útil em apenas poucas situações e como tal não é algo urgente para implementar. Essa tecnologia é no entanto implementada tanto pela Microsoft como pela Oracle. No caso da Oracle, a query SQL é dividida em unidades mais pequenas, cada uma executada por um processo. Ao ser usada paralelização, o processo principal torna-se o coordenador da paralelização, com as seguintes responsabilidades: Divide o trabalho em unidades mais pequenas; Cria um número suficiente de processos paralelos que possam executar os subtrabalhos; Atribui os sub-trabalhos aos processos; Liberta os processos após o fim do processamento do trabalho; Vai atribuindo novos sub-trabalhos aos processos livres até a execução da query finalizar;

19 Para que haja paralelização num comando do tipo Select, é necessário que este cumpra alguns requisitos: Pelo menos uma das tabelas é acedida através de um full-table scan ou um índex range scan; Se a execução envolver um full-table scan (respectivamente, índex range scan), é necessário indicar a tabela correspondente ou definir a tabela com uma indicação de paralelização (respectivamente, indicar o índex correspondente ou declarar o índex com indicação de paralelização); A paralelização pode ser activada usando o comando: ALTER TABLE nome_da_tabela PARALLEL (DEGREE 8); E pode ser desactivada usando o comando: ALTER TABLE nome_da_tabela NOPARALLEL; A Oracle permite ainda controlar parâmetros como o número mínimo e máximo de processos em paralelos, ou fazer com que estes parâmetros sejam controlados automaticamente. O valor tanto do número máximo de processos paralelos como do valor mínimo tem de ser balanceado. O número mínimo de processos paralelos tem de ser alto o suficiente para evitar seja necessário estar sempre a criar processos novos. O valor por defeito é 0. Por seu lado, o valor máximo, se for muito alto, irá tentar consumir mais recursos do que os disponíveis, acabando por prejudicar na performance da execução. É também possível indicar o número de processos associados com uma determinada operação. Tal operação é feita com o seguinte comando: SELECT /*+ PARALLEL(orders,4,1) */ ; Em Oracle operações como inserções, actualizações e deletes também pode beneficiar de paralelização. Para paralelizar updates e deletes é necessário que as tabelas estejam particionadas, e que diferentes partições sejam usadas. Ou seja, tem-se diferentes processos a fazerem pesquisas em diferentes partições.

20 Em SQL Server, a paralelização é feita automaticamente, apesar de não ser usada caso aconteça uma das seguintes situações: O custo de execução da query não é alto o suficiente para que seja considerado uma alternativa em que seja usado algum tipo de paralelismo; O plano de execução paralelizado tem um custo maior que um nãoparalelizado; A query contém instruções que não podem ser paralelizadas. Dependendo da instrução, isto pode causar que parte do plano, ou o plano na sua totalidade, não seja paralelizado. Durante a criação do plano de execução, o SQL Server vai colocando operadores para preparar a query para ser executada em paralelo. Este operador faz a gestão dos processos e gestão dos dados. Existem três tipos de operadores, sendo que um ou mais podem aparecer no plano de execução: distributed streams, repartition streams e gather streams. O primeiro recebe como parâmetro uma lista e divide-a em múltiplas listas. Estas sub-listas mantêm o mesmo formato, conteúdo e ordem que a lista original, apesar de uma entrada poder aparecer em mais que uma sub-lista. O segundo operador, repartition stream, recebe múltiplas listas e devolve múltiplas listas após estas serem filtradas. Por fim, o operador gather streams recebe várias listas e junta-as numa única lista. Todos os operadores mantêm o formato e conteúdo da lista original. Após a inserção de todos os operadores necessários, o resultado é um plano de execução que usa a paralelização, e, consequentemente, vários processos. O número de processos usados é determinado pelo plano em si, nomeadamente pela complexidade do mesmo e pelo grau de paralelismo, ou seja, o número máximo de processos usados. O procedimento sp_configure permite configurar o grau de paralelismo, através das chamadas query hints. Estas permitem especificar quais os algoritmos usados no processamento da query. É possível definir entre muitos outros, o número máximo de paralelismo, se é usado loop join, merge join, hash join, hash group order group.

21 2.6. Optimização Em relação à optimização de queries, isto é feito pelas três SGBDs estudadas. Em SQL Server, quando uma query é submetida, esta passa por quatro passos (Figura 2.1). Figura Processamento de uma query Nos dois primeiros passos, verifica-se se a query é válida, e é criado uma árvore, em que cada nó representa uma operação lógica, como ler uma determinada tabela ou efectuar um inner join. Por exemplo, caso seja introduza a query: SELECT c.customerid, COUNT(*) FROM Sales.Customer c JOIN Sales.SalesOrderHeader o ON c.customerid = o.customerid WHERE c.territoryid = 4 GROUP BY c.customerid

22 Esta é transformada na seguinte árvore(figura 2.2): Figura Árvore derivada A árvore é recebida pelo query optimizer, responsável pela optimização, e é nesse passo que são criados os diversos planos possíveis. Ainda que não seja possível gerar todos os planos possíveis para uma dada query, são avaliados os custos dos planos gerados e é escolhido um dos gerados, normalmente é escolhido o de menor custo. De forma a explorar o conjunto de planos possíveis, são usadas heurísticas, para que o número de planos gerados seja limitado, limitando desta forma a quantidade de recursos e tempo usados para a geração dos mesmos, tendo em conta que independentemente do plano escolhido, o resultado terá de ser invariavelmente o mesmo. A heurística usada determina que irá ser procurado um plano de execução com um custo menor ao encontrado até ao momento desde que esse custo seja alto o suficiente que compense essa pesquisa. Para estimar o plano mais eficiente é estimado o custo de cada operação física nesse plano, usando formulas que têm em conta o uso de recursos como RAM, CPU e I/O. Este custo vai então variar conforme o algoritmo usado e pelo número de entradas que terão de ser processadas. O custo de obter estas entradas é calculado recorrendo

23 ao uso de estatísticas que descrevem a distribuição dos valores nas tabelas existentes. Após o cálculo dos custos, estes são somados para obter o custo total do plano. Este plano é então guardado numa estrutura chamado memo para que mais tarde se possa comparar os vários planos e escolher o melhor. Este plano é então passado para a execution engine para ser executado, e possivelmente é guardado em memória para ser mais tarde usado. Em PostgreSQL a estrutura do plano é uma árvore em que nós nos níveis mais baixos representam operações de mais baixo nível, como scans em tabelas. Os custos das operações mais acima na árvore inclui o custo dos seus descendentes, e não é tido em conta os custos de operações como mostrar os resultados por serem independentes do plano escolhido. Os custos destas operações são medidos em unidades de disco lidas, sendo que 1.0 representa uma leitura sequencial. O custo do CPU também é tido em conta, mas é convertido para as mesmas unidades. Por exemplo, o custo duma query em comparação de a mesma query mas com uma cláusula WHERE vai ser menor, pois a segunda vai necessitar verificar essa condição em todas as entradas da tabela. Esta cláusula, WHERE, vai ter impacto no algoritmo escolhido para ler os dados. Se a cláusula for restrita o suficiente, é usado um índex scan. Isto torna mais dispendioso ler os dados pois eles não são lidos de forma sequencial, mas devido ao seu reduzido número o custo acaba por ser compensado. Este tipo de scan é também usado com cláusulas do tipo ORDER BY. No caso de serem usadas cláusulas WHERE sobre diferentes colunas da mesma tabela, dependendo de como a condição é feita, o algoritmo escolhido irá ser diferente. Para isto são utilizadas estatísticas. Estas estatísticas não são constantemente actualizadas, mas tendem a reflectir o número de entradas numa dada tabela, e o número blocos ocupados em disco.

24 Para queries complexas que usem o operador join o PostgreSQL usa algoritmos genéticos para ajudar a diminuir a complexidade das mesmas. Este algoritmo escolhe algumas possíveis sequências de joins aleatoriamente, e sequências com menor custo são consideradas mais adequadas que as de maior custo. São então geradas novas combinações tendo em conta as sequências de menor custo encontradas até ao momento. Isto repete-se um número pré-definido de vezes, e a sequência de menor custo até ao momento é a escolhida para o plano de execução. Por este algoritmo ser não-determinista, existem parâmetros de controlo que garantem que a mesma query produz sempre o mesmo resultado. Em Oracle existem duas possibilidades sobre o modo como é feita a optimização. Pode ser dada mais importância ao tempo de resposta total, como em aplicações em que o importante é o resultado final, ou pode ser dada mais importância ao tempo que demora até começarem a surgir resultados, como em aplicações interactivas em que o utilizador apenas está interessado nos primeiros resultados. Esta possibilidade é definida no parâmetro OPTIMIZER_MODE. Para calcular qual o melhor custo são usadas estatísticas, guardadas num dicionário. É guardada informação sobre a forma como os dados estão guardados em disco e a distribuição de dados nas diferentes tabelas.

25 Figura Cálculo do custo Query Transformer recebe como entrada um conjunto de sub-queries, sendo que a estrutura da query original vai definir qual a estrutura destas sub-queries, e tenta determinar se esta estrutura é a óptima ou se compensa muda-la. Após isso, são geradas três tipos diferentes de medidas, relacionadas entre si, e são estas medidas que vão estimar o custo de um determinado plano. Estas medidas são: Selectividade; Cardinalidade; Custo; A primeira representa uma fracção das entradas de uma determinada lista. Esta lista pode ser uma tabela, uma vista, o resultado de um join ou de um operador GROUP BY. Pode estar também associado a um predicado WHERE, que irá actuar como um filtro, sendo que este filtro vai determinar quantas entradas vão ser seleccionadas. O valor da selectividade pode variar entre 0.0 e 1.0, em que 0.0 significa que que não existem entradas resultantes do filtro, e 1.0 indica que nenhuma entrada foi eliminada. Caso não existam estatísticas disponíveis para o cálculo da selectividade, são usados valores por defeito que vão ajudar no calculo.

26 Cardinalidade representa o número de entradas de uma determinada lista, após serem efectuadas todas as operações. O custo representa uma estimativa das unidades de trabalho necessárias para produzir o resultado final. Por exemplo, no caso de uma B-Tree, o custo vai depender do número de níveis, número de folhas e entradas lidas. O plan generator irá gerar vários planos de execução possíveis e escolher o plano com o menor custo. Inicialmente são gerados sub-planos para cada uma das sub-queries, estes planos são então usados para gerar os planos das queries de mais alto nível. A query original é então a última a ser optimizada. O número de planos possíveis tende a ser proporcional aos números de joins existentes na query, tendendo a crescer exponencialmente. É por isso imperativo tentar controlar esse número. O PostgreSQL tenta obter algoritmos genéticos, e o Oracle usa parâmetros internos que limitam o número de planos gerados. Este parâmetro é calculado automaticamente, conforme o plano de menor custo encontrado até ao momento. Caso o custo desse plano seja elevado, são criados vários planos alternativos para as várias possibilidades de calcular os joins. Caso o custo seja reduzido, então não é necessário calcular alternativas pois gastaria-se recursos a tentar reduzir algo que já é relativamente reduzido. O primeiro join a ser calculado é o mais importante, pois é esse que irá determinar o número de planos gerados. Por esse motivo é usada uma heurística simples que calcula primeiro os joins com menor cardinalidade e a partir daí irá calcular os com maior cardinalidade Estimativa de Custos Oracle É recomendado estimar o espaço de uma tabela antes da sua criação e recomenda-se também que tal estimativa faça parte do planeamento da base de dados. Os tamanhos estimados de tabelas, índices, undo, space e redo log files podem ser

PostgreSQL Performance

PostgreSQL Performance PostgreSQL Performance André Restivo Faculdade de Engenharia da Universidade do Porto February 24, 2012 André Restivo (FEUP) PostgreSQL Performance February 24, 2012 1 / 45 Sumário 1 Armazenamento 2 Índices

Leia mais

UFCD 787. Administração de base de dados. Elsa Marisa S. Almeida

UFCD 787. Administração de base de dados. Elsa Marisa S. Almeida UFCD 787 Administração de base de dados Elsa Marisa S. Almeida 1 Objectivos Replicação de base de dados Gestão de transacções Cópias de segurança Importação e exportação de dados Elsa Marisa S. Almeida

Leia mais

Banco de Dados. PostgreSQL

Banco de Dados. PostgreSQL Banco de Dados PostgreSQL 2010 Banco de Dados PostgreSQL Banco de Dados II Equipe: Equipe Postgre Líder: Alexandre Strauss... 01 Aline Cássia Lima dos Santos... 02 Erik Machado... 09 Fernando Gomes Brandão...

Leia mais

PROGRAMA. Aquisição dos conceitos teóricos mais importantes sobre bases de dados contextualizados à luz de exemplos da sua aplicação no mundo real.

PROGRAMA. Aquisição dos conceitos teóricos mais importantes sobre bases de dados contextualizados à luz de exemplos da sua aplicação no mundo real. PROGRAMA ANO LECTIVO: 2005/2006 CURSO: LICENCIATURA BI-ETÁPICA EM INFORMÁTICA ANO: 2.º DISCIPLINA: BASE DE DADOS DOCENTE RESPONSÁVEL PELA REGÊNCIA: Licenciado Lino Oliveira Objectivos Gerais: Aquisição

Leia mais

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

Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas Processamento e Otimização de Consultas Banco de Dados Motivação Consulta pode ter sua resposta computada por uma variedade de métodos (geralmente) Usuário (programador) sugere uma estratégia para achar

Leia mais

Tarefa Orientada 16 Vistas

Tarefa Orientada 16 Vistas Tarefa Orientada 16 Vistas Objectivos: Vistas só de leitura Vistas de manipulação de dados Uma vista consiste numa instrução de SELECT que é armazenada como um objecto na base de dados. Deste modo, um

Leia mais

Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br

Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br Programação com acesso a BD Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br 1 Modelos de Dados, Esquemas e Instâncias 2 Modelos de Dados, Esquemas e Instâncias Modelo de dados: Conjunto de conceitos

Leia mais

Tarefa Orientada 19 Triggers

Tarefa Orientada 19 Triggers Tarefa Orientada 19 Triggers Objectivos: Criar triggers AFTER Criar triggers INSTEAD OF Exemplos de utilização Os triggers são um tipo especial de procedimento que são invocados, ou activados, de forma

Leia mais

PROCESSAMENTO E OTIMIZAÇÃO DE CONSULTAS EM GERENCIADORES DE BANCO DE DADOS RELACIONAIS

PROCESSAMENTO E OTIMIZAÇÃO DE CONSULTAS EM GERENCIADORES DE BANCO DE DADOS RELACIONAIS PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CENTRO DE CIÊNCIAS EXATAS E DE TECNOLOGIA ESPECIALIZAÇÃO EM ADMINISTRAÇÃO DE BANCO DE DADOS PROCESSAMENTO E OTIMIZAÇÃO DE CONSULTAS EM GERENCIADORES DE BANCO

Leia mais

Consistem num conjunto de apontadores para instâncias especificas de cada relação.

Consistem num conjunto de apontadores para instâncias especificas de cada relação. Mecanismo usado para mais fácil e rapidamente aceder à informação existente numa base de dados. Bases de Dados de elevadas dimensões. Consistem num conjunto de apontadores para instâncias especificas de

Leia mais

Comandos de Manipulação

Comandos de Manipulação SQL - Avançado Inserção de dados; Atualização de dados; Remoção de dados; Projeção; Seleção; Junções; Operadores: aritméticos, de comparação,de agregação e lógicos; Outros comandos relacionados. SQL SQL

Leia mais

Tarefa Orientada 15 Manipulação de dados

Tarefa Orientada 15 Manipulação de dados Tarefa Orientada 15 Manipulação de dados Objectivos: Criação de tabelas teste Comando INSERT INTO Inserção de dados Comando INSERT Actualização de dados Comando UPDATE Eliminação de dados Comando DELETE

Leia mais

Tarefa Orientada 14 Subconsultas

Tarefa Orientada 14 Subconsultas Tarefa Orientada 14 Subconsultas Objectivos: Subconsultas não correlacionadas Operadores ALL, SOME e ANY Subconsultas correlacionadas Operador EXISTS Subconsultas incluídas na cláusula FROM de uma consulta

Leia mais

SQL Structured Query Language

SQL Structured Query Language Janai Maciel SQL Structured Query Language (Banco de Dados) Conceitos de Linguagens de Programação 2013.2 Structured Query Language ( Linguagem de Consulta Estruturada ) Conceito: É a linguagem de pesquisa

Leia mais

COMPETÊNCIAS ESPECÍFICAS Compreender e utilizar a linguagem SQL, na construção e manutenção de uma base de dados.

COMPETÊNCIAS ESPECÍFICAS Compreender e utilizar a linguagem SQL, na construção e manutenção de uma base de dados. PLANIFICAÇÃO DA DISCIPLINA DE SISTEMAS DE INFORMAÇÃO 12.ºH CURSO PROFISSIONAL DE TÉCNICO MULTIMÉDIA ANO LECTIVO 2013/2014 6. LINGUAGENS DE PROGRAMAÇÃO IV Pré-requisitos: - Planificar e estruturar bases

Leia mais

LINGUAGEM SQL. DML - Linguagem de Manipulação de Dados

LINGUAGEM SQL. DML - Linguagem de Manipulação de Dados LINGUAGEM SQL Structured Query Language, ou Linguagem de Consulta Estruturada ou SQL, é uma linguagem de pesquisa declarativa para banco de dados relacional (base de dados relacional). Muitas das características

Leia mais

Hugo Pedro Proença, 2007

Hugo Pedro Proença, 2007 Stored Procedures À medida que a complexidade dos sistemas aumenta, torna-se cada vez mais difícil a tarefa de integrar o SQL com as aplicações cliente. Além disto, é necessário que todas as aplicações

Leia mais

Bases de Dados II 6638: BSc in Information Systems and Technologies. Cap. 1 Arquitectura de Sistemas de Bases de Dados. Module Introduction

Bases de Dados II 6638: BSc in Information Systems and Technologies. Cap. 1 Arquitectura de Sistemas de Bases de Dados. Module Introduction Bases de Dados II 6638: BSc in Information Systems and Technologies Cap. 1 Module Introduction Objectivos O propósito e a origem da arquitectura de base de dados a três níveis. O conteúdo dos níveis externo,

Leia mais

ANÁLISE COMPARATIVA DOS ALGORITMOS DE OTIMIZAÇÃO DE CONSULTAS DO POSTGRESQL

ANÁLISE COMPARATIVA DOS ALGORITMOS DE OTIMIZAÇÃO DE CONSULTAS DO POSTGRESQL 1 ANÁLISE COMPARATIVA DOS ALGORITMOS DE OTIMIZAÇÃO DE CONSULTAS DO POSTGRESQL COMPARATIVE ANALYSIS OF ALGORITHMS OPTIMIZATION POSTGRESQL QUERY Lucas Bianchi Magalhães; Francisco Virginio Maracci; Aglaê

Leia mais

Banco de Dados. Prof. Antonio

Banco de Dados. Prof. Antonio Banco de Dados Prof. Antonio SQL - Structured Query Language O que é SQL? A linguagem SQL (Structure query Language - Linguagem de Consulta Estruturada) é a linguagem padrão ANSI (American National Standards

Leia mais

Administração e Optimização de BDs

Administração e Optimização de BDs Departamento de Engenharia Informática 2010/2011 Administração e Optimização de BDs Mini-Projecto 1 2º semestre A resolução deve ser claramente identificada com o número de grupo e entregue sob a forma

Leia mais

PROGRAMA. Objectivos Gerais :

PROGRAMA. Objectivos Gerais : PROGRAMA ANO LECTIVO : 2005/2006 CURSO : ENGENHARIA MULTIMÉDIA ANO: 2.º DISCIPLINA : SISTEMA DE GESTÃO DE BASE DE DADOS DOCENTE RESPONSÁVEL PELA REGÊNCIA : Licenciado Lino Oliveira Objectivos Gerais :

Leia mais

Administração de Banco de Dados

Administração de Banco de Dados Administração de Banco de Dados Adriano J. Holanda http://holanda.xyz 28/8/2015 Índices Para os testes com os índices criaremos uma tabela chamada tteste com o comando teste=> CREATE TABLE tteste (id int4);

Leia mais

Tarefa Orientada 20 Cursores

Tarefa Orientada 20 Cursores Tarefa Orientada 20 Cursores Objectivos: Declarar cursores Utilizar cursores Utilizar funções do sistema para trabalhar com cursores Actualizar dados através de cursores Um cursor é um objecto da base

Leia mais

Structured Query Language (SQL)

Structured Query Language (SQL) SQL Histórico Structured Query Language (SQL) Foi desenvolvido pela IBM em meados dos anos 70 como uma linguagem de manipulação de dados (DML - Data Manipulation Language) para suas primeiras tentativas

Leia mais

António Rocha Nuno Melo e Castro

António Rocha Nuno Melo e Castro António Rocha Nuno Melo e Castro SQL- Strutured Query Language é a linguagem mais usada nas bases dados relacionais. Originalmente desenvolvida pela IBM Actualmente é um standard, o mais recente é o SQL:2003

Leia mais

Banco de Dados. Marcio de Carvalho Victorino www.dominandoti.eng.br. Exercícios SQL

Banco de Dados. Marcio de Carvalho Victorino www.dominandoti.eng.br. Exercícios SQL Banco de Dados Exercícios SQL 1 TRF (ESAF 2006) 32. Analise as seguintes afirmações relacionadas a Bancos de Dados e à linguagem SQL: I. A cláusula GROUP BY do comando SELECT é utilizada para dividir colunas

Leia mais

SQL (Structured Query Language)

SQL (Structured Query Language) (Structured Query Language) I DDL (Definição de Esquemas Relacionais)... 2 I.2 Domínios... 2 I.3 Criação de Tabelas... 2 I.4 Triggers... 4 II DML Linguagem para manipulação de dados... 5 II.2 Comando SELECT...

Leia mais

Worldwide Online TechDay. 30 - Outubro

Worldwide Online TechDay. 30 - Outubro 30 - Outubro 1 Como funciona um banco de dados Microsoft SQL Server? Fabricio Catae Premier Field Engineer Microsoft Certified Master Twitter: @fcatae WebSite: http://blogs.msdn.com/fcatae/ 2 Nossos Parceiros

Leia mais

Sumário 1 0.1 Introdução 1 0.2 Breve História da Linguagem SQL l 0.3 Características da Linguagem SQL 3 0.4 A Composição deste Livro 3

Sumário 1 0.1 Introdução 1 0.2 Breve História da Linguagem SQL l 0.3 Características da Linguagem SQL 3 0.4 A Composição deste Livro 3 ÍNDICE o -INTRODUÇÃO Sumário 1 0.1 Introdução 1 0.2 Breve História da Linguagem SQL l 0.3 Características da Linguagem SQL 3 0.4 A Composição deste Livro 3 0.5 Sistemas Utilizados 6 0.5.1 Access 2003 (Microsoft)

Leia mais

INSTITUTO SUPERIOR TÉCNICO Administração e Optimização de Bases de Dados

INSTITUTO SUPERIOR TÉCNICO Administração e Optimização de Bases de Dados Número: Nome: 1 -------------------------------------------------------------------------------------------------------------- INSTITUTO SUPERIOR TÉCNICO Administração e Optimização de Bases de Dados Exame

Leia mais

Linguagem de Consulta Estruturada SQL- DML

Linguagem de Consulta Estruturada SQL- DML Linguagem de Consulta Estruturada SQL- DML INTRODUÇÃO A SQL - Structured Query Language, foi desenvolvido pela IBM em meados dos anos 70 como uma linguagem de manipulação de dados (DML - Data Manipulation

Leia mais

Prof. Daniela Barreiro Claro

Prof. Daniela Barreiro Claro Prof. Daniela Barreiro Claro SQL, SQL3 e OQL são linguagens declarativas O SGBD deve processar e otimizar estas consultas antes delas serem efetivamente executadas Uma consulta possui muitas estratégias

Leia mais

Índice. Introdução 31. Tutorial 1: O Microsoft Access como Sistema de Gestão de Bases de Dados Relacionais 35

Índice. Introdução 31. Tutorial 1: O Microsoft Access como Sistema de Gestão de Bases de Dados Relacionais 35 Introdução 31 1. Bases de Dados Relacionais 31 2. Modelação de Bases de Dados 31 3. Modelo de Classes UML 32 4. Linguagem SQL 32 5. Sobre o Microsoft" Access" 32 Tutorial 1: O Microsoft Access como Sistema

Leia mais

SQL (Structured Querie Language) Escola Secundária de Emídio Navarro 2001/2002 Estruturas, Tratamento e Organização de Dados

SQL (Structured Querie Language) Escola Secundária de Emídio Navarro 2001/2002 Estruturas, Tratamento e Organização de Dados SQL (Structured Querie Language) SQL é mais que uma linguagem de interrogação estruturada. Inclui características para a definição da estrutura de dados, para alterar os dados de uma base de dados, e para

Leia mais

Arquitetura de SGBD Relacionais Previsão de Seletividade

Arquitetura de SGBD Relacionais Previsão de Seletividade Arquitetura de SGBD Relacionais Previsão de Seletividade Caetano Traina Jr. Grupo de Bases de Dados e Imagens Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo - São Carlos caetano@icmc.usp.br

Leia mais

Base de dados I. Base de dados II

Base de dados I. Base de dados II Base de dados I O que é? Uma base de dados é um simples repositório de informação, relacionada com um determinado assunto ou finalidade, armazenada em computador em forma de ficheiros Para que serve? Serve

Leia mais

Índice. Introdução às bases de dados. Parte 1 ÍNDICE DE FIGURAS E QUADROS 11 CONVENÇÕES USADAS NESTE MANUAL 15 PREFÁCIO 17

Índice. Introdução às bases de dados. Parte 1 ÍNDICE DE FIGURAS E QUADROS 11 CONVENÇÕES USADAS NESTE MANUAL 15 PREFÁCIO 17 Índice ÍNDICE DE FIGURAS E QUADROS 11 CONVENÇÕES USADAS NESTE MANUAL 15 PREFÁCIO 17 Parte 1 Introdução às bases de dados 1. Introdução 21 1.1. Os sistemas de bases de dados 23 1.1.1. Breve historial 23

Leia mais

Tarefa Orientada 13 Agrupamento e sumário de dados

Tarefa Orientada 13 Agrupamento e sumário de dados Tarefa Orientada 13 Agrupamento e sumário de dados Objectivos: Funções de agregação Agrupamento e sumário de dados Funções de agregação Nesta tarefa orientada iremos formular consultas que sumariam os

Leia mais

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

Introdução à Banco de Dados. Nathalia Sautchuk Patrício Introdução à Banco de Dados Nathalia Sautchuk Patrício Histórico Início da computação: dados guardados em arquivos de texto Problemas nesse modelo: redundância não-controlada de dados aplicações devem

Leia mais

SQL. Curso Prático. Celso Henrique Poderoso de Oliveira. Novatec

SQL. Curso Prático. Celso Henrique Poderoso de Oliveira. Novatec SQL Curso Prático Celso Henrique Poderoso de Oliveira Novatec 1 Introdução Desde o início da utilização dos computadores, sabemos que um sistema é feito para aceitar entrada de dados, realizar processamentos

Leia mais

Desempenho da Base de Dados

Desempenho da Base de Dados Desempenho Parte I Base de Dados 1 Desempenho da Base de Dados O desempenho de uma base de dados pode ser optimizado e afinado, escolhendo os valores adequados dos parâmetros do SGBD usado, o desenho dos

Leia mais

Administração de Banco de Dados

Administração de Banco de Dados Administração de Banco de Dados Professora conteudista: Cida Atum Sumário Administração de Banco de Dados Unidade I 1 INTRODUÇÃO A BANCO DE DADOS...1 1.1 Histórico...1 1.2 Definições...2 1.3 Importância

Leia mais

SQL Linguagem de Definição de Dados. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

SQL Linguagem de Definição de Dados. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri SQL Linguagem de Definição de Dados SQL Structured Query Language Uma das mais importantes linguagens relacionais (se não a mais importante) Exemplos de SGBD que utilizam SQL Oracle Informix Ingress SQL

Leia mais

PostgreSQL o SGBD das 1001 linguagens Diogo Biazus diogob@gmail.com

PostgreSQL o SGBD das 1001 linguagens Diogo Biazus diogob@gmail.com PostgreSQL o SGBD das 1001 linguagens Diogo Biazus diogob@gmail.com Um dos grandes diferenciais do PostgreSQL em relação à maioria dos outros sistemas de bancos de dados é a presença de diversas linguagens

Leia mais

Bases de Dados! 2014/15! http://ssdi.di.fct.unl.pt/bd!! João Leite (jleite@fct.unl.pt)!!!

Bases de Dados! 2014/15! http://ssdi.di.fct.unl.pt/bd!! João Leite (jleite@fct.unl.pt)!!! Bases de Dados 2014/15 http://ssdi.di.fct.unl.pt/bd João Leite (jleite@fct.unl.pt) Capítulo 1: Introdução Função dos Sistemas de Bases de Dados Visão dos dados Modelos de dados Linguagem de Definição de

Leia mais

Histórico de revisões

Histórico de revisões Apostila 3 Histórico de revisões Data Versão Descrição Autor 30/09/2011 1.0 Criação da primeira versão HEngholmJr CONTEÚDO Exclusão de registros Consultas por Dados de Resumo Group by / Having Funções

Leia mais

Os dados no MySQL são armazenado em tabelas. Uma tabela é uma colecção de informação relacionada e consiste em colunas e linhas.

Os dados no MySQL são armazenado em tabelas. Uma tabela é uma colecção de informação relacionada e consiste em colunas e linhas. MySQL 101 Recapitulando Os dados no MySQL são armazenado em tabelas. Uma tabela é uma colecção de informação relacionada e consiste em colunas e linhas. As bases de dados são úteis quando necessitamos

Leia mais

Introdução a Sistemas de Bancos de Dados

Introdução a Sistemas de Bancos de Dados Introdução a Sistemas de Bancos de Dados Prof. UFES - Universidade Federal do Espírito Santo rapchan@inf.ufes.br http://www.inf.ufes.br/~rapchan Roteiro da Apresentação Introdução Características de um

Leia mais

Structured Query Language (SQL) SQL é uma linguagem normalizada (ANSI) para consultas e actualizações de bases de dados relacionais.

Structured Query Language (SQL) SQL é uma linguagem normalizada (ANSI) para consultas e actualizações de bases de dados relacionais. Structured Query Language (SQL) SQL é uma linguagem normalizada (ANSI) para consultas e actualizações de bases de dados relacionais. A instrução SELECT As consultas a uma base de dados relacional fazem-se

Leia mais

Tópicos Avançados de Bases de Dados Instituto Politécnico da Guarda, Escola Superior de Tecnologia e Gestão, 2005/2006

Tópicos Avançados de Bases de Dados Instituto Politécnico da Guarda, Escola Superior de Tecnologia e Gestão, 2005/2006 Programa de TABD 2004/2005 Componente teórica Tópicos Avançados de Bases de Dados Revisão e complemento de bases de dados relacionais Revisão de conceitos básicos Transacções e controlo de concorrência

Leia mais

Dicas para uso de VLDB (very large databases)

Dicas para uso de VLDB (very large databases) Dicas para uso de VLDB (very large databases) Slide 1 Considerações e Marcas Registradas As informações contidas nesta apresentação não foram submetidas à nenhuma revisão formal e é distribuída sem nenhuma

Leia mais

SQL. Structured Query Language

SQL. Structured Query Language SQL Structured Query Language Construções básicas Junção de Tabelas Join O uso da operação JOIN numa cláusula FROM especifica como se deseja que as tabelas sejam vinculadas. Use INNER JOIN para associar

Leia mais

Bases de Dados 2012/2013 Restrições de Integridade em SQL. Helena Galhardas 2012 IST. Bibliografia

Bases de Dados 2012/2013 Restrições de Integridade em SQL. Helena Galhardas 2012 IST. Bibliografia Bases de Dados 2012/2013 Restrições de Integridade em SQL Helena Galhardas Bibliografia Raghu Ramakrishnan, Database Management Systems, Cap. 3 e 5 1 1 Sumário Restrições de Integridade (RIs) em SQL Chave

Leia mais

Tarefa Orientada 12 Junção Externa, Auto-Junção e União

Tarefa Orientada 12 Junção Externa, Auto-Junção e União Tarefa Orientada 12 Junção Externa, Auto-Junção e União Objectivos: Junção externa (Outer JOIN) Junção externa à esquerda (LEFT Outer JOIN) Junção externa à direita (RIGHT Outer JOIN) Junção externa completa

Leia mais

Tuning em queries em Banco de Dados

Tuning em queries em Banco de Dados Tuning em queries em Banco de Dados Alison K. L. Leite 1, Izabella C. A. M. S. Bosco 1, Juliana M. Massoni 1, Patrícia B. Ribeiro 1 1 Curso de Tecnologia em Banco de Dados - Faculdade de Tecnologia de

Leia mais

Bases de Dados Distribuídas

Bases de Dados Distribuídas Introdução Devido ao ambiente de grande competitividade em que as organizações de hoje têm que actuar, estas são forçadas a distribuir-se geograficamente, procurando as condições locais mais favoráveis

Leia mais

Treinamento sobre SQL

Treinamento sobre SQL Treinamento sobre SQL Como Usar o SQL Os dois programas que você mais utilizara no SQL Server são: Enterprise Manager e Query Analyzer. No Enterprise Manager, você pode visualizar e fazer alterações na

Leia mais

PL/SQL Developer. Solução para Ambiente de Desenvolvimento Integrado Oracle

PL/SQL Developer. Solução para Ambiente de Desenvolvimento Integrado Oracle Solução para Ambiente de Desenvolvimento Integrado Oracle PL/SQL Developer é um ambiente de desenvolvimento integrado (IDE) que foi especialmente destinado ao desenvolvimento de programas armazenados em

Leia mais

Um objeto de estatística contém informações de distribuição de valores de uma ou mais colunas de uma tabela ou view indexada

Um objeto de estatística contém informações de distribuição de valores de uma ou mais colunas de uma tabela ou view indexada Desvendando Estatísticas do SQL Server Parte 1 Nesta série de artigos vamos dar um mergulho profundo nas Teorias Probabilísticas (mais conhecido como estatísticas) do SQL Server. Introdução Estatísticas

Leia mais

PRÁTICAS E FERRAMENTAS PARA OTIMIZAÇÃO DO DESEMPENHO DE BANCO DE DADOS SQL SERVER

PRÁTICAS E FERRAMENTAS PARA OTIMIZAÇÃO DO DESEMPENHO DE BANCO DE DADOS SQL SERVER PRÁTICAS E FERRAMENTAS PARA OTIMIZAÇÃO DO DESEMPENHO DE BANCO DE DADOS SQL SERVER Renan Gonçalves JAYME1 Ana Paula Ambrosio ZANELATO2 RESUMO: O presente artigo tem como objetivo descrever algumas práticas

Leia mais

DESENVOLVIMENTO DE SOFTWARE

DESENVOLVIMENTO DE SOFTWARE VARIAÁ VEL Antes de iniciarmos os comandos referentes a Banco de Dados, precisamos de uma breve descrição técnica sobre Variáveis que serão uma constante em programação seja qual for sua forma de leitura.

Leia mais

Bases de Dados. Parte IX: Organização Física dos Dados

Bases de Dados. Parte IX: Organização Física dos Dados Bases de Dados Parte IX Organização Física dos Dados Unidades de Medida da Informação A unidade fundamental é o byte. byte corresponde a 8 bits e cada bit permite representar ou um 0 ou um. Kilobyte (Kbyte

Leia mais

Banco de Dados I 2007. Módulo V: Indexação em Banco de Dados. (Aulas 4) Clodis Boscarioli

Banco de Dados I 2007. Módulo V: Indexação em Banco de Dados. (Aulas 4) Clodis Boscarioli Banco de Dados I 2007 Módulo V: Indexação em Banco de Dados (Aulas 4) Clodis Boscarioli Agenda: Indexação em SQL; Vantagens e Custo dos Índices; Indexação no PostgreSQL; Dicas Práticas. Índice em SQL Sintaxe:

Leia mais

Curso de Iniciação ao Access Basic (I) CONTEÚDOS

Curso de Iniciação ao Access Basic (I) CONTEÚDOS Curso de Iniciação ao Access Basic (I) CONTEÚDOS 1. A Linguagem Access Basic. 2. Módulos e Procedimentos. 3. Usar o Access: 3.1. Criar uma Base de Dados: 3.1.1. Criar uma nova Base de Dados. 3.1.2. Criar

Leia mais

Programação SQL. INTRODUÇÃO II parte

Programação SQL. INTRODUÇÃO II parte Programação SQL INTRODUÇÃO II parte Programação SQL SELECT; INSERT; UPDATE; DELETE. Este conjunto de comandos faz parte da sublinguagem denominada por DML Data Manipulation Language (Linguagem de manipulação

Leia mais

LINGUAGEM SQL PARA CONSULTAS EM MICROSOFT ACCESS

LINGUAGEM SQL PARA CONSULTAS EM MICROSOFT ACCESS LINGUAGEM SQL PARA CSULTAS EM MICROSOFT ACCESS Objetivos: Neste tutorial serão apresentados os principais elementos da linguagem SQL (Structured Query Language). Serão apresentados diversos exemplos práticos

Leia mais

Bases de Dados. Lab 1: Introdução ao ambiente

Bases de Dados. Lab 1: Introdução ao ambiente Departamento de Engenharia Informática 2010/2011 Bases de Dados Lab 1: Introdução ao ambiente 1º semestre O ficheiro bank.sql contém um conjunto de instruções SQL para criar a base de dados de exemplo

Leia mais

Algoritmos para Processamento e Otimização de Consultas. Adriano Douglas Girardello Ana Paula Fredrich Tiago Alexandre Schulz Sippert

Algoritmos para Processamento e Otimização de Consultas. Adriano Douglas Girardello Ana Paula Fredrich Tiago Alexandre Schulz Sippert UNIOESTE Universidade Estadual do Oeste do Paraná CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS Colegiado de Informática Curso de Bacharelado em Informática Algoritmos para Processamento e Otimização de Consultas

Leia mais

UNIVERSIDADE LUTERANA DO BRASIL CURSO DE SISTEMAS DE INFORMAÇÃO CAMPUS SANTA MARIA. PostgreSQL ou MySQL. Quando utilizar um desses SGBDs.

UNIVERSIDADE LUTERANA DO BRASIL CURSO DE SISTEMAS DE INFORMAÇÃO CAMPUS SANTA MARIA. PostgreSQL ou MySQL. Quando utilizar um desses SGBDs. UNIVERSIDADE LUTERANA DO BRASIL CURSO DE SISTEMAS DE INFORMAÇÃO CAMPUS SANTA MARIA PostgreSQL ou MySQL Quando utilizar um desses SGBDs por Anderson Davi da Cunha Naidon, Daniel Flores Bastos, Gleizer Bierhalz

Leia mais

Sumário Agradecimentos... 19 Sobre.o.autor... 20 Prefácio... 21 Capítulo.1..Bem-vindo.ao.MySQL... 22

Sumário Agradecimentos... 19 Sobre.o.autor... 20 Prefácio... 21 Capítulo.1..Bem-vindo.ao.MySQL... 22 Sumário Agradecimentos... 19 Sobre o autor... 20 Prefácio... 21 Capítulo 1 Bem-vindo ao MySQL... 22 1.1 O que é o MySQL?...22 1.1.1 História do MySQL...23 1.1.2 Licença de uso...23 1.2 Utilizações recomendadas...24

Leia mais

DBMS%Performance% Carlos%Soares% (baseado%em%materiais%gen8lmente%cedidos% por%andré%res8vo,%joão%correia%lopes%e%do% livro%ramakrishnan%&%gehrke)% %

DBMS%Performance% Carlos%Soares% (baseado%em%materiais%gen8lmente%cedidos% por%andré%res8vo,%joão%correia%lopes%e%do% livro%ramakrishnan%&%gehrke)% % DBMS%Performance% Carlos%Soares% (baseado%em%materiais%gen8lmente%cedidos% por%andré%res8vo,%joão%correia%lopes%e%do% livro%ramakrishnan%&%gehrke)% % Plano% Contexto% Índices% Carga%da%base%de%dados%%

Leia mais

Linguagem de Consulta Estruturada (SQL)

Linguagem de Consulta Estruturada (SQL) Linguagem de Consulta Estruturada (SQL) Conceitos sobre a versão ANSI da SQL, a sublinguagem de definição de dados (DDL) e a sublinguagem de manipulação de dados (DML) Prof. Flavio Augusto C. Correia 1

Leia mais

Introdução a Informática. Prof.: Roberto Franciscatto

Introdução a Informática. Prof.: Roberto Franciscatto Introdução a Informática Prof.: Roberto Franciscatto 6.1 ARQUIVOS E REGISTROS De um modo geral os dados estão organizados em arquivos. Define-se arquivo como um conjunto de informações referentes aos elementos

Leia mais

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com - Aula 10 - PROCEDIMENTOS ARMAZENADOS - STORED PROCEDURES 1. INTRODUÇÃO Em muitas situações será necessário armazenar procedimentos escritos com a finalidade de se utilizar recursos como loop, estruturas

Leia mais

CURSO DE EXTENSÃO ON-LINE EM Oracle 10g Express Edition XE nível básico. Edital de seleção

CURSO DE EXTENSÃO ON-LINE EM Oracle 10g Express Edition XE nível básico. Edital de seleção CURSO DE EXTENSÃO ON-LINE EM Oracle 10g Express Edition XE nível básico Edital de seleção Nome: Oracle 10g Express Edition XE nível básico Coordenador Geral: Profº Mestre Luis Naito Mendes Bezerra Área

Leia mais

Gabarito - Banco de Dados SQL - 30/07/2013 AULA 01

Gabarito - Banco de Dados SQL - 30/07/2013 AULA 01 Gabarito - Banco de Dados SQL - 30/07/2013 AULA 01 1 1- Bancos de dados compreendem desde agendas telefônicas até sistemas computadorizados. (Sim) 2- Só podemos instalar o SQL Server Express se tivermos

Leia mais

Análise real de dados

Análise real de dados Análise real de dados Para tacógrafos analógicos e digitais www.siemensvdo.com 1 Maximize todas as potencialidades dos tacógrafos digitais Novas obrigações, novas opções de análise Para si e para a sua

Leia mais

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet Faculdade Pitágoras Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL A linguagem SQL é responsável por garantir um bom nível

Leia mais

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL Faculdade Pitágoras Curso Superior de Tecnologia: Banco de Dados Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL A linguagem SQL é responsável por garantir um bom nível de independência do

Leia mais

A versão básica disponibiliza a informação criada no Microsoft Navision em unidades de informação

A versão básica disponibiliza a informação criada no Microsoft Navision em unidades de informação O Business Analytics for Microsoft Business Solutions Navision ajuda-o a ter maior controlo do seu negócio, tomar rapidamente melhores decisões e equipar os seus funcionários para que estes possam contribuir

Leia mais

Structured Query Language (SQL) Ambiente Simplificado de um SGBD

Structured Query Language (SQL) Ambiente Simplificado de um SGBD Structured Query Language (SQL) Ambiente Simplificado de um SGBD 2 1 Características dos SGBDs Natureza auto-contida de um sistema de banco de dados: metadados armazenados num catálogo ou dicionário de

Leia mais

SQL. Histórico BANCO DE DADOS. Conceito. Padrões de SQL (1) Componentes do SQL (1) Padrões de SQL (2) (DDL: CREATE TABLE, CONSTRAINTS)

SQL. Histórico BANCO DE DADOS. Conceito. Padrões de SQL (1) Componentes do SQL (1) Padrões de SQL (2) (DDL: CREATE TABLE, CONSTRAINTS) BANCO DE DADOS SQL (DDL: CREATE TABLE, CONSTRAINTS) Prof. Edson Thizon Histórico Entre 1974 e 1979, o San José Research Laboratory da IBM desenvolveu um SGDB relacional que ficou conhecido como Sistema

Leia mais

Programação SQL. Manipulação de Dados. DML Data Manipulation Language

Programação SQL. Manipulação de Dados. DML Data Manipulation Language Programação SQL Manipulação de Dados DML Data Manipulation Language Manipulação de Dados (DML) Os comandos INSERT, UPDATE, DELETE, são normalmente classificados como pertencendo a uma sublinguagem da linguagem

Leia mais

Tarefa Orientada 10 Obter informação a partir de uma tabela

Tarefa Orientada 10 Obter informação a partir de uma tabela Tarefa Orientada 10 Obter informação a partir de uma tabela Objectivos: Consultar dados de uma tabela Utilizar operadores aritméticos, relacionais, lógicos, de concatenação de cadeias de caracteres, LIKE

Leia mais

P L A N I F I C A Ç Ã O A N U A L

P L A N I F I C A Ç Ã O A N U A L P L A N I F I C A Ç Ã O A N U A L DEPARTAMENTO: MATEMÁTICA E CIÊNCIAS EXPERIMENTAIS ÁREA DISCIPLINAR: 550 - INFORMÁTICA DISCIPLINA: PSI CURSO: Profissional DE: Téc. de Gestão e Programação de Sist. Informáticos

Leia mais

BANCO DE DADOS Parte 4

BANCO DE DADOS Parte 4 BANCO DE DADOS Parte 4 A Linguagem SQL Introdução Desenvolvida pelo depto de pesquisa da IBM na década de 1970 (System R) Linguagem padrão de BD Relacionais; Apresenta várias padrões evolutivos: SQL86,

Leia mais

Banco de Dados 1 Prof. MSc Wagner Siqueira Cavalcante

Banco de Dados 1 Prof. MSc Wagner Siqueira Cavalcante Banco de Dados 1 Programação sucinta do curso:. Conceitos fundamentais de Banco de Dados.. Arquitetura dos Sistemas Gerenciadores de Banco de Dados (SGBD ou DBMS).. Características típicas de um SGBD..

Leia mais

Power Systems. Monitorizar o ambiente de virtualização

Power Systems. Monitorizar o ambiente de virtualização Power Systems Monitorizar o ambiente de virtualização Power Systems Monitorizar o ambiente de virtualização Nota Antes de utilizar as informações contidas nesta publicação, bem como o produto a que se

Leia mais

Programação de Sistemas

Programação de Sistemas Programação de Sistemas Introdução à gestão de memória Programação de Sistemas Gestão de memória : 1/16 Introdução (1) A memória central de um computador é escassa. [1981] IBM PC lançado com 64KB na motherboard,

Leia mais

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Standards ISO e ANSI SQL-86, SQL-89, SQL-92, SQL:1999, SQL:2003

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Standards ISO e ANSI SQL-86, SQL-89, SQL-92, SQL:1999, SQL:2003 Bases de Dados Introdução à linguagem SQL História Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R Renomeada para SQL (Structured Query Language) Standards ISO e ANSI SQL-86, SQL-89,

Leia mais

BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING

BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING http://www.uniriotec.br/~tanaka/tin0036 tanaka@uniriotec.br Bancos de Dados Distribuídos Processamento de Consultas Ambiente com SGBD Distribuído Processamento

Leia mais

Junções e Índices em Tabelas

Junções e Índices em Tabelas Junções e Índices em Tabelas Prof. Fernanda Baião fernanda.baiao@uniriotec.com.br SGBD Considerados MySQL (http://www.mysql.org) SGBD gratuito e simples, sem muitos recursos avançados Fácil de instalar

Leia mais

A compreensão do mecanismo de transações é essencial, sempre que a

A compreensão do mecanismo de transações é essencial, sempre que a Transações A compreensão do mecanismo de transações é essencial, sempre que a base de dados d servir várias clientes simultaneamente. Em SQL é possível definir explicitamente os limites de uma transação.

Leia mais

Novidades Oracle 11g. Rio Grande Energia - RGE

Novidades Oracle 11g. Rio Grande Energia - RGE Novidades Oracle 11g Daniel Güths Rio Grande Energia - RGE 1 Agenda Oracle Database 11g new features SQL e PL/SQL new features Performance e gerenciamento de recursos Gerenciamento de mudanças Gerenciamento

Leia mais

LINGUAGEM SQL PARA CONSULTAS EM MICROSOFT ACCESS

LINGUAGEM SQL PARA CONSULTAS EM MICROSOFT ACCESS LINGUAGEM SQL PARA CSULTAS EM MICROSOFT ACCESS Objetivos: Neste tutorial serão apresentados os principais elementos da linguagem SQL (Structured Query Language). Serão apresentados diversos exemplos práticos

Leia mais

MANUAL DE INTRODUÇÃO AO ALFRESCO 3.0

MANUAL DE INTRODUÇÃO AO ALFRESCO 3.0 MANUAL DE INTRODUÇÃO AO ALFRESCO 3.0 Alfresco é uma marca registada da Alfresco Software Inc. 1 / 42 Índice de conteúdos Alfresco Visão geral...4 O que é e o que permite...4 Página Inicial do Alfresco...5

Leia mais

Bases de Dados 2005/2006. Aula 5

Bases de Dados 2005/2006. Aula 5 Bases de Dados 2005/2006 Aula 5 Sumário -1. (T.P.C.) Indique diferenças entre uma tabela e uma relação. 0. A base de dados Projecto 1. SQL Join (variantes) a. Cross Join b. Equi-Join c. Natural Join d.

Leia mais

BACO BAse de Co-Ocorrências

BACO BAse de Co-Ocorrências BACO? BACO BAse de Co-Ocorrências Luís Sarmento O BACO é uma base de dados que guarda informação gerada a partir um processamento efectuado a um ou vários corpora. O objectivo: Permitir pesquisar rapidamente

Leia mais

Álgebra Relacional. Conjunto de operações que usa uma ou duas relações como entrada e gera uma relação de saída. Operações básicas:

Álgebra Relacional. Conjunto de operações que usa uma ou duas relações como entrada e gera uma relação de saída. Operações básicas: Álgebra Relacional Conjunto de operações que usa uma ou duas relações como entrada e gera uma relação de saída operação (REL 1 ) REL 2 operação (REL 1,REL 2 ) REL 3 Operações básicas: seleção projeção

Leia mais