Desempenho das aplicações

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

Download "Desempenho das aplicações"

Transcrição

1 Desempenho Parte II Aplicações 1 Enquanto no módulo 3 examinámos o desempenho na perspectiva do desenho e administração da base de dados, neste módulo iremos examiná-lo na perspectiva das aplicações, isto é, das preocupações que devemos ter quando desenvolvemos aplicações que acedem a uma base de dados. Naturalmente, haverá alguma sobreposição entre as duas perspectivas Alguns dos aspectos a ter em conta no desenvolvimento destas aplicações são: Tipo de SQL a utilizar (estático, dinâmico, embebido, forma de escrita das instruções, etc.) Linguagem de programação, API de acesso a dados, Codificação do acesso a dados. A infra-estrutura permite os níveis adequados de desempenho? (por exemplo, ADO.NET base versus Entity Framewrk, operação conectada versus operação desconectada ) 2 1

2 Alguns dos aspectos a ter em conta no desenvolvimento destas aplicações são (continuação): Projecto o e processamento e o das transacções (transacções locais versus transacções distribuídas, controlo de concorrência pessimista versus controlo de concorrência optimista, uso dos níveis adequados de isolamento, duração das transacções) Processamento por lotes (estão os processamentos por lotes adequados à natureza sequencial dos processadores de batch?) Processamento P t interactivo ti (Estão as aplicações desenhadas d de forma a minimizarem as trocas de informação entre as aplicações cliente e o SGBD?) 3 Os SGBS actuais procedem a optimizações dos planos para execução das instruções (relational optimization) que libertam os programadores de boa parte da preocupação com a forma como as instruções são escritas. Existem vantagens para os programadores, mas também no que se refere à facilidade de evolução, dado que se torna menos necessária a alteração do código (SQL) quando há alterações no ambiente da base de dados Como vimos, uma das vantagens do modelo relacional é o desacoplamento entre a organização lógica e o desempenho na execução de interrogações (physical data independence) Os optimizadores de código têm em conta estimativas dos custos associados à operações de I/O e aos tempos de CPU para escolherem entre as várias alternativas de planos para execução de uma interrogação (um termo comum é filter factor, que designa a redução relativa nos custos de I/O) A manutenção de estatísticas actualizadas é um factor chave para os geradores de planos. 4 2

