Administração e Optimização de BDs 2º semestre

Documentos relacionados
Administração e Optimização de BDs 2º semestre

Administração e Optimização de BDs

Administração e Optimização de BDs

Administração e Optimização de BDs

de Bases de Dados Exame 1

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

Cada instância exibe uma instalação separada, por exemplo, produção rodando sql server 2008 e testes rodando sql server 2012.

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

Sistemas de Bases de Dados 1.º teste (com consulta limitada: 2 folhas identificadas) - Duração: 2 horas

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

de Bases de Dados Exame 2

Teste Exemplo Revisão da tentativa 1

SQL Básica. Andre Noel

Informática II Cap. 5-2 Bases de Dados - MsAccess

Sistemas de Bases de Dados 1.º teste (com consulta limitada: 2 folhas identificadas) - Duração: 2 horas

Sistemas de Informação e Bases de Dados 2012/2013. Índices. Alberto Sardinha

Preparação. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 10/12/2013

Tarefa Orientada 17 Scripts

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

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

Administração de Banco de Dados

Bases de Dados. Lab 1: Introdução ao ambiente. Figura 1. Base de dados de exemplo

Banco de Dados I Introdução SQL

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

PostgreSQL Performance

!" # Modelos de dados. 1ª geração. 2ª geração. 3ª geração. Modelo Hierárquico Modelo Rede. Modelo Relacional

Partitioning Partitioning table App. Partitioning SQL Server Partitioning Vantagens Partitioning Exemplo Passos a dar

Preparação criar tabela. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 12/11/2018

Bases de Dados. Índices. Discos. transferência rápida e aos bytes. transferência lenta e em blocos (512B ~ 4KB) memória. disco BD / aplicação

Bases de Dados. Índices. Discos. transferência lenta. transferência rápida e em blocos (512B ~ 4KB) e aos bytes. memória.

Análise e otimização de queries no MySQL. Jeronimo Fagundes da Silva

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

SQL Linguagem de Definição de Dados

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

SQL (Tópicos) Structured Query Language

de Bases de Dados Exame 1

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

Caderno de Introdução Bases Dados

Programação em Banco de dados

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

A U L A 1 0 C R I A N D O V I E W S V I E W S ( V I S Õ E S )

Prof. Dr. Joaquim Assunção Banco de Dados. SQL (parte 4) DDL Restrições

BANCO DE DADOS GERENCIAL 1 A U L A 2

ACH2025. Aula 11. Visões. Professora: Fátima L. S. Nunes SISTEMAS DE INFORMAÇÃO

1º Teste Sem consulta

Fundamentos de Banco de Dados Postgre com Sql

ANÁLISE E PROJETO DE BANCO DE DADOS

Uma solução possível para garantir, em ambiente APEX, a consistência duma estrutura ISA, total e disjuntiva.

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

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

BANCO DE DADOS II SQL Básico. COTEMIG Gerson Borges

Bases de Dados. Remoções em árvores B + Remoção em árvores B +

Organização de Arquivos

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

Informática I. Aula 8. Aula 8-25/09/2006 1

A linguagem SQL

Processamento de Consultas. Simone Dominico Orientador: Dr. Eduardo Cunha de Almeida PPGINF - UFPR

Laboratório 14 - Usando o SSIS Import e Export Wizard

Manipulação de Dados com SQL

Bancos de Dados IV. Tuning de Bancos de Dados. Rogério Costa

Exame de Recurso de Base de Dados Universidade do Algarve 03/Fev/2005, (duração: 2 horas)

A linguagem SQL

Bases de Dados. Algoritmos. Custo de operação. Algoritmos de selecção. Algoritmo de ordenação. Algoritmos de junção.

Época de Recurso Sem consulta

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

Introdução ao Banco de Dados. Banco de Dados

ACH2025. Laboratório de Bases de Dados Aula 8. Indexação e Hashing Parte 1. Professora: Fátima L. S. Nunes SISTEMAS DE INFORMAÇÃO

Informática para as Ciências e Engenharias - 2º semestre 2015/2016

Tarefa Orientada 8 Criação de tabelas

Arquivo. Banco de Dados. Organização dos Arquivos. Banco de Dados. Banco de Dados. Introdução a Computação

15 - Introdução às Bases de Dados

BCD29008 Banco de dados

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

1º Teste Sem consulta

- Um "query block" permite a implementação das operações de selecção, projecção e junção da álgebra relacional.

Tabelas. Banco de Dados I MySQL

Rápida revisão do Modelo Relacional

Introdução. Bases de Dados (CC2005) Departamento de Ciência de Computadores Faculdade de Ciências da Universidade do Porto

Árvores-B (Parte I) SCC-503 Algoritmos e Estruturas de Dados II. Thiago A. S. Pardo Leandro C. Cintra M.C.F. de Oliveira

BANCO DE DADOS. Para a criação de um banco de dados, através de scripts SQL, deve-se usar a seguinte sintaxe: CREATE DATABASE <nome_banco_de_dados>

Arquitetura de SGBD Relacionais

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

Banco de Dados I. Aula 16 - Prof. Bruno Moreno 04/11/2011

Exercício Aula Passada. SQL Linguagem de Manipulação de Dados. Exercício Aula Passada. Exercício Aula Passada. Exercício Aula Passada

Bases de Dados 2007/2008 Exame

O Modelo Relacional. Criando relações em SQL

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

TRABALHO DE BANCO DE DADOS

Bases de Dados 2015/2016. Enunciado do Projeto Parte 2. O trabalho a desenvolver para a primeira parte do projeto consiste nos seguintes itens:

ARMAZENAMENTO E PROCESSAMENTO DE BANCOS DE DADOS RELACIONAIS

O Modelo Relacional. Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento)

Modelo Relacional. Josino Rodrigues

Planificação Anual. Departamento Expressões e Tecnologias

TLBD II. Continuação

2 o Teste de ICE-B, 8 de Junho de 2019 (Versão B)

Bases de Dados 1º semestre

Bases de Dados 2005/2006. Aula 5

Transcrição:

DepartamentodeEngenhariaInformática 9/ AdministraçãoeOptimizaçãodeBDsºsemestre Mini Projecto Entregaa6deMarçode Aresoluçãodeveserclaramenteidentificadacomonúmerodegrupoeentreguesoba formadeumrelatórioimpresso,seguindootemplatedadonapáginadacadeira. Deveaindaserfeitaumaentregaelectrónicadomesmorelatório(emformatoPDF), respeitandooprazodefinidonapáginadacadeira.. ConsiderandooSGBDSQLServer8,respondaàsseguintesquestões: a. Qual o comando T SQL que permite criar uma base de dados com o seguinte conjuntodecaracterísticas: A BD deve chamar se AOBDTestDB e deve conter quatro ficheiros de dados em três filegroups diferentes (i.e., um ficheiro no filegroup primário, dois ficheiros num filegroup secundário,eumficheironumsegundo filegroup secundário).oficheirono filegroup primáriodeveterumtamanhoinicialde3mb,eosrestantesdevemterum tamanho inicial de 5MB. A base de dados deve ainda ter um ficheiro de log com um tamanho inicial de MB. O ficheiro de log deve ter um tamanho máximo de 35MB, enquanto que os data files devem ter um tamanho máximo ilimitado. Todos os ficheiros devemcresceraumataxade5%. b. Ao criar uma tabela na base de dados AOBDTestDB, seria possível associar explicitamentepartiçõesdosdadosaarmazenarnatabelaacadaumdosquatro ficheirosdedadosqueformamabasededados?justifique. c. Seria possível alterar a base de dados AOBDTestDB por forma a que a mesma tivessedoisficheirosdelogemfilegroupsdistintos?emcasoafirmativoapresente ainstruçãot SQLcorrespondenteàalteraçãoe,nocasocontrário,apresenteuma justificaçãoparaasuaresposta.. Considerandoabasededadosdaalíneaanterior,respondaàsseguintesquestões: a. QualocomandoT SQLparacriarumatabelasobreabasededadosAOBDTestDB, considerando as características: A tabela deverá chamar se Persons, tendo um atributo numérico de nome PersonID, correspondente à chave primária, um atributo alfanumérico de nome Name com um tamanho máximo de caracteres, e um atributo de nome BirthYear correspondente ao ano de nascimento. A tabela deverá ser particionada por forma a que todos as pessoas cujadatadenascimentosejainferiora9fiquemnoterceirofilegroup,todasas pessoascommaisde5anosfiquemnosegundofilegroup,easrestantespessoas fiquemnofilegroupprimário. IST/DEI Pág.de9