3 Valores que costuma ser usados nas estatísticas são: Número de linhas numa tabela ou num índice Número de valores únicos numa coluna ou conjunto de colunas (inverso da densidade no SQL Server) Valores mais frequentes numa coluna (histograma no Sql Server) Densidade das chaves do índice (percentagem média de valores repetidos notar que a definição é diferente da densidade em SQL Server. Se ds for a densidade como definida em SQL Server, a densidade como nesta definição é dada por (1/sS)/#total de linhas da tabela). A densidade multiplicada pelo total de linhas na tabela dá o nº médio de linhas esperado para cada valor do índice. Coeficiente de clustering para organizações clustered que não mantenham sempre o clustering Correlação (ou dependência estatística) entre colunas (estatisticas multi-coluna no Sql Server) 5 Valores que costuma ser usados nas estatísticas são (cont.): Estado da estrutura dos índices, tabelas e tablespaces (por exemplo, fragmentação) Espaço ocupado por um objecto (objectos pequenos não necessitam tanto do auxílio de outros instrumentos, como índices, que, aliás, se podem tornar prejudiciais) Durante a fase inicial da execução de uma interrogação é feita a sua análise para se determinarem factores como: Quais as tabelas envolvidas Se foram referidas vistas (neste caso tem de se decidir se se materializa a vista ou se funde a sua definição com o resto da instrução) 6 3

4 Durante a fase inicial da execução de uma interrogação é feita a sua análise para se determinarem factores como (cont.): Se se usam JOINs e sub-queries Que índices podem ser usados Quantos predicados existem nas cláusulas WHERE Que chamadas a funções se tem de fazer Que usos se faz dos operadores AND e OR Como C o SGBD processa cada elemento da instrução Qual o espaço disponível em cache para as tabelas envolvidas (quando o SGBD permite fazer atribuição de espaço tabela a tabela) Qual a memória disponível para operações como a ordenação 7 Os geradores de planos de execução mais comuns distribuem-se por duas categorias: Baseados em Regras (rule-based) nos quais o optimizador funcina num conjunto de padrões sintáticos e estratégia de execução a aplicar. Podem implicar diferenças de desempenho em função da forma como a interrogação é escrita Baseados em custos (cost-based) nos quais são analisadas várias alternativas e escolhida a que apresenta o melhor custo (é a mais comum e a que é usada pelo SQL SERVER). Possui a vantagem de a qualidade do plano não ficar tão dependente da forma como a interrogação é escrita 8 4

5 É comum os SGBDs usarem uma técnica designada query rewriting, a qual consiste em encontrar-se uma interrogação alternativa que produza o mesmo resultado. As vantagens fundamentais são tentar encontrar um plano melhor e uniformizar o tratamento de interrogações. Por exemplo, o SQL Server usa pouco menos de 300 regras que lhe permitem reescrever interrogações, como, por exemplo: para aplicar a simetria e associatividade dos JOINS Exemplo: A JOIN B -> B JOIN A Para substituir a execução de subqueries, unions, inttersects e excepts por JOINS Mais gerais para poder exploras índices alternativos (página seguinte) 9 A interrogação SELECT d.deptname, e.nome, e.numero FROM Empregado e, Departamento d WHERE e.deptnum = d.deptnum AND d.deptnum = 808 Pode ser avaliada como se tivesse sido escrita assim: SELECT d.deptname, e.nome, e.numero FROM Empregado e, Departamento d WHERE e.deptnum = d.deptnum AND e.deptnum =

6 A interrogação SELECT d.deptname, e.nome, e.numero FROM Empregado e, Departamento d WHERE e.deptnum = d.deptnum AND e.deptnum = 808 Pode ser avaliada como se tivesse sido escrita assim: SELECT d.deptname, e.nome, e.numero FROM Empregado e, Departamento d WHERE e.deptnum = d.deptnum AND d.deptnum = 808 O que pode ter vantagem se existir um índice sobre Departamento.DeptNum e não sobre Empregado.DeptNum, ou se as dimensões a tabela departamentos for bastante menos do que a de empregados 11 Um dos aspectos essenciais a ter em conta pelo optimizador é as formas como os JOINs podem ser executados e, para algumas delas, a ordem porque são executados. São comuns as seguintes formas de execução de JOINs: Nested-Loop Join Escolhe-se uma tabela (outer table) para se fazer nela apenas um percurso e outra (inner table) para ser percorrida uma vez por cada linha da outer table (qualifying row) à procura de correspondência Vantagem quando a primeira tabela é pequena e existe um índice sobre as colunas envolvidas na segunda tabela 12 6

7 Exemplo: T1 A B T2 C D T1 INNER JOIN T2 ON t1.a = t2.c (nested loop) T1 (outer table) tempo T2 (inner table) Merge-scan Join As duas tabelas têm de estar ordenadas da mesma forma pelas colunas de pesquisa. Pelo que ordem é indiferente, por se tirar partido da ordenação A grande vantagem é fazer-se um único percurso por ambas as tabelas, mas se for necessário ordená-las a vantagem pode dissipar-se. Tipicamente tiram partido de índices, sobretudo de clustered indexes. 14 7

8 Exemplo: T1 A B T2 C D T1 INNER JOIN T2 ON t1.a = t2.c (merge-scan) T1 (outer table) T2 (inner table) tempo 15 Hash-match Join Escolhe a tabela de menor dimensão para outer table. Num primeiro passo, esta vai ser percorrida uma vez para se criar uma tabela de hash com as linhas encontradas. Num segundo passo, percorre-se a tabela maior (inner table) uma única vez verificando, por cada linha, se ele existe na tabela de hash criada no primeiro passo A grande vantagem é fazer-se um único percurso por ambas as tabelas, mas tem como desvantagem o espaço necessário para a tabela de hash, sobretudo se, por limitações de espaço em memória principal, ela tiver de ser colocada em disco. Outra desvantagem é que só funciona para testes de igualdade 16 8

9 Exemplo: T1 A T1 INNER JOIN T2 ON t1.a = t2.c (hash-match) B T2 Função de hash (v mod 2) C D 0 1 Hash table A B Passo 1 Passo 2: Testar com hash(1) = 1 (match) Testar com hash(4) = 0 (no match) Testar com hash(2) = 0 (match) 17 Exemplo para o SQL Server 2008 select p.productid, p.color from Production.Product p JOIN Sales.SalesOrderDetail o ON p.productid = o.productid AND P.ProductID ProductID = 776 Outer table Inner table 18 9

10 Exemplo para o SQL Server 2008 select p.productid, p.color from Production.Product p JOIN Sales.SalesOrderDetail o ON p.productid = o.productid Outer table Inner table 19 Exemplo para o SQL Server 2008 select p.productid, p.color from Production.Product p JOIN Sales.SalesOrderDetail o ON o.unitprice = p.listprice Outer table Inner table 20 10

11 Escolha dos caminhos de Acesso (Access Path choices) Uma tabela (ou partição) pode ser percorrida sequencialmente ou usando índices. Um acesso sequencial sobre um heap designa-se table scan; se for realizado sobre uma partição do heap, designa-se partition scan. Quando o acesso é feito usando um índice pode ser feito com as seguintes operações: Direct Index Lookup a chave é usada para percorrer o índice e localizar o registo (No Sql Server 2008 corresponde aos operadores Clustered Index Seek e Nonclçusterd Index Seek) Nonmatching index scan (ou relative positioning) a chave não é usada e o índice (numa árvore B+, apenas as folhas) é percorrido sequencialmente (No Sql Server 2008 corresponde aos operadores Clkustered Index Scan e Noncluster Index Scan) 21 Matching Index scan (ou absolute positioning) a chave é usada para localizar a zona das folhas onde se encontram os registos e depois é realizado um acesso sequencial nestas para localizar os registos (No Sql Server 2008 também corresponde aos operadores Clustered Index Seek e Nonclusterd Index Seek). Tipicamente usados quando são usadas nos predicados apenas prefixos das chaves, mas também quando os índices admitem duplicados Alguma bibliografia refere uma técnica designada index screening que corresponde a realizar um matching index scan (Index Seek) usando um prefixo da chave do índice e depois os registos que possuem esse valor no prefixo são percorridos sequencialmente (non matching index scan) e sobre eles testados outros predicados. Exemplo: Select * from T Where A = 1 AND B = 2 AND D = 3 e índice sobre (A,B,D) de T. É feito um matching index scan usando A e B e depois non matching index scan sobre os registos que satisfazem A=1 AND B=2 para determinar quais satisfazem D =

12 Outro aspecto importante que diferencia os percursos usando índices clustered dos que usam índices nonclustered é que os últimos obrigam a operações de bookmark lookup para se acederam aos dados, enquanto os primeiros não. No Sql Server pode haver dois tipos de bookmark lookup: RID Lookup quando o nonclustered index é aplicado sobre um heap e Key Lookup quando o nonclusterd index é aplicado sobre um clustered index. Este aspecto deve ser tido em conta para as decisões quanto ao percurso a utilizar. Covering indexes podem eliminar a necessidade de operações bookmark lookup. 23 Exemplo Sql Server: select * from t1 where x < 20 É implementado assim para permitir usar read-ahead? (with prefetch) (ver contraste com slide nº 52, relativo a UPDATE [dbo].[address] SET [City] = 'Munro, [ModifiedDate] = GETDATE() WHERE [City] = 'Monroe' ) 24 12

13 Exemplo Sql Server: create table t(x int primary key, y int, z int) create nonclustered index iy on t(y) select zyfrom z,y t with(index(iy)) where y = 20 É implementado assim para permitir usar read-ahead? (with prefetch) (Em versões anteriores do SQL Server era indicado com clustered index seek com a marca LOOKUP) 25 Frequentemente, os SGBDs têm necessidade de usar mais do que um índice para satisfazer uma interrogação. O padrão dos predicados WHERE é determinante para a decisão, dependendo se usam o operador AND ou o operador OR Exemplo: Select * from T Where A = 1 AND B = 2 Neste caso é mais adequado um índice único sobre as colunas (A,B), mas o SGBD pode usar dois índices, um sobre A e outro sobre B e combinar os resultados (por exemplo, com merge-scan join) Select * from T Where A = 1 OR B = 2 Neste caso a existência de um índice único sobre (A,B) não é tão adequada, pois ele seria usado apenas com o prefixo A. Seria mais adequada a existência de dois índices, um sobre (A) e outro sobre (B). O resultado seria a junção dos percursos usando os dois índices 26 13

14 Exemplo para o SQL Server 2008 Tabela T com índices um índice sobre a coluna x e outro sobre a coluna y select x,y from t1 where x = Exemplo para o SQL Server 2008 Tabela T com índices um índice sobre a coluna x e outro sobre a coluna y select x,y from t1 where y=

15 Exemplo para o SQL Server 2008 Tabela T com índices um índice sobre a coluna x e outro sobre a coluna y select x,y from t1 where x = 20 And y= Exemplo para o SQL Server 2008 Tabela T com índices um índice sobre a coluna x e outro sobre a coluna y select x,y from t1 with (index(ix,iy)) i where x = 20 AND y =

16 31 Exemplo para o SQL Server 2008 Tabela T com índices um índice sobre a coluna x e outro sobre a coluna y select x,y from t1 with (index(ix,iy)) i where x = 20 or y =

17 Nos predicados das cláusulas WHERE devemos ter em conta os seguintes aspectos: 1. Usar interrogações que maximizem a utilização os índices existentes 2. Para um índice sobre as colunas (A,B,C), a eficácia do índice decresce com os prefixos usados pela ordem seguinte: (A,B,C), (A,B), (A). 3. Num índice sobre as colunas (A,B,C), A deverá ser a coluna mais selectiva, B a intermédia e C a menos selectiva. Seguindo este princípio, nas interrogações, devemos colocar primeiro os predicados que usem o operador = sobre as colunas mais selectivas. Deste forma, em SGBDs cujo optimizador não seja muito bom, estamos a potenciar a utilização e planos de execução melhores. (Selectividade de um índice = nº valores distintos na chave / nº de registos na tabela. Selectividade de uma coluna = nº valores distintos na coluna / nº de registos na tabela) 4. Numa interrogação cujos predicados envolvam as colunas de um índice sobre (A,B,C), a eficácia do índice é tanto maior quanto maior o número de predicados que usam o operador = sobre as colunas A,B e C, por esta ordem. 33 Exemplos: seja a tabela t com índice ix sobre as colunas (A,B,C) Select * from T Where B =1 Não se pode usar Direct Index Lookup sobre ix (apenas non matching index scan) Select * from T Where A = 1 and C =3 Só se pode usar matching index scan sobre ix (prefixo A) Select * from T Where A =1 and B =3 Só se pode usar matching index scan sobre ix (prefixo A,B) Select * from T Where A =1 and B =3 And C = 5 Pode usar-se Direct Index Lookup sobre ix Sl Select t* from T Where A>1 and B =3 Só se pode usar matching thi index scan sobre ix (prefixo A) Select * from T Where A <> 1 and B =3 Só se pode usar index scan sobre ix, ou então dois matching index scan, um com pesquisa sobre A > 1 e outro com pesquisa sobre A <

18 2222; ;17 Folhas 1111; ; ; ; ; ; ; Select * from Aluno where Numero = 2222 And Nota = ; ;17 Folhas 1111; ; ; ; ; ; ; Select * from Aluno where Numero >= 2222 And Nota =

19 2222; ;17 Folhas 1111; ; ; ; ; ; ; Select * from Aluno where Numero <> 2222 And Nota = Ou: Numero < 2222 (end) Numero > 2222 (start) 2222; ;17 Folhas 1111; ; ; ; ; ; ; Select * from Aluno where Numero <> 2222 And Nota =

20 2222; ;17 Folhas 1111; ; ; ; ; ; ; Select * from Aluno where Nota = Sempre que possível, limitar uso de DISTINCT, ORDER BY, GROUP BY a grupos de colunas sobre as quais existam índices. Nos casos de ORDER BY e GROUP BY, agrupar pela ordem da definição do índice. Desta forma, evitam-se ordenações durante a execução das interrogações Folhas 2222; ; ; ; ; ; ; ; ; Select Numero, Nota from Aluno Group by Numero, Nota Para índices unique e agrupamento por todas as colunas, cada entrada nas folhas é um grupo; para índices nonunique ou uso de um prefixo é necessário agragar grupos repetidos (depois de calcular as funções de agregação sobre as ocorrências do mesmo grupo, apenas removem-se as repetições) 40 20

21 2222; ;17 Folhas 1111; ; ; ; ; ; ; Select Numero, Avg(Nota) from Aluno Group by Numero 41 Select Numero, Nota from Aluno Group by Numero, Nota Plano sem índice: Plano com índice clustered sobre (Numero,Nota): Mas, para Select Nota from Aluno Group by Nota, o índice não dispensa a ordenação 42 21

22 Também com UNION (sem ALL), o plano óptimo consegue-se quando existem índices clustered que cubram as colunas de saída em ambas as tabelas Exemplo: sejam Aluno e aluno1 duas tabelas com o mesmo esquema e com duas colunas Numero e Nome e a query select * from Aluno union select * from Aluno1 Plano com índice sobre (Numero, Nota) em ambas as tabelas: Plano sem índice sobre (Numero, Nota) em alguma as tabelas: 43 Outros operadores em Sql Server select * from Production.Product p where not exists (select * from Sales.SalesOrderDetail SalesOrderDetail o where p.productid = o.productid) Também existe a versão RIGHT 44 22

23 Outros operadores em Sql Server select * from Production.Product p1 where exists (select * from Production.Product p2 where p1.listprice < p1.listprice) Também existe a versão RIGHT 45 Outros operadores em Sql Server select ProductId from Production.Product EXCEPT SELECT ProductId from Sales.SalesOrderDetailSalesOrderDetail 46 23

24 Outros operadores em Sql Server select ProductId from Production.Product INTERSECT SELECT ProductId from Sales.SalesOrderDetailSalesOrderDetail 47 Outros operadores em Sql Server select ProductId from Production.Product UNION ALL SELECT ProductId from Sales.SalesOrderDetail Comparar com: select ProductId from Production.Product UNION SELECT ProductId from Sales.SalesOrderDetail 48 24

25 Outros operadores em Sql Server select p.productid, p.color from Production.Product p INNER JOIN Sales.SalesOrderDetail o ON o.unitprice > p.listprice Cria numa tabela temporária (tempdb) uma linha sem dados por cada linha de input (tempdb), apenas para contagens. A criação é feita de forma lazy. Devolve as linhas sem dados à medida que o seu método GetNext() vai sendo chamado Cria numa tabela temporária (tempdb) um nonclustered index com os dados de input (criação de forma eager). A vantagem é reutilizar os dados (sem necessitar de aceder novamente ao input) nos casos de rewind sem rebind (ver propriedades number of rewinds e number of rebinds) 49 Outros operadores em Sql Server select distinct ProductID from Sales.SalesOrderDetail Comparar com: select distinct ListPrice from Production.Product 50 25

26 Outros operadores em Sql Server SELECT * INTO [dbo].[address] FROM [Person].[Address] INSERT INTO [dbo].[address] ([AddressLine1],[AddressLine2],[City], [SttP [StateProvinceID],[PostalCode],[rowguid],[ModifiedDate]) ID][P tlcd][ id][mdifiddt]) VALUES ('1313 Mockingbird Lane,'Basement,'Springfield,'79,'02134', NEWID(), GETDATE()) Insere as cada linha do seu input na tabela que lhe é indicada como argumento Insere as restantes colunas em cada linha Insere a coluna Identrity (AddressId) em cada linha Insere linhas vazias na query 51 Outros operadores em Sql Server SELECT * INTO [dbo].[address] FROM [Person].[Address] INSERT INTO [Person].[Address] ([AddressLine1],[AddressLine2],[City], [SttP [StateProvinceID],[PostalCode],[rowguid],[ModifiedDate]) ID][P tlcd][ id][mdifiddt]) VALUES ('1313 Mockingbird Lane,'Basement,'Springfield,'79,'02134', NEWID(), GETDATE()) Valida as linhas do input (coluna de probe Expr1015). As que tiverem valor diferente de NULL (matching) passam para o seu output; as restantes geram execepções. Na verdade o operador funciona exactamente ao contrário relativamente à expressão que avalia que, neste caso é CASE WHEN [Expr1015] IS NULL THEN (0) ELSE NULL END Insere as cada linha do seu input no clustered index que lhe é indicada como argumento Produz as linhas cujo stateprovinceid existem em StateProvince (chave estrangeira). Neste caso produz como coluna em output list [Expr1015] que se tiver valor diferente de null correspondem a matches e se tiverem valor null, correpondem a ausência de matching 52 26