AdministraçãoeOptimizaçãodeBasesdeDados b. Indique uma vantagem em ter a tabela Persons particionada da forma descrita naalíneaanterior.exemplifiqueavantagematravésdeumcenárioconcreto. c. IndiqueseoSQLServer8iriaconstruiralgumíndicesobreatabela Persons destapergunta.emcasoafirmativo,indiqueotipodoíndiceeindiqueseomesmo seriaclusteredounon clustered,justificandoasuaresposta. 3. Considere uma estrutura de dados do tipo extendable hash onde cada bucket armazena registos. Considere ainda os seguintes registos e a chaves de hash que lhescorrespondem: Daniel Esmeralda Francisca Geraldes Indiquequalaestruturaobtidaapósainserçãosequencialdecadaumdosvaloresacima. Assumaqueaordemparaaqualdevemconsiderarosbitsdaschavesdehashédobit menossignificativo(direita)paraobitmaissignificativo(esquerda). 4. ConsidereabasededadosAdventureWorksdoSQLServer8. a. Dê um exemplo de uma interrogação T SQL, sobre esta base de dados e envolvendo pelo menos uma junção, sobre a base de dados Adventure Works, ondeaexistênciadeumíndiceb+tree,criadocomaopçãoinclude,podetrazer benefícios.justifiqueoporquêdasuaescolhaeapresentetambémumainstrução T SQLquepermitiriacriaroíndice. b. DêumexemplodeumainterrogaçãoT SQLsemelhanteàdaalíneaanterior(i.e., sobre exactamente as mesmas tabelas e envolvendo selecções e projecções exactamente sobre os mesmos atributos) mas onde mesmo índice já não seria vantajoso.justifiqueasuaresposta. Sugestão:Exploreofactodoíndicepoderestarordenadodeduasformasdistintas. c. Supondo que o SQL Server 8 oferece suporte nativo para índices extendable hash,dêumexemplodeumainterrogaçãot SQLsobreabasededadosAdventure Worksondeemprincípioseriamaisútilumíndicedotipoextendablehashdoque umíndiceb+tree.justifiqueporquê. IST/DEI Pág.de9

AdministraçãoeOptimizaçãodeBasesdeDados 5. Considere que na base de dados da primeira pergunta existe um índice B+Tree no atributobirthyeardatabelapersons. a. IndiqueumcomandoT SQLparacriaroíndiceB+TreesobreacolunaBirthYear, considerandoasseguintesopções: i O índice deve incluir também o atributo Name, embora este não faça partedachavedepesquisa. ii O índice deve seguir o mesmo esquema de particionamento utilizado paraatabela(veralínea.c). b. MostrequalaestruturadaárvoreB+Treeresultantedainserçãosequencialde cada um dos seguintes valores: 995, 997, 99, 993,, 98, 986. Desenheclaramenteaárvoreresultantedecadapassodeinserção. c. Sobre o resultado da alínea anterior, mostre qual a árvore resultante após a remoçãosequencialdecadaumdosseguintesvalores:995,997,99,993,,98,986.desenheaárvoreresultantedecadapassoderemoção. d. Sobre a árvore resultante da alínea b), indique os passos envolvidos no algoritmodepesquisasobreaárvoreb+treeparaasseguintesduassituações: i.encontrarosregistoscomumbirthyeariguala. ii.encontrarosregistoscomumbirthyearentre986e997,inclusive. IST/DEI Pág.3de9

AdministraçãoeOptimizaçãodeBasesdeDados Abaixoencontram seasresoluçõesparaosproblemaspropostosnomini projecto. ResoluçãodoProblema Pergunta.A CREATE TABLE AOBDTestDB ON PRIMARY (NAME = AOBDTestDB_Primary, FILENAME= TestDB_Primary.mdf, size=3mb, FILEGROWTH=5%), FILEGROUP SECONDARY_FIRST (NAME = AOBDTestDB_Secondary, FILENAME= TestDB_Secondary.ndf, size=5mb, FILEGROWTH=5%), (NAME = AOBDTestDB_Secondary, FILENAME= TestDB_Secondary.ndf, size=5mb, FILEGROWTH=5%), FILEGROUP SECONDARY_SECOND (NAME = AOBDTestDB_Secondary, FILENAME= TestDB_Secondary.ndf, size=5mb, FILEGROWTH=5%), LOG ON (NAME = AOBDTestDB_Log, FILENAME= Log.ldf, size=mb, MAXSIZE=35MB, FILEGROWTH=5%); GO; Pergunta.B No SQL Server, as partições de tabelas ou índices apenas podem ser atribuídas explicitamente a filegroups, e não a ficheiros individuais de uma BD. Não é pois possível fazer a atribuição a ficheiros. Pergunta.C No SQL Server, uma BD pode conter vários ficheiros de log, mas estes não são organizados em filegroups. Apenas os ficheiros de dados são organizados em filegroups. ResoluçãodoProblema Pergunta.A USE AOBDTestDB; CREATE PARTITION FUNCTION AODBTestDB_PRange(INT) AS RANGE LEFT FOR VALUES (9,96); CREATE PARTITION SCHEME AODBTestDB_PScheme AS PARTITION AODBTestDB_PRange TO (SECONDARY_SECOND, SECONDARY_FIRST, [PRIMARY]); CREATE TABLE Persons ( PersonID INT NOT NULL, NAME VARCHAR(), BirthDate INT NOT NULL) ON AODBTestDB_PScheme(BirthDate); GO; Pergunta.B O esquema de particionamento da base de dados usado na pergunta anterior permite um controlo explícito do armazenamento dos tuplos da tabela Persons, tendo-se que os mesmos são armazenados em determinados filegroups consoante o valor do atributo BirthDate. Desta forma, torna-se possível armazenar os tuplos mais acedidos num filegroup que corresponde a ficheiros numa unidade de armazenamento mais rápida, ou armazenar os dados históricos num filegroup que corresponde a ficheiros numa unidade de armazenamento maior embora potencialmente mais lenta. Torna-se ainda possível ter acessos concorrentes às diferentes partições de dados, particularmente se os filegroups corresponderem a ficheiros em unidades de armazenamento diferentes. Finalmente, o particionamento dos dados pode ainda permitir a um acesso mais eficiente aos tuplos das várias partições da tabela, uma vez que cada uma das partições se vai encontrar numa estrutura de dados mais pequena, diminuindo-se assim o tempo de procura por tuplos específicos dentro de cada partição. Um cenário concreto onde o particionamento usado na alínea anterior seria útil corresponde à situação em que existem três padrões de acesso distintos à tabela Persons, tendo-se que um deles corresponde ao acesso a dados históricos (e.g., acessos pouco frequentes a tuplos correspondentes a datas inferiores a 9), outro a dados do passado recente (e.g., acessos para contabilização de estatísticas sobre os tuplos correspondentes a datas entre 9 e 96), e outro ainda aos dados da actualidade (e.g., operações correntes estilo OLTP sobre tuplos correspondendo a data superiores a 96). Pode-se assim melhor optimizar o acesso à tabela Persons para cada um dos diferentes padrões. IST/DEI Pág.4de9

AdministraçãoeOptimizaçãodeBasesdeDados Pergunta.C O SQL Server 8 não permite a existência simultânea de uma chave candidata sobre um atributo, e de um esquema de particionamento associado a um atributo diferente. Desta forma, a instrução apresentada na alínea.a não inclui a definição de uma chave primária sobre a tabela. Caso a instrução CREATE TABLE incluísse a definição de uma chave primária, o SQL Server teria também criado um índice clustered do tipo B+Tree sobre o atributo correspondente à chave primária. A razão pela qual o SQL Server procede desta forma relaciona-se com o facto dos atributos correspondentes às chaves primárias serem frequentemente usados em operações de pesquisa e de join entre tabelas, pelo que a existência de índices sobre estes atributos tem frequentemente um grande impacto na base de dados em termos da performance de acesso. ResoluçãodoProblema3 Daniel Esmeralda Daniel 3 3 Geraldes Esmeralda 3 Esmeralda Francisca Francisca Daniel Daniel IST/DEI Pág.5de9