27 Outros operadores em Sql Server SELECT EmployeeID FROM HumanResources.Employee WHERE ContactID = (SELECT ContactID FROM Person.Contact) Do agregado com Expr1007= 1 CASE WHEN [Expr1007]>(1) THEN (0) ELSE NULL END Agrega Contact por ContactId. Em Expr1007 produz COUNT(*) e em Expr1008 o valor agregado (neste caso ContactID) 53 Outros operadores em Sql Server UPDATE [dbo].[address] SET [City] = 'Munro, [ModifiedDate] = GETDATE() WHERE [City] ='Monroe' Actualiza as linhas referenciadas por Bmk1000 com os valores Expr1004 e Expr1005 nas colunas. A propriedade Object diz qual é a tabela a ser alterada e Predicate diz quais são as colunas a serem alteradas, bem como validações do tipo Not Null Calcula em Expr1004 e Expr1005 expressões Munro e GetDate(). Produz Expr1004, Expr1005 e Bmk1000 Produz em Bmk1000 o RID de cada linha a ser alterada 54 27

28 Outros operadores em Sql Server UPDATE HumanResources.Employee SET Gender = 'X' WHERE EmployeeID = 1; De clusterd index seek [AdventureWorks].[HumanResources].[Employee].Gender testando se é M ou F CASE WHEN upper([adventureworks].[humanresources].[employee].[g ender])<>n'f' AND upper([adventureworks].[humanresources].[employee].[g ender])<>n'm' THEN (0) ELSE NULL END Produz [AdventureWorks].[HumanResources].[Employee].Gender 55 Outros operadores em Sql Server create table dbo.teste (i int primary key, j int) -- Alteração da chave UPDATE [dbo].[teste] [teste] SET i = 1 WHERE i =

29 Outros operadores em Sql Server create table dbo.teste(i int) create clustered index ix on dbo.teste(i) insert into dbo.teste values(1) insert into dbo.teste values(4) insert into dbo.teste values(8) insert into dbo.teste values(10) Fase 1 Fase 2 Para evitar o problema Halloween. Serviria qualquer operador bloqueante (por exemplo, sort) 57 Outros operadores em Sql Server -- remoção pela chave DELETE FROM [dbo].[teste] WHERE i =

30 Outros operadores em Sql Server -- remoção sem ser pela chave DELETE FROM [dbo].[teste] WHERE j = 3 59 Outros operadores em Sql Server DELETE FROM [Person].[Address] WHERE [AddressID] = 52; CASE WHEN NOT [Expr1021] IS NULL THEN (0) ELSE CASE WHEN NOT [Expr1022] IS NULL THEN (1)ELSECASEWHENNOT NOT [Expr1023] IS NULL THEN (2) ELSE CASE WHEN NOT [Expr1024] IS NULL THEN (3) ELSE CASE WHEN NOT [Expr1025] IS NULL THEN (4) ELSE NULL END END END END END 60 30

31 Paralelismo: Foi visto no módulo Desempenho parte 1, que se pode usar paralelismo ao nível do CPU e de I/O, mas alguns sistemas quando funcionam com topologias de bases de dados distribuídas também o pedem fazer ao nível dois SGBS (paralelismo ao nível de sistema) Cuidado com excessivo nível de paralelismo ao nível de CPU, pois, a determinada altura, o esforço de preparação e consolidação das tarefas paralelas pode sobrepor-se aos ganhos (especialmente quando ao nível de I/O e de memória não conseguimos acompanhar o paralelismo). Também o paralelismo ao nível do SGBD tem problemas deste género, com a agravante de que pode limitar a autonomia local dos processamentos) 61 Muitos SGBDs permitem que o programador possua alguma interferência na forma como os access paths são formados. Por exemplo, no Sql Server, podemos usar SET FORCEPLAN ON (o optimizador mantém a ordem nos joins e usa, sempre que possível, nested loops), ou usar a hint OPTION (use plan). Mas, em alguns SGBDs, o uso de hints permite interferências a vários outros níveis da execução dos planos. No Sql Server existem vários tipos de hints: Query hints Select... OPTION (<query_hint> [,...n ]) Join hints Select * from t1 INNER <join hint> JOIN t1 on... Join hints Select * from t1 FULL OUTER <join hint> JOIN t1 on... Table hints Select * FROM view1 WITH(< table_hint > [ [, ]...n ])

32 <query_hint > ::= { { HASH ORDER } GROUP { CONCAT HASH MERGE } UNION { LOOP MERGE HASH } JOIN FASTnumber number_rowsrows FORCE ORDER MAXDOP number_of_processors OPTIMIZE FOR { UNKNOWN = literal_constant } [,...n ] ) OPTIMIZE FOR UNKNOWN PARAMETERIZATION { SIMPLE FORCED } RECOMPILE ROBUST PLAN KEEP PLAN KEEPFIXED PLAN EXPAND VIEWS MAXRECURSION number USE PLAN N'xml_plan' TABLE HINT ( exposed_object_name [, <table_hint> [ [, ]...n ] ] ) 63 Query hints Exemplos select p.productid, p.color from Production.Product p JOIN Sales.SalesOrderDetail o ON o.unitprice = p.listprice JOINSl Sales.SalesOrderHeader Sl Od d honhsl h.salesorderid Od = o.salesorderdetailid OPTION(LOOP JOIN) SELECT [City], COUNT([City]) AS CityCount FROM [Person].[Address] GROUP BY [City] OPTION(ORDER GROUP) SELECT [City], COUNT([City]) AS CityCount FROM [Person].[Address] GROUP BY [City] OPTION(Use Plan N...) 64 32

33 Join hints <join_hint> ::= { LOOP HASH MERGE REMOTE } Exemplos: select p.productid, p.color from Production.Product p JOIN Sales.SalesOrderDetail o ON o.unitprice = p.listprice INNER LOOP JOIN Sales.SalesOrderHeader h ON h.salesorderid = o.salesorderdetailid select p.productid, p.color from Production.Product p FULL OUTER LOOP JOIN Sales.SalesOrderDetail o ON o.unitprice = p.listprice 65 <table_hint> ::= [ NOEXPAND ] { INDEX ( index_value [,...n ] ) INDEX = ( index_value ) FASTFIRSTROW FORCESEEK HOLDLOCK NOLOCK NOWAIT PAGLOCK READCOMMITTED READCOMMITTEDLOCK READPAST READUNCOMMITTED REPEATABLEREAD ROWLOCK SERIALIZABLE TABLOCK TABLOCKX UPDLOCK XLOCK } 66 33