AdministraçãoeOptimizaçãodeBasesdeDados ResoluçãodoProblema4 Pergunta4.A USE AdventureWorks; CREATE NONCLUSTERED INDEX IDX ON Person.Person(BusinessEntityID) INCLUDE (FirstName); -- Encontrar pessoas com BusinessEntityID > 69 que tenham um endereço de email SELECT Person.BusinessEntityID, Person.FirstName FROM Person.Person JOIN Person.EmailAddress ON Person.Person.BusinessEntityID = Person.EmailAddress.BusinessEntityID WHERE Person.BusinessEntityID > 69; O índice non-clustered seria útil para a consulta pois a chave de pesquisa suporta as operações de selecção e junção usadas na query, e inclui ainda todos os atributos da tabela usados na interrogação. Pergunta4.B -- Encontrar pessoas com BusinessEntityID < 69 que tenham um endereço de email SELECT Person.BusinessEntityID, Person.FirstName, Person.LastName FROM Person.Person JOIN Person.EmailAddress ON Person.Person.BusinessEntityID = Person.EmailAddress.BusinessEntityID WHERE Person.BusinessEntityID < 69; O índice não suporta a condição de selecção, visto que a sua ordenação é crescente nos valores do atributo BusinessEntityID. O índice non-clustered também não inclui o atributo LastName. Pergunta4.C -- Pesquisa por igualdade SELECT Person.BusinessEntityID, Person.FirstName FROM Person.Person WHERE Person.BusinessEntityID = 69; ResoluçãodoProblema5 Pergunta5.A USE AOBDTestDB; CREATE INDEX PersonBirthDate ON Persons(BirthDate) INCLUDE(NAME) ON AODBTestDB_PScheme(BirthDate); IST/DEI Pág.6de9

AdministraçãoeOptimizaçãodeBasesdeDados Pergunta5.B 995 995 997 997 99 995 997 995 997 99 993 995 997 995 997 99 993 995 997 993 995 98 99 993 995 997 99 993 995 98 986 99 993 995 997 997 997 IST/DEI Pág.7de9

AdministraçãoeOptimizaçãodeBasesdeDados Pergunta5.C 99 98 986 99 993 997 99 993 995 98 986 98 986 993 993 995 98 986 993 986 995 995 986 98 99 993 IST/DEI Pág.8de9

AdministraçãoeOptimizaçãodeBasesdeDados Pergunta5.D.. Começar na raiz da árvore.. Percorrer o nó raiz até encontrar um valor maior do que. Caso este valor se encontre, deve-se seguir o ponteiro correspondente a nós cujos valores são menores que o valor em questão. Neste caso concreto, o nó raiz apenas contem um valor (995), que é menor do que. Segue-se assim o ponteiro correspondente a nós >= 995. 3. Enquanto não se chegar a um nó folha, repetir o passo. 4. Ao chegar a um nó folha, pesquisam-se sequencialmente os seus valores, até se encontrar o valor pretendido, ou se ter a confirmação de que o valor não se encontra armazenado na árvore. Neste caso concreto, o valor encontra-se armazenado na árvore. Pergunta5.D.. Começar na raiz da árvore.. Percorrer o nó raiz até encontrar um valor maior do que 986. Caso este valor se encontre, deve-se seguir o ponteiro correspondente a nós cujos valores são menores que o valor em questão. Neste caso concreto, o nó raiz apenas contem um valor (995), que é maior do que 983. Segue-se assim o ponteiro correspondente a nós < 995. 3. Enquanto não se chegar a um nó folha, repetir o passo. 4. Ao chegar a um nó folha, pesquisam-se sequencialmente os seus valores, até se encontrar um valor >= 986. 5. Depois de encontrar o primeiro valor >= 986, pesquisam-se sequencialmente os restantes valores armazenados nas folhas da árvore, até se encontrar o primeiro valor > 997. Os valores encontrados durante esta pesquisa sequencial correspondem aos valores a retornar para a pesquisa. IST/DEI Pág.9de9