34 Table Hints Exemplos: Select * from Sales.SalesOrderDetail WITH(FORCESEEK) Where ProductID = 707 select x,y from t1 with (index(ix,iy), paglock ) where x = 20 OR y = Plan Guides: O Sql Server possui a possibilidade de se definirem plan guides que se podem aplicar a interrogações que possuam determinado padrão. Existem três variantes (object, Sql e Template). São especialmente úteis quando se pretende afinar o desempenho de código que não é produzido por nós (por exemplo, o que é submetido por aplicações construídas por terceiros) Exemplo de Plan Guide (variante SQL): EXEC t= N'SELECT TOP 1 * FROM Sales.SalesOrderHeader ORDER BY OrderDate = = = = N'OPTION (MAXDOP 1)' 68 34

35 Plan Guides (cont.): A plan guide definida anteriormente aplicar-se-á a todos os statements SQL individuias (que não estejam ncluidos numa função, stored procedure ou gatilho) do tipo: SELECT TOP 1 * FROM Sales.SalesOrderHeader ORDER BY OrderDate DESC; Pode activar-se ou remover plan guides com o procedimento armazenado sp_control_plan_guide Exemplo: EXEC sp_control_plan_guide N'DROP', N'Guide2' 69 Algumas boas práticas: Ter em conta a ordem como se escrevem as interrogações, colocando os predicados WHERE mais restritivos antes dos menos restritivos (CUIDADO com a ordem em que o analisador lê as interrogações). Não é importante no SQL Server, dado que este não usa optimização baseada em regras Especificar o número mínimo de colunas necessário para serem devolvidas pela interrogação Evitar a utilização de produtos cartesianos Evitar a utilização do operador lógico OR. Substitui-lo, sempre que possível, por IN Evitar o uso do operador LIKE (em select * from Alunos WHERE CURSO LIKE %IC não permite usar índices porque a parte mais à esquerda da coluna não está definida) 70 35

36 Algumas boas práticas (cont.): Conhecer bem o SGBD para saber como escrever as interrogações de forma a que gerem a melhor optimização Conhecer a base de dados (incluindo índices, partições, etc.) para saber como escrever interrogações que tirem partido da estrutura física para melhorar o desempenho. Manter as transacções o mais curtas possível Considerar o possibilidade de uso de procedimentos armazenados Usar as facilidades do SGBD para detectar ameaças ao desempenho Verificar quais os planos que contêm operadores do tipo SORT, HASH, SPOOL e tentar usar hints ou substituir as interrogações para ver se consegue planos melhores 71 Algumas boas práticas (cont.): No Sql Server, nos operadoras Nonclustered Index Spool, Remote Query, Row Count Spool, Sort, Table Spool, Table-Valued Function, verificar o número de REBIND e REWIND. Valores altos (sobretudo com REBIND) são indicadores de dificuldade de desempenho. Manter um relacionamento próximo com o gestor/administrador da base de dados para poder analisar em conjunto com ele possíveis estratégias para melhorar o desempenho (por exemplo, a criação de novos índices, a reorganização de algumas estruturas, etc.)

37 Bibliografia Database Administration the Complete Guide to Practices and Procedures (cap. 12), Craig S. Mullins, Addison Wesley, 2002 Sql Server Books OnLine Inside the SQL Server Query Optimizer (cap. 2 e 7), Benjamin Nevarez, SQL Server Execution Plans, Grant Fritchey com/articles/books/65831/ 73 37

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

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

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

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

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

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

Ex.: INSERT INTO tmpautor (CDAUTOR, NMAUTOR) VALUES (1, Renato Araújo )

Ex.: INSERT INTO tmpautor (CDAUTOR, NMAUTOR) VALUES (1, Renato Araújo ) PRONATEC - Programador de Sistemas Banco de Dados 1) Incluindo linhas nas tabelas a. Para incluir linhas em tabelas utilize o comando INSERT INTO INSERT INTO tabela [ ( coluna [, coluna,...] ) ] VALUES

Leia mais

SQL Linguagem de Manipulação de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

SQL Linguagem de Manipulação de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri SQL Linguagem de Manipulação de Dados Banco de Dados SQL DML SELECT... FROM... WHERE... lista atributos de uma ou mais tabelas de acordo com alguma condição INSERT INTO... insere dados em uma tabela DELETE

Leia mais

SQL. Prof. Márcio Bueno. {bd2tarde,bd2noite}@marciobueno.com

SQL. Prof. Márcio Bueno. {bd2tarde,bd2noite}@marciobueno.com SQL Prof. Márcio Bueno {bd2tarde,bd2noite}@marciobueno.com Material dos professores Ana Carolina Salgado, Fernando Foncesa e Valéria Times (CIn/UFPE) SQL SQL - Structured Query Language Linguagem de Consulta

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

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

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

IF685 Gerenciamento de Dados e Informação - Prof. Robson Fidalgo 1

IF685 Gerenciamento de Dados e Informação - Prof. Robson Fidalgo 1 IF685 Gerenciamento de Dados e Informação - Prof. Robson Fidalgo 1 Banco de Dados Fundamentos de SQL Structured Query Language Aula2 Apresentado por: Robson do Nascimento Fidalgo rdnf@cin.ufpe.br IF685

Leia mais

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

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

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

FEAP - Faculdade de Estudos Avançados do Pará PROFª LENA VEIGA PROJETOS DE BANCO DE DADOS UNIDADE V- SQL

FEAP - Faculdade de Estudos Avançados do Pará PROFª LENA VEIGA PROJETOS DE BANCO DE DADOS UNIDADE V- SQL Quando os Bancos de Dados Relacionais estavam sendo desenvolvidos, foram criadas linguagens destinadas à sua manipulação. O Departamento de Pesquisas da IBM desenvolveu a SQL como forma de interface para

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

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 TGD/JMB 1. Projecto de Bases de Dados. Linguagem SQL

SQL TGD/JMB 1. Projecto de Bases de Dados. Linguagem SQL SQL TGD/JMB 1 Projecto de Bases de Dados Linguagem SQL SQL TGD/JMB 2 O que é o SQL? SQL ("ess-que-el") significa Structured Query Language. É uma linguagem standard (universal) para comunicação com sistemas

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

O comando CREATE TABLE cria a tabela solicitada e obedece à seguinte forma:

O comando CREATE TABLE cria a tabela solicitada e obedece à seguinte forma: 1 CREATE TABLE O comando CREATE TABLE cria a tabela solicitada e obedece à seguinte forma: CREATE TABLE (), (

Leia mais

Proposta comercial de treinamento

Proposta comercial de treinamento Proposta comercial de treinamento Treinamento SQL Server performance with nowait Brasília, 29 de Maio de 2013 Ref.: 14-006 Esta proposta é válida até dia 03/10/2014. Sr. Nimbus Prestação de Serviços em

Leia mais

SQL é uma linguagem de consulta que implementa as operações da álgebra relacional de forma bem amigável.

SQL é uma linguagem de consulta que implementa as operações da álgebra relacional de forma bem amigável. SQL (Structured Query Language) SQL é uma linguagem de consulta que implementa as operações da álgebra relacional de forma bem amigável. Além de permitir a realização de consultas, SQL possibilita: definição

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

BANCO DE DADOS -INTRODUÇÃO AO SQL. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

BANCO DE DADOS -INTRODUÇÃO AO SQL. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br BANCO DE DADOS -INTRODUÇÃO AO SQL Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br Os comandos SQL podem ser agrupados em 3 classes: DDL Data Definition Language Comandos para a Definição

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

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

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

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

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

S Q L 31/03/2010. SQL - Structured Query Language Linguagem de Consulta Estruturada

S Q L 31/03/2010. SQL - Structured Query Language Linguagem de Consulta Estruturada Gerenciamento de Dados e Informação Fernando Fonseca Ana Carolina Robson Fidalgo SQL SQL - Structured Query Language Linguagem de Consulta Estruturada Apesar do QUERY no nome, não é apenas de consulta,

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

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

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

SQL. SQL (Structured Query Language) Comando CREATE TABLE. SQL é uma linguagem de consulta que possibilita:

SQL. SQL (Structured Query Language) Comando CREATE TABLE. SQL é uma linguagem de consulta que possibilita: SQL Tópicos Especiais Modelagem de Dados Prof. Guilherme Tavares de Assis Universidade Federal de Ouro Preto UFOP Instituto de Ciências Exatas e Biológicas ICEB Mestrado Profissional em Ensino de Ciências

Leia mais

Linguagem SQL (Parte I)

Linguagem SQL (Parte I) Universidade Federal de Sergipe Departamento de Sistemas de Informação Itatech Group Jr Softwares Itabaiana Site: www.itatechjr.com.br E-mail: contato@itatechjr.com.br Linguagem SQL (Parte I) Introdução

Leia mais

CIÊNCIA E TECNOLOGIA DO RIO

CIÊNCIA E TECNOLOGIA DO RIO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE BANCO DE DADOS II Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com eberton.marinho@ifrn.edu.br Curso de Tecnologia

Leia mais

SQL. Introdução. Por que SQL? Setenças Select-From-Where

SQL. Introdução. Por que SQL? Setenças Select-From-Where Introdução SQL Bancos de Dados I Altigran Soares da Silva IComp/UFAM 2013/02 Adaptado do Material do Professor Jeffrey Ullman Originalmente proposta para o System R desenvolvido nos laboratórios da IBM

Leia mais

ADMINISTRAÇÃO DE BANCO DE DADOS

ADMINISTRAÇÃO DE BANCO DE DADOS ADMINISTRAÇÃO DE BANCO DE DADOS ARTEFATO 02 AT02 Diversos I 1 Indice ESQUEMAS NO BANCO DE DADOS... 3 CRIANDO SCHEMA... 3 CRIANDO TABELA EM DETERMINADO ESQUEMA... 4 NOÇÕES BÁSICAS SOBRE CRIAÇÃO E MODIFICAÇÃ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

EXEMPLOS DE COMANDOS NO SQL SERVER

EXEMPLOS DE COMANDOS NO SQL SERVER EXEMPLOS DE COMANDOS NO SQL SERVER Gerenciando Tabelas: DDL - DATA DEFINITION LANGUAG Criando uma tabela: CREATE TABLE CLIENTES ID VARCHAR4 NOT NULL, NOME VARCHAR30 NOT NULL, PAGAMENTO DECIMAL4,2 NOT NULL;

Leia mais

S Q L 15/01/2013. Enfoques de SQL. Enfoques de SQL SQL. Usos de SQL. SQL - Origem/Histórico. Gerenciamento de Dados e Informação

S Q L 15/01/2013. Enfoques de SQL. Enfoques de SQL SQL. Usos de SQL. SQL - Origem/Histórico. Gerenciamento de Dados e Informação Enfoques de SQL Gerenciamento de Dados e Informação Fernando Fonseca Ana Carolina Valeria Times Bernadette Loscio Linguagem interativa de consulta (ad-hoc): usuários podem definir consultas independente

Leia mais

ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL. Carga horária: 32 Horas

ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL. Carga horária: 32 Horas ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL Carga horária: 32 Horas Pré-requisito: Para que os alunos possam aproveitar este treinamento ao máximo, é importante que eles tenham participado dos treinamentos

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

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

Aplicações - SQL. Banco de Dados: Teoria e Prática. André Santanchè e Luiz Celso Gomes Jr Instituto de Computação UNICAMP Agosto de 2013

Aplicações - SQL. Banco de Dados: Teoria e Prática. André Santanchè e Luiz Celso Gomes Jr Instituto de Computação UNICAMP Agosto de 2013 Aplicações - SQL Banco de Dados: Teoria e Prática André Santanchè e Luiz Celso Gomes Jr Instituto de Computação UNICAMP Agosto de 2013 Picture by Steve Kelley 2008 SQL SQL Structured Query Language Originalmente:

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

Principais Instruções em SQL. Contidas nesta apostila as principais instruções em SQL para a manutenção em Bancos de Dados.

Principais Instruções em SQL. Contidas nesta apostila as principais instruções em SQL para a manutenção em Bancos de Dados. Principais Instruções em SQL Contidas nesta apostila as principais instruções em SQL para a manutenção em Bancos de Dados. Atenção: Esta apostila foi desenvolvida com o auxílio on-line do banco MS-ACCESS,

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

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

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

Básico da Linguagem SQL. Definição de Esquemas em SQL. SQL(Structured Query Language)

Básico da Linguagem SQL. Definição de Esquemas em SQL. SQL(Structured Query Language) Básico da Linguagem SQL Definição de Esquemas em SQL SQL(Structured Query Language) Desenvolvida como a linguagem de consulta do protótipo de SGBD Sistema R (IBM, 1976). Adotada como linguagem padrão de

Leia mais

Definida pelo American National Standard Institute (ANSI) em 1986

Definida pelo American National Standard Institute (ANSI) em 1986 2.3. Linguagens Relacionais SQL Structured Query Language Linguagem para o modelo relacional: Definida pelo American National Standard Institute (ANSI) em 1986 Adoptada em 1987 como um standard internacional

Leia mais

Banco de Dados - Senado

Banco de Dados - Senado Banco de Dados - Senado Structured Query Language (SQL) Material preparado :Prof. Marcio Vitorino Ambiente Simplificado de um SGBD 2 Características dos SGBDs Natureza auto-contida de um sistema de banco

Leia mais

3) Palavra-chave distinct (select-from). Obter apenas os pibs distintos entre si.

3) Palavra-chave distinct (select-from). Obter apenas os pibs distintos entre si. NOME: BRUNO BRUNELI BANCO DE DADOS - ADS create database ProducaoMinerais use ProducaoMinerais create table Mineral( nome varchar(15) primary key, preco real) create table Pais( nome varchar(30) primary

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

1. SQL Instrumental...2 1.1 Select...3 1.2 Delete...13 1.3 Update... 1.4 Insert... 1.5 Group by... 1.6 Having... 1.7 Unnion All...

1. SQL Instrumental...2 1.1 Select...3 1.2 Delete...13 1.3 Update... 1.4 Insert... 1.5 Group by... 1.6 Having... 1.7 Unnion All... SQL 1. SQL Instrumental...2 1.1 Select...3 1.2 Delete...13 1.3 Update... 1.4 Insert... 1.5 Group by... 1.6 Having... 1.7 Unnion All... 2. Servidor... 2.1 Ativando log no Broker... 2.2 Leitura do log no

Leia mais

Limpeza e transformação de dados

Limpeza e transformação de dados SAD: 4º Projecto DW Limpeza e transformação de dados Suponha a operação de junção aproximada, que pode ser expressa pelo operador Match da framework de limpeza e transformação e dados AJAX. Pretende utilizar

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

SQL comando SELECT. SELECT [DISTINCT] FROM [condição] [ ; ] Paulo Damico - MDK Informática Ltda.

SQL comando SELECT. SELECT [DISTINCT] <campos> FROM <tabela> [condição] [ ; ] Paulo Damico - MDK Informática Ltda. SQL comando SELECT Uma das tarefas mais requisitadas em qualquer banco de dados é obter uma listagem de registros armazenados. Estas tarefas são executadas pelo comando SELECT Sintaxe: SELECT [DISTINCT]

Leia mais

Sistemas de Bases de Dados Relacionais Introdução ao SQL. Interrogações diversas sobre a Base de Dados Northwind

Sistemas de Bases de Dados Relacionais Introdução ao SQL. Interrogações diversas sobre a Base de Dados Northwind SQL (01) Sistemas de Bases de Dados Relacionais Introdução ao SQL Interrogações diversas sobre a Base de Dados Northwind /* Introdução ao SQL - Parte I =========================== Folha de Exercícios Resolução

Leia mais

Uma expressão básica em SQL consiste em três cláusulas: select, from e where.

Uma expressão básica em SQL consiste em três cláusulas: select, from e where. Introdução a Banco de Dados O.K. Takai; I.C.Italiano; J.E. Ferreira. 67 8 A Linguagem SQL A linguagem SQL é um padrão de linguagem de consulta comercial que usa uma combinação de construtores em Álgebra

Leia mais

Banco de Dados Oracle 10g: Introdução à Linguagem SQL

Banco de Dados Oracle 10g: Introdução à Linguagem SQL Oracle University Entre em contato: 0800 891 6502 Banco de Dados Oracle 10g: Introdução à Linguagem SQL Duração: 5 Dias Objetivos do Curso Esta classe se aplica aos usuários do Banco de Dados Oracle8i,

Leia mais

Curso: SQL Básico. Padrão de linguagem de consulta relacional aceito pelos comitês ANSI e ISO.

Curso: SQL Básico. Padrão de linguagem de consulta relacional aceito pelos comitês ANSI e ISO. Curso: SQL Básico Glauco Luiz Rezende de Carvalho glauco.rezende@banese.com.br Este material foi baseado e adaptado pelo material do Prof. MSc. Fábio Soares Silva da Universidade Tiradentes - UNIT SQL

Leia mais

Linguagem SQL Parte I

Linguagem SQL Parte I FIB - Centro Universitário da Bahia Banco de Dados Linguagem SQL Parte I Francisco Rodrigues Santos chicowebmail@yahoo.com.br Slides gentilmente cedidos por André Vinicius R. P. Nascimento Conteúdo A Linguagem

Leia mais

Ex.: INSERT INTO tmpautor (CDAUTOR, NMAUTOR) VALUES (1, Renato Araújo )

Ex.: INSERT INTO tmpautor (CDAUTOR, NMAUTOR) VALUES (1, Renato Araújo ) Tecnologia em Análise e Desenvolvimento de Sistemas Disciplina: B1SGB - Sistemas Gerenciadores de Banco de Dados Memória de aula Aula 10 1) Incluindo linhas nas tabelas a. Para incluir linhas em tabelas

Leia mais

Projeto de Banco de Dados

Projeto de Banco de Dados Projeto de Banco de Dados SQL-Consultas Comando SELECT Prof. Luiz Antônio Vivacqua C. Meyer (la.vivacqua@gmail.com) Sintaxe Geral SELECT [ALL/DISTINCT] coluna1, coluna2,..., colunan FROM nome_tabela1,

Leia mais

Tuning para Desenvolvedores DB2

Tuning para Desenvolvedores DB2 Tuning para Desenvolvedores DB2 Perallis IT Innovation Soluções em Armazenamento de dados www.perallis.com contato@perallis.com +55 19 3203-1002 SOBRE ESTE CURSO PÚBLICO-ALVO O curso Tuning para Desenvolvedores

Leia mais

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

AULA 2 INTERAÇÃO COM O BANCO DE DADOS AULA 2 INTERAÇÃO COM O BANCO DE DADOS BANCO DE DADOS POSTGRESQL O PostgreSQL é um sistema gerenciador de banco de dados dos mais robustos e avançados do mundo. Seu código é aberto e é totalmente gratuito,

Leia mais

SQL DML. Frederico D. Bortoloti freddb@ltc.ufes.br

SQL DML. Frederico D. Bortoloti freddb@ltc.ufes.br Banco de Dados I SQL DML Frederico D. Bortoloti freddb@ltc.ufes.br SQL - DML Os exemplos da aula serão elaborados para o esquema de dados a seguir: Empregado(matricula, nome, endereco, salario, supervisor,

Leia mais

Programação SQL. Introdução

Programação SQL. Introdução Introdução Principais estruturas duma Base de Dados: Uma BD relacional é constituída por diversas estruturas (ou objectos ) de informação. Podemos destacar: Database: designa a própria BD; Table/Tabela:

Leia mais

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

AULA 2 INTERAÇÃO COM O BANCO DE DADOS AULA 2 INTERAÇÃO COM O BANCO DE DADOS BANCO DE DADOS POSTGRESQL O PostgreSQL é um sistema gerenciador de banco de dados dos mais robustos e avançados do mundo. Seu código é aberto e é totalmente gratuito,

Leia mais

SQL. Banco de Dados I. Componentes de SQL

SQL. Banco de Dados I. Componentes de SQL Banco de Dados I Adrovane Marques Kade 1 1 Curso de Análise e Desenvolvimento de Sistemas Instituto Federal de Educação, Ciência e Tecnologia adrovane.kade@bento.ifrs.edu.br 2011/1 ( Structured Query Language

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

Introdução à Engenharia da Computação. Banco de Dados Professor Machado

Introdução à Engenharia da Computação. Banco de Dados Professor Machado Introdução à Engenharia da Computação Banco de Dados Professor Machado 1 Sistemas isolados Produção Vendas Compras Banco de Dados Produtos... Banco de Dados Produtos... Banco de Dados Produtos... Desvantagens:

Leia mais

Revisão / Exercícios. Prof. Márcio Bueno. {bd2tarde,bd2noited}@marciobueno.com

Revisão / Exercícios. Prof. Márcio Bueno. {bd2tarde,bd2noited}@marciobueno.com Revisão / Exercícios Prof. Márcio Bueno {bd2tarde,bd2noited}@marciobueno.com Especificando Campos Apelidos de campo SELECT DEI" + "-UNICAP" as Centro, Universidade = UNICAP" Expressões como campos Podem

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

Proposta de treinamento

Proposta de treinamento Proposta de treinamento SQL11 T-SQL Expert São Paulo-SP, Fevereiro/2013 Brasília, 08 de Novembro de 2012 Ref.: 12-061 Esta proposta é válida até o dia 10 de Janeiro de 2013. Sr. Nimbus Prestação de Serviços

Leia mais

SQL. Structured Query Language. Copyright 2003 2014 Prof. Edison Andrade Martins Morais http://www.edison.eti.br prof@edison.eti.

SQL. Structured Query Language. Copyright 2003 2014 Prof. Edison Andrade Martins Morais http://www.edison.eti.br prof@edison.eti. SQL Structured Query Language Copyright 2003 2014 Prof. Edison Andrade Martins Morais http://www.edison.eti.br prof@edison.eti.br Sumário 1.CREATE TABLE... 5 1.1. Sintaxe... 5 1.2. A instrução CREATE TABLE

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

Banco de Dados. Maurício Edgar Stivanello

Banco de Dados. Maurício Edgar Stivanello Banco de Dados Maurício Edgar Stivanello Agenda Conceitos Básicos SGBD Projeto de Banco de Dados SQL Ferramentas Exemplo Dado e Informação Dado Fato do mundo real que está registrado e possui um significado

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

OTIMIZAÇÃO DE CONSULTAS NO SGBD ORACLE 11G. Resumo: Este artigo apresenta diversas técnicas e ferramentas para otimizar consultas

OTIMIZAÇÃO DE CONSULTAS NO SGBD ORACLE 11G. Resumo: Este artigo apresenta diversas técnicas e ferramentas para otimizar consultas OTIMIZAÇÃO DE CONSULTAS NO SGBD ORACLE 11G BRENO MARCELO DE SOUZA 1 IREMAR NUNES DE LIMA 2 Resumo: Este artigo apresenta diversas técnicas e ferramentas para otimizar consultas SQL no Sistema Gerenciador

Leia mais

Otimização de Consultas no SQL Server

Otimização de Consultas no SQL Server Otimização de Consultas no SQL Server Sumário PREFÁCIO 5 SOBRE O AUTOR 6 AGRADECIMENTOS 6 INTRODUÇÃO 7 Sobre o Livro 7 Capítulos 7 Material 8 CAPÍTULO 1 - VISÃO GERAL 10 Arte da otimização de consultas

Leia mais

SQL S Q L. Introdução. Enfoques de SQL. SQL - Origem/Histórico. Usos de SQL. SQL - Vantagens. Banco de Dados. Fernando Fonseca Ana Carolina

SQL S Q L. Introdução. Enfoques de SQL. SQL - Origem/Histórico. Usos de SQL. SQL - Vantagens. Banco de Dados. Fernando Fonseca Ana Carolina Introdução Banco de Dados SQL Fernando Fonseca Ana Carolina SQL - Structured Query Language Linguagem de Consulta Estruturada Apesar do QUERY no nome, não é apenas de consulta, permitindo definição (DDL)

Leia mais

Memória de aula Semanas 15 e 16

Memória de aula Semanas 15 e 16 FMU Curso: Ciência da Computação Disciplina: Banco de Dados I Professor: Ecivaldo Matos Memória de aula Semanas 15 e 16 1) Incluindo linhas nas tabelas a. Para incluir linhas em tabelas utilize o comando

Leia mais

Gerenciamento de um Sistema de

Gerenciamento de um Sistema de SBD Gerenciamento de um Sistema de Banco de Dados Prof. Michel Nobre Muza ua michel.muza@ifsc.edu.br Prof. Marcos Antonio Viana Nascimento Por que é importante: Motivação Participar na organização e no

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

Formação em Banco de Dados. Subtítulo

Formação em Banco de Dados. Subtítulo Formação em Banco de Dados Subtítulo Sobre a APTECH A Aptech é uma instituição global, modelo em capacitação profissional, que dispõe de diversos cursos com objetivo de preparar seus alunos para carreiras

Leia mais

SQL. Hélder Antero Amaral Nunes

SQL. Hélder Antero Amaral Nunes SQL Hélder Antero Amaral Nunes 2 Introdução Desenvolvida pelo departamento 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

ADMINISTRAÇÃO DE BANCO DE DADOS

ADMINISTRAÇÃO DE BANCO DE DADOS ADMINISTRAÇÃO DE BANCO DE DADOS ARTEFATO 06 AT06 Índices 1 Indice INTRODUÇÃO... 3 CLUSTERED INDICES... 4 NONCLUSTERED INDICES... 5 TRANSACT-SQL AND INDICES... 6 COMPOSITE INDEX... 8 ALTERING INDICES...

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

BANCO DE DADOS II LINGUAGEM SQL - STRUCTURED QUERY LANGUAGE. Prof.: Elvis Bloemer Meurer

BANCO DE DADOS II LINGUAGEM SQL - STRUCTURED QUERY LANGUAGE. Prof.: Elvis Bloemer Meurer BANCO DE DADOS II LINGUAGEM SQL - STRUCTURED QUERY LANGUAGE Prof.: Elvis Bloemer Meurer ORLEANS, 2011 1 CAPITULO 6: FUNÇÕES DE GRUPO...4 6.1 OBJETIVOS DESTE CAPÍTULO...4 6.2 FUNÇÕES DISPONÍVEIS...4 6.3

Leia mais

Linguagem SQL. Comandos Básicos

Linguagem SQL. Comandos Básicos Linguagem SQL Comandos Básicos Caetano Traina Júnior 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.sc.usp.br Comando

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

1. Assinale as afirmações que são verdadeiras e as que são falsas, corrigindo-as:

1. Assinale as afirmações que são verdadeiras e as que são falsas, corrigindo-as: Curso Profissional Técnico de Informática de Gestão 10ºB Prof. Pedro Lopes S i s t e m a s d e I n f o r m a ç ã o M ó d u l o : L i n g u a g e m S Q L T e s t e s u m a t i v o d u r a ç ã o 8 0 m i

Leia mais

SQL: Interrogações simples

SQL: Interrogações simples SQL: Interrogações simples Fernando Lobo Base de Dados, Universidade do Algarve 1 / 20 Structured Query Language (SQL) É uma implementação da álgebra relacional incluindo os operadores extendidos. Contém

Leia mais