OTIMIZANDO O DESEMPENHO DE UM BANCO DE DADOS EM UM AMBIENTE ALTAMENTE CRÍTICO

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

Download "OTIMIZANDO O DESEMPENHO DE UM BANCO DE DADOS EM UM AMBIENTE ALTAMENTE CRÍTICO"

Transcrição

1 UNIÃO EDUCACIONAL MINAS GERAIS S/C LTDA FACULDADE DE CIÊNCIAS APLICADAS DE MINAS Autorizada pela Portaria no 577/2000 MEC, de 03/05/2000 BACHARELADO EM SISTEMAS DE INFORMAÇÃO OTIMIZANDO O DESEMPENHO DE UM BANCO DE DADOS EM UM AMBIENTE ALTAMENTE CRÍTICO CLÉSIO BRAGA SILVA Uberlândia 2006

2 CLÉSIO BRAGA SILVA OTIMIZANDO O DESEMPENHO DE UM BANCO DE DADOS EM UM AMBIENTE ALTAMENTE CRÍTICO Trabalho de Final de curso submetido à UNIMINAS como parte dos requisitos para a obtenção do grau de Bacharel em Sistemas de Informação. Orientador: Prof. Márcio dos Reis Caetano UBERLÂNDIA - MG 2006

3 CLÉSIO BRAGA SILVA OTIMIZANDO O DESEMPENHO DE UM BANCO DE DADOS EM UM AMBIENTE ALTAMENTE CRÍTICO Trabalho de Final de curso submetido à UNIMINAS como parte dos requisitos para a obtenção do grau de Bacharel em Sistemas de Informação. Orientador: Prof. Marcio dos Reis Caetano Banca Examinadora: Uberlândia, 16 de Setembro de Prof. Marcio dos Reis Caetano (Orientador) Prof. Msc. Silvio Bacalá Jr. Prof. Esp. Carlos Henrique de Barros UBERLÂNDIA MG 2006

4 Para Tania e Ana Júlia, com amor.

5 AGRADECIMENTOS Ao meu orientador, Prof. Márcio dos Reis Caetano, pelo apoio, paciência e compreensão demonstrados durante todas as suas disciplinas e, sobretudo, no desenvolvimento desta pesquisa. À Uniminas, pela oportunidade de realizar este curso de graduação. À Profa. Msc. Ana Maria Árabe pelo incentivo durante as fases iniciais do projeto de pesquisa. À Profa. Dra. Kátia Lopes Silva, pela cuidadosa revisão da pesquisa, e acima de tudo, observado detalhes tão importantes para valorização deste trabalho. Às funcionárias da secretaria, da biblioteca e coordenação, sempre prestativas e atenciosas durante todos esses anos. A todos os meus amigos e colegas de trabalho, que compartilharam minhas dificuldades, se mostraram interessados e sempre contribuíram com idéias e sugestões. À todas as empresas nas quais já trabalhei, por possibilitarem a concretização deste projeto, reconhecendo sempre a relevância da educação. Ao autor e Msc. Eduardo Terra Morelli e ao Sr. Rogério Okada da empresa CTBC, que tão prontamente responderam as entrevistas. Ao Paulo Ribeiro membro da equipe editorial da SQL Magazine, que também permitiu citar seus artigos. À minha família, pela formação e pelo incentivo, durante toda minha vida.

6 RESUMO A otimização de desempenho de bancos de dados, ou os trabalhos de tuning como é conhecido por parte dos administradores de bancos de dados, é uma prática realizada há muito tempo e que vem se tornando mais comum. Diversos são os motivos que levam as organizações a buscarem otimização dos seus servidores de bancos de dados, suas diferentes atividades e serviços, atendimento das necessidades dos clientes, evolução constante dos meios de comunicação e minimização do tempo de resposta aos usuários. Como parte dos resultados destes trabalhos, pode-se obter redução de custos e melhoria de qualidade, que está relacionada à disponibilidade da informação em tempo hábil, o que permitem tomadas de decisões mais rápidas. Este trabalho tem como objetivo realizar um estudo analítico sobre as formas de otimização de um banco de dados, métodos e técnicas para obter ganhos de desempenho, bem como dos fatores que influenciam nos processos do servidor de banco de dados. O trabaho tem como base o SGBD da Microsoft, SQL Server 2000, desta forma, pôde-se elaborar uma literatura sobre o assunto, segundo autores e colunistas conceituados que fazem abordagens no contexto desta tecnologia. Além disso, o trabalho procura descrever as responsabilidades do administrador de bancos de dados, e ainda, fornecer detalhes importantes para atuar nas ocorrências de baixo desempenho. Palavras-chave: Banco de dados. Desempenho. Otimização. Tuning. SQL Server

7 ABSTRACT The optimization of the databases performance, or tuning activities as it is known by the databases administrators, have been executed for a long time and have becomed more common. There are many reasons that take the organizations to look for optimization of its databases servers, its different activities and services, attendance of the customers necessities, constant evolution of the channels communication and reducing the user time response. As part of the results of these works, it can be gotten reduction of costs and optimization of quality that is related to the availability of the information in skillful time, what it allows taken faster decisions. This work intends to studies about database tuning, methods and techniques to get performance profits, as well as of the factors that influence in the processes of the server of database. This works is based on RDBMS Microsoft. SQL Server 2000, and will help to elaborated an appraised literature about this subject, according to some authors and writers that are specialists in the context of this technology. Moreover, this work intends to describe the database administrator responsibilities, and supply important details in order to act in the overhead occurrences. Word-key: Database. Performance. Optimization. Tuning. SQL Server

8 LISTA DE FIGURAS Figura 1 - AD x DBA... Figura 2 Duas conexões em espera mútua... Figura 3 Ocorrência de deadlock... Figura 4 Mensagem de erro... Figura 5 - Propriedades fundamentais de uma transação... Figura 6 Comandos digitados no Query Analyser... Figura 7 Definindo o nome do banco de dados... Figura 8 Localização e tamanho inicial... Figura 9 Etapas necessárias para criação do banco de dados... Figura 10 Mensagem de estouro de disco... Figura 11 Principais diferenças entre índices cluster e não-cluster... Figura 12 Recriando um índice cluster... Figura 13 Utilizando índices na otimização de queries no SQL Server... Figura 14 - Páginas de dados da tabela de nomes com índice cluster... Figura 15 - Páginas de dados de tabela sem índice cluster (Heap)... Figura 16 Páginas de dados com índice cluster após reindexação... Figura 17 - Páginas de dados sem índice cluster após reindexação... Figura 18 Colunas atualizadas para cada evento... Figura 19 Trace capturando um cursor de servidor... Figura 20 Exemplo de conexão - código escrito em Visual Basic... Figura 21 Resultado obtido com a alteração do CursorLocation... Figura 22 Utilizando o SQL Profiler no rastreamento de Deadlocks

9 Figura 23 Comentários sobre as três modalidades de execução... Figura 24 Alterações no código das sp s que evitam recompilações... Figura 25 Visualizando recompilações com o evento SP:Recompile Figura 26 Evento Audit Login para confirmar o protocolo TCP/IP como padrão... Figura 27 Identificando erros e falta de estatísticas Figura 28 Gerando script dos comandos T-SQL necessários para a trace... Figura 29 Criando um job a partir do Enterprise Manager

10 SUMÁRIO 1 Introdução Cenário atual Objetivos Objetivo geral Objetivos específicos Identificação do problema Justificativa para a pesquisa Metodologia... 2 Otimização de Banco de Dados Ambientes altamente críticos Erros de aplicabilidade Métodos e técnicas de otimização Gerenciamento de locks no SQL Server Identificação de locks Utilizando filegroups para ganho de desempenho e gerenciamento de espaço Criando filegroups Criando um banco de dados no Enterprise Manager Cenários para utilização de arquivos secundários Utilizando índices na otimização de queries no SQL Server O processamento físico de um join Como funciona o hash join Utilizando índices na otimização de queries no SQL Server Tipos de índices existentes no SQL Server

11 3 Problemas que podem ocorrer em um banco de dados e como solucioná-los Heap tables Criando uma trace para análise de desempenho de um servidor SQL Server Identificando stored procedures e batchs com baixo desempenho Análise de outros objetos relacionados ao desempenho Identificando cursores criados no servidor Rastreando processos envolvidos em Deadlocks Evitando CacheMiss Evitando recompilações Confirmando TCP/IP como protocolo de conexão Identificando erros Como agendar uma trace... 4 Considerações finais Propostas para trabalhos futuros... Referências bibliográficas... Apêndices

12 12 1 INTRODUÇÃO 1.1 Cenário atual Em ambientes corporativos, a Tecnologia da Informação (TI) é utilizada para obter resultados para as tomadas de decisão e atendimento aos clientes. Faz-se uso de um ou vários bancos de dados, sendo que estes são responsáveis por armazenar e disponibilizar os dados de acordo com a necessidade dos usuários. Com a constante evolução dos recursos computacionais, especificamente aqueles direcionados para grandes volumes de dados e transações, as organizações investem maciçamente na alta disponibilidade dos dados. Isso é percebido quando se trata de um ambiente crítico, onde a perda de receita e insatisfação dos clientes geram transtornos e prejuízos muitas vezes irreparáveis. Assim como ocorrem evoluções e investimentos em equipamentos de alta tecnologia para comunicação, segurança, armazenamento e processo, os programas também acompanham estas evoluções. Os programas de banco de dados são responsáveis pelo processamento das consultas e transações, onde os clientes normalmente acessam os bancos de dados pela rede, compartilhando informações com segurança e privacidade em qualquer lugar, a qualquer hora. Dentre os profissionais disponíveis para ambientes críticos destaca-se o Administrador de Banco de Dados (DBA), suporte em sistemas operacionais e

13 13 serviço de apoio aos usuários (Help Desk). Dependendo do tipo de negócio da organização, outros serviços são agregados a fim de responder às demandas dos clientes. Pode, ainda, existir um grande número de empresas e profissionais da tecnologia da informação contratados pela organização, ou mesmo terceirizados vinte e quatro horas, sete dias por semana, objetivando assim manter o ambiente e solucionar problemas computacionais. Entenda-se por produtos, os programas de computador, ou seja, softwares. Atualmente os programas de gerenciamento de bancos de dados mais conhecidos no mercado são SQL Server (Microsoft Corporate), Oracle (Oracle Corporation), Sybase (Sybase Inc), IBM DB2, PostgreSQL e MySQL, entre outros. Todos esses produtos exigem conhecimento técnico para sua implantação e administração. Conhecer o negócio da organização é interessante para o profissional de banco de dados, mas não é essencial. As melhorias de desempenho devem ser mantidas durante os trabalhos de otimização (Tuning) e, acima de tudo, não comprometer a aplicação do cliente. Segundo Fanderuff (2003, p. 307) Uma das principais razões de se empregar um SGDB (Sistema Gerenciador de Banco de Dados) em uma empresa é o controle centralizado dos dados. A autora ainda afirma que este controle é de responsabilidade do administrador de banco de dados e que suas principais funções são: Definir a estrutura de armazenamento e a estratégia de acesso. O DBA deve definir como os dados serão armazenados e quais são os acessos mais freqüentes;

14 14 Servir de elo entre os usuários. É função do DBA, garantir a disponibilidade dos dados que os usuários necessitam, reparando ou auxiliando-os na montagem do nível de visão; Definir os controles de segurança e integridade. Definir quem tem acesso às quais porções do banco de dados e criar mecanismos que evitem inconsistências na base de dados; Definir a estratégia de backup e recuperação. É função do DBA definir como e quando os backups do banco de dados serão efetuados e a estratégia a ser adotada para a recuperação de dados em caso de danos ao banco de dados;. Monitorar o desempenho e atender às necessidades de modificações. O DBA deve organizar o sistema de tal modo que se possa obter o melhor desempenho para a empresa. No que tange ao monitoramento do sistema, esta pode ser uma tarefa complexa devido às diversas variáveis envolvidas. Porém, pode-se usar estratégias diferentes para abordar a monitoração e ajustes de desempenho do sistema em áreas específicas - minimizar o tempo de resposta da consulta ou do usuário e maximizar a taxa de transferência é uma das razões para se monitorar um ambiente de uma organização. A cada instante surgem novos recursos e ferramentas para auxiliarem no monitoramento, como Patrol da BMC Software. As tecnologias, bem como os objetivos das organizações evoluíram. A busca por otimização de desempenho de um banco de dados em um ambiente altamente crítico é primordial para esta constante evolução. Ao se falar de

15 15 administração de dados, todos reconhecem o quanto o assunto é abrangente e sua importância para se alcançar uma gestão de informações eficientes nas organizações (Revista SQL Magazine, Edição 20, 2005). Desse modo, estudos de desempenho e otimização, procuram a minimização do tempo de resposta do servidor de banco de dados. Essa minimização influencia na produtividade de trabalho. Todo o sistema que acessa um banco de dados necessita obter respostas em tempo hábil. Alguns SGBD possuem um otimizador e tem como objetivo determinar o melhor modo de implementar a requisição feita, por exemplo, o SQL Server da Microsoft. Assim, é nesse cenário que esse trabalho se posiciona, nas diversas formas de otimização de desempenho dos bancos de dados em ambientes altamente críticos e, mais especificamente, com o SGDB da Microsoft (SQL Server 2000), nos formatos utilizados para a gestão de ambientes críticos, e nos diversos elementos que influenciam o desempenho desses ambientes, bem como a participação do DBA nos resultados das otimizações.

16 Objetivos Objetivo geral Esse trabalho procura analisar o funcionamento de um banco de dados através de técnicas de otimização de desempenho Objetivos específicos Analisar os principais problemas que ocorrem em um banco de dados; Apresentar as melhores práticas para atuar em ambientes altamente críticos, proporcionando melhorias de desempenho conforme as recomendações de profissionais, autores e colunistas conceituados no mercado; Identificar relações que influenciem na maneira de abordar uma ocorrência de baixo desempenho do ambiente. Mais especificamente, considera-se possível a existência de relações entre: usuários, analistas de sistemas, administradores de bancos de dados, fornecedores de equipamentos e softwares, todos aliados aos objetivos da organização; Identificar os recursos que podem ser utilizados para otimização de desempenho, tais como, aplicação de índices, análise de fragmentação dos objetos do banco de dados, gerência de transações e bloqueios, análise do desempenho das consultas, entre outros.

17 Identificação do problema Existe uma pequena quantidade de estudos nesse tema voltado para o mercado brasileiro, principalmente quando se trata de uma abordagem orientada para otimização de desempenho em ambientes críticos. Dentro desse cenário, os fornecedores de serviços, pesquisadores, consultores, empresas usuárias e, principalmente, os responsáveis pelo gerenciamento de TI, enfrentam dificuldades em identificar fatores que sejam importantes para facilitar o entendimento e atuar na otimização de desempenho do ambiente, bem como garantir a interoperabilidade com múltiplas plataformas, aplicações e dispositivos. 1.4 Justificativa para a pesquisa A principal justificativa para a realização deste trabalho é o fato de que os bancos de dados têm assumido uma importância relativamente grande na área de tecnologia de informação. Registra-se o crescente número de organizações que requerem alta disponibilidade, ou os altos valores envolvidos nos seus negócios, ou ainda os novos arranjos que estão se formando para obter melhores desempenhos das aplicações. Os desafios são únicos para as organizações em relação aos seus dados e aos sistemas que gerenciam os mesmos, sendo que estes precisam estar sempre disponíveis para os usuários. Espera-se que, além da

18 18 necessidade de otimização de desempenho em ambientes críticos, muitas outras organizações compreendam a importância desse assunto, até mesmo para continuidade de seus negócios. Para aquelas organizações que não se preocupam com a otimização de desempenho em seus servidores de bancos de dados, os resultados deste trabalho poderão ser úteis como uma guia para conhecimento do processo e cuidados no caso de eventual tuning no banco de dados, principalmente no aspecto de análise do ambiente e melhorias que devem ser implementadas. Para aquelas que constantemente estão buscando melhoria de desempenho seja por causa do seu tipo de negócio, satisfação dos seus clientes, ou mesmo por oportunidades no mercado, os resultados podem ser interessantes, principalmente na parte de aproveitamento de recursos, pois poderão utilizar todo o potencial de seus equipamentos, maximizando a produtividade das pessoas sem gastar mais por isso. Além disso, apesar da existência de vários estudos acadêmicos, grande parte deles concentra-se principalmente na introdução aos conceitos de sistemas de banco de dados em geral, na variedade de aspectos adicionais da tecnologia, como segurança, bancos de dados distribuídos, ou ainda, discute-se a teoria e a prática da utilização dos bancos de dados. Na mídia especializada também é comum a presença de estudos de caso sobre otimização e desempenho de bancos de dados, mas, normalmente, somente casos de sucesso são retratados, com a atenção centrada no aspecto das possíveis melhorias no ambiente.

19 METODOLOGIA Para a realização deste trabalho foi utilizado o SQL Server 2000, que é SGBD da Microsoft. Foram realizados estudos e análises, bem como pesquisas em livros, revistas e sites de fornecedores de equipamentos, softwares e fóruns. Também foram feitas entrevistas com gerentes e consultores de TI, coletas de consultas e desempenho utilizando ferramentas apropriadas. O trabalho se organizará em três blocos distintos: O primeiro descreverá o contexto atual do tema; O segundo abordará a otimização de banco de dados em ambientes altamente críticos; O terceiro descreverá problemas que podem ocorrer em um banco de dados e como solucioná-los.

20 20 2 OTIMIZAÇÃO DE BANCO DE DADOS 2.1 Ambientes altamente críticos Ambientes altamente críticos são aqueles que suportam as atividades de negócio da organização e que, em caso de falhas, paralisam ou prejudicam essas atividades. Nesses ambientes os servidores precisam estar sempre disponíveis, e quando se fala em servidores, existem três itens que estão sempre juntos: desempenho, segurança e disponibilidade. Disponibilidade é o tempo que o servidor fica no ar durante o ano, desta forma, é preciso considerar dois aspectos importantes: prevenção e recuperação de desastre (Disaster Recovery). Prevenção é qualquer coisa que se usa para reduzir o risco de uma catástrofe, sejam pessoas, processos e tecnologias. Em ambientes altamente críticos as melhorias de desempenho fazem parte do contexto de prevenção, que busca estar sempre otimizando as consultas nos bancos de dados e quando existem problemas é preciso saná-los. Antes de atuar nas ocorrências de desempenho, é importante saber corretamente qual é a causa do problema, embora as consultas Transact-SQL (T-SQL) sejam responsáveis por boa parte dos problemas de desempenho das aplicações que utilizam bancos de dados. É importante também ter parâmetros de normalidade bem definidos, pois os usuários reclamam constantemente da lentidão no processamento das operações das aplicações. Os responsáveis pela gestão do negócio da

21 21 organização por sua vez, relatam quedas nos indicadores de produtividade e a enorme insatisfação dos clientes. Quando a organização tem condição de medir estas quedas, a cobrança por uma atuação imediata é inevitável, assim, os profissionais que estão responsáveis por estes ambientes, devem ser capazes de compreender sua importância nestes cenários Erros de aplicabilidade Existe uma dificuldade muito grande no atendimento das ocorrências de baixo desempenho das aplicações, a maioria delas está relacionada à falta de entendimento quanto à forma em que a administração de dados é exercida. Para isto é necessário também entender os erros de aplicabilidade da administração de dados, como afirma (COLUCCI, 2005, p. 7)...sendo um assunto muito pouco abordado em livros e periódicos, acabamos por encontrar muita confusão e conclusões erradas em sua aplicabilidade... O objetivo principal da administração de dados é cuidar do gerenciamento de modelos de dados de uma organização, promovendo sua conceituação, segurança, integridade e compartilhamento. Alguns destes itens podem ser detalhados da seguinte forma: Identificar as necessidades de informações da organização; Retirar da equipe de desenvolvimento a responsabilidade da organização e estruturação dos dados, trabalhando na análise e

22 22 descrição geral de dados, na definição do modelo conceitual, no projeto lógico do banco de dados e, ainda, na análise funcional dos dados; Garantia da validade, da exatidão, da consistência e da disponibilização dos dados; Tomada de medidas preventivas e corretivas para identificação de problemas existentes no modelo de dados da organização; Fornecimento de suporte na compreensão e utilização dos dados à equipe de desenvolvimento; Manutenção dos modelos de informações atualizados. A função da administração de dados em muitas situações é confundida com a da administração de banco de dados, mas na realidade são duas funções bastante distintas (COLUCCI, 2005, p. 6). A Figura 1 apresenta algumas das principais diferenças entre administração de dados e administração de banco de dados: Administração de dados Gerenciamento das estruturas de dados formais da organização. Independe da tecnologia utilizada na organização. Foco é o atendimento ao Negócio da organização Figura 1: AD x DBA Fonte: COLUCCI. SQL Magazine. 2005, p. 7 Administração de banco de dados Gestão do ambiente do gerenciador do banco de dados. Exige conhecimento profundo da tecnologia utilizada na organização. Foco é o desenvolvimento de soluções técnicas no banco de dados para o atendimento dos modelos elaborados ou validados pela administração de dados. Algumas organizações entendem que a administração de dados deve atuar somente de forma indireta, como no estabelecimento de padrões de

23 23 nomenclaturas, deixando a definição das estruturas dos dados por conta da equipe de desenvolvimento de acordo com as suas necessidades. Esta forma de enxergar a administração de dados pode levar ao mesmo caos que ocorreria na sua ausência, com a proliferação de tabelas, redundância de dados e inúmeras inconsistências. É importante deixar claro que, independentemente da administração de dados, ser responsável pela elaboração ou validação do modelo, é ela quem deve ser a responsável pela tradução dos requisitos de informação da organização de acordo com as regras de negócio, promovendo a integração de informações e a não criação de conflitos entre os projetos da organização (COLLUCI, 2005, p. 7). Outro fato importante é a adoção de soluções com regras em banco de dados ao invés de nos códigos. É preciso sempre lembrar que sem um bom modelo de dados não é possível obter sistemas com características mais abertas, isto é, com flexibilidade de aderência a novas regras de negócio. Não se deve esquecer também da necessidade da administração de dados acompanhar todo o processo de expansão desses modelos, seja por novas necessidades ou por manutenções necessárias nos aplicativos. Assim, é vital que a administração de dados participe em conjunto com a equipe de desenvolvimento durante todo o processo, atuando em parceria no desenvolver dos trabalhos, o que leva a ganhos de qualidade e produtividade dos resultados.

24 Métodos e técnicas de otimização Gerenciamento de locks no SQL Server 2000 Dois problemas são bastante comuns em ambientes onde muitos usuários trabalham de forma concorrente: espera (blocking) e deadlocks. Nestes casos, se a resolução ficar por conta do gerenciador, podem ocorrer demoras indesejáveis e grande volume de retrabalho. Estes dois problemas costumam serem confundidos. O primeiro acontece quando um usuário deve aguardar enquanto outro prende recursos que ele precisa. Se dois usuários precisam alterar os dados ao mesmo tempo, enquanto o primeiro atualiza, o segundo aguarda sua vez, já que um dado não pode ser alterado por mais de um usuário ao mesmo tempo. O fato de um usuário esperar não chega a ser um problema, já que decorre da convivência entre vários usuários, ou mais tecnicamente, da concorrência. Mas caso essas esperas comecem a acontecer com muita freqüência e com grandes durações, os usuários passarão a reclamar. Já deadlock resulta em espera mútua sem perspectivas de solução. A Figura 2 mostra um exemplo desta situação. Figura 2 Duas conexões em espera mútua. Fonte: MORELLI. SQL Magazine.2005, p. 19

25 25 Supondo que cada comando dure o mesmo tempo e que, para cada instrução do primeiro usuário ocorra uma do segundo, a primeira conexão entrará em compasso de espera, pois a tabela de alunos encontra-se presa pela segunda conexão. O mesmo acontecerá com a segunda conexão, já que a tabela histórico não está disponível. Este mesmo problema pode ser visualizado desta forma, conforme mostra Figura 3. Comando Conexão Observações Begin transaction 1 Begin transaction 2 Inicia outra transação Update historico... 1 Inicia uma transação explicita. Futuras atualizações provocarão locks enquanto ela não for concluída Update alunos... 2 Bloqueia toda a tabela alunos Select * from alunos Select * from histórico Figura 3 Ocorrência de deadlock Fonte: MORELL. SQL Magazine. 2005, p Como são atualizadas todas as linhas, a tabela Histórico será bloqueada. Nenhuma conexão poderá atualizar esta tabela enquanto a transação não for concluída. Tenta ler a tabela alunos, mas a tabela encontra-se bloqueada pela conexão 2. Tenta ler a tabela histórico, mas a tabela encontra-se bloqueada pela conexão 1. Na transação explícita, cada comando representa uma transação e, caso seja necessário reunir mais de um comando em uma transação, é necessário utilizar a estrutura begin transaction/commit, ou rollback. Enquanto a primeira instrução inicia uma transação de forma explícita, a segunda e a terceira finalizam, uma confirmando as alterações e outra desfazendo-as. Após alguns instantes, o SQL Server identificará o problema e decidirá por desfazer uma das transações envolvidas no conflito. Os critérios para escolha da transação-vítima são norteados pela quantidade de esforço computacional envolvido para desfazê-la. Naturalmente a segunda transação

26 26 exigirá menos trabalho para ser desfeita. A conexão cuja transação tenha sido desfeita receberá o erro mostrado na Figura 4. Figura 4 Mensagem de erro. Fonte: MORELLI. SQL Magazine. 2005, p. 19 O deadlock acima é do tipo cycle, o mais comum. Ainda existe o conversion, mais raro, acontecendo quando duas transações possuindo locks de leitura sobre o mesmo recurso tentam convertê-los, ao mesmo tempo, para lock de gravação (bloqueio exclusivo). Por exemplo, duas conexões que executem ao mesmo tempo, o comando a seguir: UPDATE histórico SET nota = 10 WHERE matricula=1. Ao executar um update com cláusula where ocorre um select implícito para localizar as linhas que devem ser alteradas. Enquanto consultas estiverem acontecendo em paralelo, não há conflitos. Mas quando acontecer a mudança de bloqueio do tipo leitura para o de gravação, ocorrerá o deadlock do tipo cycle, já que uma transação não poderá bloquear para atualização linhas que estejam com bloqueios de leitura causados pela outra transação. O impasse surge quando nenhuma das duas transações consegue obter seu tipo de bloqueio desejado.

27 27 É preciso ressaltar que problemas de espera ou deadlock acontecem entre transações e não entre usuários ou conexões. O SQL Server trata os comandos como transações. Caso seja necessário agrupar mais de um comando em uma transação, deve-se utilizar os comandos begin transaction, commit/rollback. Uma transação em qualquer SGBDR (Sistema Gerenciador de Bancos de Dados Relacional) deve obedecer a quatro propriedades fundamentais reunidas sob o acrônimo ACID (Atomicidade, Consistência, Isolamento e Duração). Como mostrado na Figura 5. Propriedade Atomicidade Consistência Isolamento Significado Os comandos que constituem uma transação devem ser executados com sucesso e sem exceção, isto é, caso um falhe, todos devem ser desfeitos. Uma transação deve iniciar tendo o banco em estado consistente e, ao final, deve aplicar uma transformação que deixe o banco em outro estado consistente. Nenhuma regra de integridade deve ser violada (chaves primárias duplicadas, chaves estrangeiras sem primária relacionada, etc). Em princípio, uma transação não deve ter acesso aos dados manipulados por outra. Excepcionalmente, acontecem leituras (as chamadas leituras sujas), mas nunca atualizações. Duração Se uma transação for concluída com sucesso, terminar por COMMIT (explícito ou não) existe o compromisso de que as atualizações realizadas por ela valham. Mesmo que não tenha sido possível gravar os dados alterados em disco, o SGDBR deve assegurar que isto acontecerá antes que o banco esteja em estado consistente. Figura 5 - Propriedades fundamentais de uma transação. Fonte: MORELLI. SQL Magazine. 2005, p. 20 A propriedade de maior relevância neste caso é a de isolamento. O componente do SQL Server que garante independência às transações chama-se Lock Manager e seu trabalho consiste basicamente em evitar conflitos ou impedir que duas transações com intenções conflitantes entre si

28 28 não recebam exclusividade de acesso sobre o mesmo recurso ao mesmo tempo. O Lock Manager nunca permitirá que uma determinada linha de tabela seja lida por uma transação e gravada por outra ao mesmo tempo. O trabalho desempenhado pelo Lock Manager está intimamente ligado ao nível de isolamento vigente para a sessão onde as transações acontecem. O SQL Server 2000 trabalha com quatro níveis de isolamento: Read Uncommitted: permite leituras sujas (Dirty Reads). Pode-se efetuar leituras em transações que estejam em andamento, permitindo consultas em dados que ainda não foram confirmados por um commit ou canceladas por um rollback. Trata-se do modo mais brando de controle de concorrência. Neste caso, cresce o risco de inconsistência. Read Committed: modo padrão, impede leituras sujas; Repeatable Read: além de evitar leituras sujas, garante a repetição de uma leitura, uma vez lida uma linha, ela não poderá ser alterada por outra transação. Na prática, locks de leitura transformam-se em locks de atualização; Serializable: aumenta ainda mais o isolamento da transação, evitando inserções no conjunto das linhas lidas. As linhas recusadas recebem a denominação genérica de fantasmas e somente poderão ser inseridas uma vez concluída a transação restrita (MORELLI, 2005).

29 Identificação de locks Ativando o Query Analyser e abrindo-se duas conexões, suponha que os comandos da Figura 6 tenham sido executados na primeira conexão. Figura 6 Comandos digitados no Query Analyser Fonte: MORELLI.SQL Magazine. 2005, p. 22. A segunda conexão entrará em espera até que o recurso desejado seja liberado. Isso não aconteceria caso a primeira conexão produzisse um commit ou rollback. Entretanto, por mais atraente que a interface gráfica possa parecer, em algumas situações ela se mostra pouco eficiente; perde-se muito tempo no carregamento e atualização da tela. Por isso, para visualização e acompanhamento de bloqueios torna-se mais ágil trabalhar diretamente no Query Analyzer com comandos Transact-SQL e stored procedures embutidos.

30 Utilizando filegroups para ganho de desempenho e gerenciamento de espaço Filegroups são estruturas lógicas que sustentam os arquivos de dados de um banco de dados. Um banco de dados padrão possui um arquivo de dados e um arquivo de log: o arquivo de dados está associado a um filegroup chamado primary. Pode-se criar outros arquivos de dados assim como outros filegroups. Banco de dados é uma estrutura formada por pelo menos dois arquivos: um para armazenamento de dados (Master Data File, extensão MDF) e outro reservado para o log de transação (Log Data File, extensão LDF). Além dos arquivos.mdf e.ldf, é possível criar outros arquivos para armazenamento de dados. Esses arquivos secundários possuem extensão.ndf, de SecoNdary Data Files e podem ser criados no mesmo filegroup do arquivo.mdf (Primary) ou em outro filegroup. A decisão de utilizar o mesmo filegroup ou criar um novo depende da finalidade do arquivo secundário. Eis algumas situações cuja resolução baseia-se na implementação de filegroups: O arquivo de dados principal atingiu um tamanho que extrapola a capacidade de unidade de fita DLT utilizada no backup. Esse problema pode ser resolvido com a realocação de tabelas em outro filegroup, distribuindo o backup final em partes menores que não ultrapassem a capacidade de uma fita. Nesse caso, deve-se criar outro filegroup para armazenar o arquivo secundário;

31 31 É preciso criar um banco de dados com tamanho inicial de 25 Gb, mas não possui esse espaço em uma única unidade de disco. A distribuição é a seguinte: 20 Gb na unidade C e 15 Gb na unidade D. Crie um master data file com 15 Gb em C e um secondary data file com 10 Gb em D. Os dois arquivos constituirão uma unidade única de gerenciamento do espaço. O arquivo secundário criado na unidade D será visto pelo SQL Server 2000 como uma extensão natural do arquivo primário. Nesses casos, o arquivo secundário deverá ser criado no mesmo filegroup do arquivo que se deseja expandir (Primary); Pode-se melhorar o desempenho de um banco de dados criando índices e tabelas em filegroups distintos, localizados em unidades e controladoras específicas. Se as páginas de dados das tabelas forem armazenadas em uma unidade diferente daquela utilizada para os índices, por exemplo, C e D, pesquisas que utilizam índices serão beneficiadas por leituras executadas em paralelo. Neste caso deve-se criar outro filegroup para armazenar o arquivo secundário (RIBEIRO, 2005) Criando filegroups Ao criar um banco de dados está se originando a unidade primária de gerenciamento primary data file ou filegroup primário. Em um primeiro

32 32 momento, o filegroup primário será formado pelo arquivo.mdf, mas pode-se criar outros arquivos e filegroups Criando um banco de dados no Enterprise Manager Abra o Enterprise Manager, selecione o servidor, clique em databases e, com o botão direito do mouse acionado, escolha New Database. Na guia General digite db_teste para o nome do banco de dados. Mantenha a posição collation name em server default. Para determinar as dimensões, localizações físicas e padrões de crescimento dos arquivos de dados e logs, utiliza-se a guia data files da janela database properties. Estas propriedades podem ser vistas nas Figuras 7 e 8.

33 33 Figura 7 Definindo o nome do banco de dados Fonte: RIBEIRO. SQL Magazine. 2005, p. 54 Figura 8 Localização e tamanho inicial. Fonte: RIBEIRO. SQL Magazine. 2005, p. 54

34 34 O diagrama mostrado na Figura 9 apresenta as informações necessárias para a criação do banco de dados. Não é necessário obedecer esta ordem de preenchimento, entretanto é importante que se tenha esta visão durante este processo. Location: Localização física do arquivo. Initial Size (MB): Tamanho inicial do arquivo expresso em megabytes. Filegroup: Indicação do filegroup. Nesse momento primary é a única opção disponível. Automatically grow file: Para que o arquivo de dados possa expandir automaticamente, essa opção deverá estar assinalada. Regra para crescimento: Para expansões físicas, com alocações de espaço pré-determinadas, selecione In megabyte e informe a quantidade. Para crescimentos variáveis, define-se um percentual para ser aplicado sobre o espaço atualmente utilizado em By Percent Tamanho máximo: Se o arquivo não possuir limitação de crescimento, selecione Unrestricted file growth, caso contrário defina o tamanho máximo em Restrict file growth (MB). Figura 9 Etapas necessárias para criação do banco de dados.

35 35 O nome lógico do arquivo de dados existe para possibilitar sua manipulação independente do meio físico. Em um dado momento, na troca do servidor, por exemplo, pode ser interessante restaurar o arquivo de dados em outra localidade. Para isso basta informar no momento do restore que o arquivo de nome db_teste (nome lógico), criado originalmente em C: SQLBs\db_teste_Data M (nome físico) deverá ser restaurado em D\DMF\db_teste_Data.MDF Cenários para utilização de arquivos secundários Se estiver em uso o banco de dados db_teste para efetuar inserção em massa de dados quando o processo é abortado com a mensagem de encher de dados, conforme mostra a Figura 10. Figura 10 Mensagem de estouro de disco. Fonte: RIBEIRO. SQL Magazine. 2005, p. 54. Prontamente deve ser instalada uma unidade de disco para que o banco de dados consiga se expandir e concluir a operação. Mas instalar a nova unidade não é suficiente porque o SQL Server 2000 não irá considerá-la no processo de expansão. Deve ser criado um novo arquivo de dados nessa

36 36 unidade direcionando-o para o mesmo filegroup que se deseja expandir. Nessa condição o novo arquivo passa a ser uma extensão do filegroup primário, e será considerado para fins de crescimento automático do banco de dados. Para criar o arquivo db_teste_data 2 NDF na unidade D, no diretório\sqldbs através do Enterprise Manager, selecione o guia Data Files nas propriedades do banco de dados. O Comando T-SQL utilizado nos bastidores do Enterprise Manager é o ALTER DATABASE. Para fins de otimização, deve-se criar o arquivo secundário em uma unidade de disco e filegroup diferentes daquelas utilizadas pelo filegroup principal. Só assim os processos de busca nas tabelas e índices poderão ser realizados por threads executados em paralelos. Cria-se um arquivo secundário em outro filegroup (secondary), mas isso não é tudo. É necessário transferir os índices que se encontram no filegroup primary para o secondary. Não existe um método automático para mover objetos entre filegroups. Será necessário excluí-los e recriá-los novamente no novo filegroup Utilizando índices na otimização de queries no SQL Server Ao escrever uma consulta que envolva join informa-se ao otimizador quais são as colunas que se deseja visualizar e qual a lógica que deve ser

37 37 empregada ao relacionamento entre as unidades. Se não utilizar hints 1, não se induz o otimizador a utilizar um plano de nested loop 2 quando a opção inicial seria utilizar um hash join. Ao escrever uma query não informa-se como o otimizador deverá processar a query, fica a seu cargo a escolha do melhor plano O processamento físico de um join Através de informações estatísticas sobre o volume de dados que a query irá movimentar, o otimizador do SQL Server 2000 irá escolher um dentre os três planos a seguir para processar o join: nested loop, merger ou hash join. A escolha do plano independe do tipo de join utilizado (inner, left, right, full ou cross join) e será feita pelo otimizador no momento da compilação da query. 1 Os hints permitem modificar o comportamento default do SQL Server sem precisar mudar o isolation level, que mudaria todos os comandos na sessão corrente. São utilizados nos próprios comandos DML. O SQL Server pode bloquear se necessário um campo, um registro, um conjunto de registros, uma tabela, uma página de 8k, um extended que são 8 páginas de 8k ou o banco de dados inteiro, tudo isto depende de como se utiliza as queries. Para verificar os locks e tipos de locks utilize a SP_LOCK. 2 O nested loop join será o modelo utilizado na resolução de joins envolvendo um pequeno número de linhas. Os filtros nesse modelo são bastante seletivos, amparados por índices eficientes.

38 Como funciona o hash join O hash join, representado graficamente pelo símbolo será o modelo selecionado se não existirem índices adequados para a pesquisa e se o custo de leitura for alto (as tabelas possuem muitas linhas, exigindo um elevado volume de leituras para processar o join). Nessas circunstâncias, o otimizador precisará de um modelo bastante eficiente para efetuar ordenações e concluir o join. Por isso utiliza um algoritmo de hash para codificar as colunas envolvidas no join e estabelecer a combinação. As etapas utilizadas pelo otimizador no processamento de um hash join são: Inicia-se uma análise nas tabelas participantes do join. Aquela que possuir o menor número de linhas (ou a que possuir filtros e índices adequados para reduzir o montante de linhas selecionáveis) será escolhida num primeiro momento; A tabela selecionada que passa a chamar build input - será submetida a um processo de leitura, de modo que a seja gerada uma chave hash para a linha recuperada. As colunas que participam da geração da chave hash são aquelas presentes na igualdade do join (cláusula on). Após a geração, as chaves hash permanecerão numa área de buffer de memória conhecida por hash bucket. A fase de build (construção) termina por aqui; Inicia-se a fase de processamento da segunda tabela (aquela que possui mais linhas), conhecida por probe input. Todas as linhas da probe

39 39 input serão lidas; para cada linha recuperada será gerado um novo código hash para as colunas participantes do join. O código hash gerado nesse momento será comparado com os códigos presentes nos hash buckets, calculados na fase anterior. Se a busca for bem sucedida (ocorreu um match), as linhas das duas tabelas possuem relacionamento e serão listadas no output do join. A build input e os hash buchets são carregados integralmente para a memória; esse tipo de hash join é conhecido por in-memory hash join. O que acontece algumas vezes é que a build input é tão grande que excede a capacidade de memória disponível, forçando o otimizador a segmentar o processo de carga. Para tratar essa situação, existem dois outros modelos de hash join: o grace hash e o recursive hash join. Considere o fato de não existir espaço suficiente em memória para processamento do hash join um problema cuja resolução seja complexa. Uma boa técnica para resolver problemas complexos é quebrá-lo em partes: partes menores simplificam a lógica, são mais fáceis de resolver e, conseqüentemente, consomem menos recursos. Quando a probe input e os hash buckets não podem ser carregados integralmente em memória por questões de limitação, ocorre uma divisão de carga e, conseqüentemente, de processamento. A cada execução parcial são carregadas e comparadas um conjunto reduzido de linhas. O resultado final é a união de todas as etapas. Esse modelo de hash join é conhecido por grace hash join. A opção de quebra de um problema complexo em unidades autônomas, o problema é que, dado o tamanho da build input (30 Gb), foram geradas uma

40 40 infinidade de pequenos trechos da tabela para processamento, que seriam inviáveis num processamento assíncrono (seqüencial). Dado esse fato, o otimizador SQL Server 2000 optará pelo processamento assíncrono, controlando numa mesma thread a geração simultânea de várias partições da probe input. Essa última variante de hash join é conhecida por recursive hash join. Analisando o desempenho dos três modelos, o in-memory hash join, é o mais eficiente, seguido pelo grace hash join e recursive hash join. Entretanto, nem sempre o otimizador consegue avaliar com precisão o tipo de hash join que deve ser utilizado antes de executar a query. Nesses casos, o processamento inicia-se com o in-memory hash join. Havendo escassez de recursos ocorre a migração gradual para o grace join e, em última instância, o recursive hash join poderá ser selecionado Utilizando índices na otimização de queries no SQL Server Criar um índice 3 não é uma tarefa simples: requer conhecimento das queries em execução e dos diferentes tipos de índice disponíveis. Índices no SQL Server 2000 são construídos sobre estruturas denominadas árvores balanceadas (B-Tree). A idéia desse algoritmo é fornecer um modelo de pesquisa que agilize o processo de busca, efetuando um 3 Índices são estruturas que possuem algoritmos otimizados para acessar dados. O corpo de um índice é formado pelas colunas das tabelas cujos dados se deseja classificar seguido de uma referência conhecida como ponteiro, que serve para localizar a chave na página de dados da tabela.

41 41 número reduzido de leituras nas páginas do índice para que se obtenha a localização da chave pesquisada. Para se fazer uma busca num livro de SQL Server, seria assim: Localizar o índice remissivo no final do livro; Procurar o bloco de palavras que iniciam pela letra A ; Efetuar uma leitura seqüencial neste bloco até localizar a palavra desejada. As páginas do livro que contêm referências à palavra procurada encontram-se listadas ao lado da palavra. O processo tem início numa página-mestre conhecida como root page, procurando pela maior chave da página cujo valor é menor ou igual à palavra pesquisada. A primeira palavra pesquisada cujo código alfabético é menor ou igual à ADMIN é ACESSO, portanto segue-se nessa direção até a página de número 2, localizada num nível intermediário conhecido por non leaf level. A busca é finalizada ao nível folha ou leaf level page, onde se encontra a referência para a página de dados onde se localiza a palavra Tipos de índices existentes no SQL Server 2000 Existem dois tipos básicos de índice: cluster e não-cluster. Índices cluster impõem uma organização na própria página de dados da tabela, fazendo com que permaneçam classificadas de acordo com a composição de sua chave. Pode-se afirmar que o leaf level de índice cluster representa a

42 42 própria página de dados da tabela, descartando a utilização de ponteiros para pagina de dados. Já índices não-cluster possuem estrutura própria, mantendo-se vinculados às páginas de dados pela utilização de ponteiros. Índice cluster O leaf level da árvore B-Tree é a própria página de dados da tabela, não existe a figura do ponteiro, responsável por ligar a linha do índice com a linha da página de dados da tabela. Índice não-cluster As linhas do leaf level da árvore B-Tree possuem ponteiros para as páginas de dados. Em heaps, esse ponteiro é representado pelo Rowld (Id do FileGroup + Id da Página + Id da Linha). Em tabelas clusterizadas, o ponteiro do índice não cluster é a própria chave do índice cluster. Pode-se criar somente um índice cluster por tabela. Pode-se criar até 249 índices não-cluster por tabela. Indicado para pesquisas por range; as páginas de dados apresentam-se ordenadas e fisicamente próximas, sendo bastante eficientes em processos de leitura seqüenciais. Indicado para pesquisas pontuais (retornam poucas linhas). Pesquisas por range apresentam alto custo de I/0 em função do processo de busca da página de dados a partir do ponteiro do índice (processo conhecido por bookmark lookup ). Figura 11 Principais diferenças entre índices cluster e não-cluster Fonte: RIBEIRO. SQL Magazine. 2004, p. 7. Tabelas sem índice cluster são conhecidas por heaps e para listá-las em um banco de dados, basta selecionar as entradas em sysindexes para indid=0. O termo clustered index scan é utilizado para especificar varreduras seqüenciais nas páginas de dados de uma tabela que possui índice cluster. Já table scan é utilizado para especificar varreduras seqüenciais nas páginas de dados de heaps.

43 43 Índices não-cluster precisam de ponteiros para ligar a linha do índice com a correspondente linha da página de dados da tabela. Quando ocorre um page-split 4, metade das linhas da página objeto do comando insert são transferidas para uma nova página. Ao se criar um índice com a opção create unique não será permitida duplicidades, uma constraint unique é utilizada para evitar a duplicidade da(s) coluna(s) a ela associada. Devem estar claros os objetivos entre a criação de uma constraint unique e um índice unique. Índices são fundamentalmente utilizados para otimizar o desempenho de queries. O fill factor indica o percentual do preenchimento das páginas do índice no momento de sua criação. Um fator de preenchimento de 80% informa que será utilizado somente 80% da capacidade da página para ocupação das linhas do índice, deixando 20% de espaço livre. O fill factor ideal de um índice será aquele que causar menor fragmentação para um determinado período de análise. Por exemplo, o índice Orders.Customerld da tabela Orders do banco de dados Northwind, seria interessante criar páginas com algum espaço livre para diminuir o volume de page-splits, pois os pedidos da tabela Orders são inseridos com clientes aleatórios. Já no índice Orders.OrderDate, fill factor degradaria o desempenho, já que os pedidos são inseridos em ordem crescente de data. Os fragmentos de página só acontecem quando precisa inserir linhas em páginas totalmente preenchidas, forçando uma divisão de página para acomodar a nova linha. O fill factor atua somente no momento da 4 PageSplit é o nome do processo que ocorre quando uma página totalmente preenchida é dividida em duas para acomodar uma inserção.

44 44 criação ou restauração do índice, não sendo mantido durante os processos posteriores de atualização do índice. O fill factor é uma opção avançada em otimização, portanto deve ser utilizada somente naqueles índices onde se observou excessiva fragmentação. Utilizar essa opção de uma maneira genérica para todos os índices do banco de dados não é uma boa prática. O fill factor foi criado para minimizar o efeito de page-splits; o fato de um índice apresentar um número maior ou menor de quebras de páginas irá depender da composição do índice e do volume de atualizações. Quando se estabelece inicialmente um percentual para o fill factor sem monitorar o crescimento da tabela com o comando DBCC SHOWCONTIG, pode-se incorrer em dois erros: Superestimar o volume de quebras de páginas causando uma fragmentação desnecessária; Subestimar o volume de quebras e a tabela continuar com número excessivo de page-splits. O fill factor atua somente no leaf level do índice. Pad index; assinalando essa opção, o percentual definido em fill factor será propagado para os níveis intermediários da árvore B-Tree. O pad index pode ser utilizado como último recurso de otimização, no momento em que se chegou ao índice de fill factor que julga ideal para a tabela analisada. Se excluir o índice cluster numa tabela que possui também índices nãocluster, todos os índices não-clusters serão reconstruídos, pois o ponteiro desses índices para a página de dados passará ser o RowID. Se criar depois o índice cluster, todos os índices não-cluster serão novamente reconstruídos,

45 45 pois o ponteiro desses índices deverá ser modificado para a chave do índice cluster. No caso de ser necessário efetuar uma alteração na composição da chave de um índice cluster, para evitar que os índices não cluster sejam reconstruídos duas vezes, utiliza-se a cláusula DROP_EXISTING para que o rebuild nos índices seja efetuado somente uma vez. A cláusula DROP_EXISTING é aplicável somente sobre índices. Se sua primary key também é um índice cluster, esse comando não poderá ser utilizado. Para alterar o índice cluster ix_ind_cluster (col_a) para ix_ind_cluster (col_a,col_b) na tabela de nome tab_ x utilize: Figura 12 Recriando um índice cluster Fonte: RIBEIRO. SQL Magazine. 2004, p. 10 Só se pode executar um create index sobre um índice já existente se utilizar à cláusula DROP_EXISTING, caso contrário, acontecerá um erro. Se o TempDB 5 estiver localizado num conjunto de discos separados do filegroup do banco de dados, essa opção deverá ser utilizada para ganho de 5 O banco de dados TempDB é a área de trabalho do SQL Server, e é através dela que o SQL Server cria tabelas de trabalho para ordenação de dados, hash plans, agrupamentos, cursores, variáveis de tabela e tabelas temporárias, entre outros.

46 46 desempenho na reconstrução do índice. No processo de rebuild são utilizadas áreas temporárias de armazenamento. Se o TempDB estiver numa área separada, estará viabilizando processos de leitura e escrita num conjunto diferente de discos, melhorando assim o desempenho na reconstrução. Uma query possui cobertura de um índice quando todas as colunas listadas no comando select estão presentes no corpo do índice, não havendo necessidade de acesso às páginas de dados para resgate de colunas adicionais. Índices pouco seletivos, quando criados com o objetivo de efetuar cobertura de queries tornam-se uma alternativa muito interessante para o otimizador, pois elimina por completo processos de bookmark lookup, considerados o Calcanhar de Aquiles de índices não-cluster. A função CheckSum pode ser utilizada para criar chaves hash 6 em oposição a índices criados sob colunas char ou varchar. A vantagem de trabalhar com índices hash é a redução no tamanho da chave do índice, que poderá ser substituído por um índice criado sobre uma coluna com data-type varchar (100) por um valor numérico (100 bytes x 4 bytes). Diminuindo o tamanho da chave aumenta-se a densidade de linhas por página de índice, induzindo melhorias de desempenho. Índices hash não podem ser utilizados em pesquisas que utilizem comparações não igualitárias entre strings. Quanto mais compacto o tamanho da chave do índice, melhor. Na medida em que se aumenta o número de linhas na página do índice, está sendo otimizados processos de leitura. 6 Uma chave hash é utilizada como uma boa opção de desempenho na construção de um índice, sendo utilizada na substituição de longas chaves alfanuméricas por um único número inteiro, gerado a partir de funções matemáticas.

47 47 O otimizador pode trabalhar com intersecção de índices, cruzando informações de dois índices existentes para resolver uma query. Rotinas de reindexação não corrigem fragmentação em heap, seria necessário copiar seus dados para uma tabela temporária, truncar a tabela original e recopiar os dados da tabela temporária para a tabela principal. Para desfragmentar tabelas com índices cluster basta reindexá-las com DBCC DBReindex ou desfragmentá-las com DBCC IndexDefrag. Em bases destinadas às consultas, deve reservar o índice cluster para colunas que são acessadas por range. Se a base de dados é utilizada tanto para operações on-line como para consultas diversas, e preciso optar: se for interessante privilegiar os processos on-line, optar por clusterizar as PK s. Se for interessante privilegiar os relatórios, reservar o índice cluster para aquelas colunas que são pesquisadas com cláusula between, order by, etc. Colunas com alto grau de duplicidades não são uma boa escolha para índices não-cluster em função do alto custo dos processos de bookmark lookup. Como regra geral para queries sem cobertura de índices pode-se considerar o seguinte: Percentual de linhas retornáveis na query Seletividade Utilização do índice < 5% Alta O índice será utilizado Entre 5% e 10% Média O índice possui menor chance de utilização. É bem provável que o índice não seja > 10% Baixa utilizado. Figura 13 Utilizando índices na otimização de queries no SQL Server Fonte: RIBEIRO. SQL Magazine. 2004, p. 14

48 48 Não se deve criar índices em tabelas com pequeno número de linhas. Uma tabela com 100 linhas não precisaria de outros índices além daqueles já fornecidos pela primary key. Criar rotinas de reindexação periódicas, pois são fundamentais para garantia de desempenho. Ao criar índices compostos, manter a coluna mais seletiva no primeiro nível da chave. Como as estatísticas são criadas para o primeiro elemento de índices compostos, mantendo a coluna mais seletiva no primeiro plano, estará agilizando o trabalho do otimizador para a escolha desse índice. Não deve ser criados índices em duplicidade. Deve-se executar a stored procedure sp_helpindex para confirmação dos índices existentes. Índices devem ser criados para agilizar o desempenho do sistema como um todo. Otimizar um processo pode significar eliminar um índice ineficiente, implementar novos filtros ou alterar os parâmetros da cláusula join das queries em execução.

49 49 3 PROBLEMAS QUE PODEM OCORRER EM UM BANCO DE DADOS E COMO SOLUCIONÁ-LOS 3.1 Heap tables Os processos de desfragmentação existentes no SQL Server 2000 foram criados para desfragmentar índices. Como as páginas de dados de uma heap não são regidas por um índice, não é possível desfragmentar uma heap utilizando os comandos convencionais DBCC DBReindex e IndexDefrag. Heaps fragmentadas são indicadoras de mau desempenho, e a simples criação de um índice cluster poderia resolver o problema. Um índice cluster atua diretamente sobre as páginas de dados da tabela, dispensando a utilização de ponteiros, como acontece nos índices convencionais. Em tabelas que possuem índice cluster, a gravação das linhas nas páginas de dados obedece à classificação da chave do índice. Em oposição às tabelas com índice cluster, estão as heap tables 7. Heap é sinônimo de aleatório, desordenado. Heap tables são tabelas cujas linhas são gravadas nas páginas de dados sem que exista uma ordenação pré-estabelecida, levando-se em conta a regra de inserir onde existe espaço, através de consulta nas páginas PFS 8. 7 Tabelas que não possuem índice cluster. 8 PFS, anacrônico de Page Free Space, é uma página especial destinada a controlar o espaço livre nas páginas do database. Uma PFS controla páginas; cada byte da página PFS pode assumir quatro estados: totalmente vazio, até 50% de utilização, de 51 a 80% a 95% e de 96 a 100%. O controle de páginas PFS é utilizado por heaps ou por tabelas que possuem colunas ntext, text ou image.

50 50 Se comparar as páginas de dados de uma tabela de nomes com e sem índice cluster definido após uma série de inserções, atualizações e exclusões visualizam-se os cenários apresentados nas figuras a seguir: Figura 14 - Páginas de dados da tabela de nomes com índice cluster. Fonte RIBEIRO. SQL Magazine. 2004, p. 39. Figura 15 - Páginas de dados da tabela sem índice cluster (Heap) Fonte - RIBEIRO. SQL Magazine. 2004, p. 39. Após a reindexação das tabelas, o resultado seria o seguinte: Na tabela com índice cluster, a desfragmentação deixou-a mais enxuta, liberando as páginas 3 e 4, e condensando os dados nas páginas 1 e 2. Na heap, não houve nenhuma alteração, continuando a ocupar 4 páginas, sem qualquer tipo de desfragmentação. Figura 16 Páginas de dados com índice cluster após reindexação Fonte - RIBEIRO. SQL Magazine. 2004, p. 39.

51 51 Figura 17 - Páginas de dados sem índice cluster após reindexação Fonte - RIBEIRO. SQL Magazine. 2004, p. 39. Pode-se concluir que um processo de reindexação irá reorganizar os índices, eliminando a fragmentação. Páginas de dados de tabelas que possuem índice cluster serão automaticamente desfragmentadas, em função da característica peculiar deste índice. Páginas de dados em heaps permanecerão exatamente como estão, totalmente fragmentadas. Para reduzir a fragmentação de uma heap, é necessário mover os dados de uma área temporária, excluir a tabela, recriá-la novamente e re-inserir os dados. As heap tables são devoradoras de espaço em disco, principalmente se os dados sofrerem muitas remoções. Espaços subutilizados em páginas de dados são sinônimos de mau desempenho, pois força o sistema de discos a efetuar um maior número de leituras. A solução é identificar heaps no database e proceder à criação de índices cluster adequados. As tabelas com grande número de linhas estão mais sujeitas aos problemas de desempenho. No caso da tabela heap, o problema pode estar relacionado à fragmentação. A solução é escolher uma chave adequada e criar

52 52 um índice cluster para a tabela. Caso não exista uma chave adequada, uma coluna identity 9 poderá ser criada para esse fim. 3.2 Criando uma trace para análise de desempenho de um servidor SQL Server Identificando stored procedures e batchs com baixo desempenho A demora excessiva para conclusão de consultas, deadlocks em demasia e problemas com timeout nas aplicações caracteriza um servidor com sérios problemas de desempenho. Determina-se os processos mais demorados, cronometrando a execução de batchs 10 e stored produceres (sp s) nesse servidor Análise de outros objetos relacionados ao desempenho O SQL Profiler disponibiliza uma infinidade de combinações entre eventos, colunas e filtros. Os eventos que devem ser selecionados dependem do que se quer exatamente analisar: os filtros informados também devem estar de acordo com a informação obtida em cada evento. 9 Coluna da tabela definida como Identity é auto-incrementável, ou seja, um campo seqüencial gerado automaticamente a cada inserção. 10 A denominação batchs é utilizada para especificar um grupo de um ou mais comandos Transact-SQL enviados de uma só vez para o servidor SQL Server.

53 53 Um erro bastante comum ao se criar as traces advém-se do fato de ligar filtros em eventos que não tratam essa informação. A filtragem da coluna CPU para o evento Locks/Lock: DeadLock não produziria o resultado esperado, pois Locks/Lock: DeadLock não trabalha essa informação, a Figura 18 mostra a relação entre Event class x Data column. Figura 18 Colunas atualizadas para cada evento Fonte - RIBEIRO. SQL Magazine. 2004, p Identificando cursores criados no servidor Cursores oneram o desempenho, pois não conseguem desfrutar da grande vantagem dos SGDBs: trabalhar o dado orientado a bloco. A linguagem SQL foi criada com comandos que efetuam manipulações em lote: podem-se selecionar, inserir e excluir vários registros com um único comando. Quando se utiliza cursores, está se fazendo uma inversão nessa regra: seleciona-se uma série de linhas para serem trabalhadas individualmente. Existem situações onde a utilização de cursores se torna inevitável, quer pela complexidade do negócio ou mesmo quando a aplicação precisa apresentar um RecordSet para navegação na tela do cliente. Algumas regras na utilização de cursores devem ser observadas:

54 54 Transformar atualizações realizadas com cursores, em processos que utilizem somente os comandos select, insert, update e delete. Trabalhar com cursores é uma opção tentadora que deve ser evitada. Vale a pena gastar alguns minutos a mais numa solução que utilize alguns selects. Criar uma tabela temporária e depois faça uma atualização em lotes; Utilizar somente cursores do lado cliente nas aplicações. Manter cursores ativos no servidor é uma prática que deve ser evitada: cursores devem ser mantidos na aplicação cliente para não sobrecarregar a memória do servidor. Existem dois eventos que controlam a abertura e fechamento de cursores no servidor: Cursors: CursorOpen e CursorsClose. Quando se deparar com um desses eventos, deve-se pedir para o desenvolvedor mudar a localização do cursor para o cliente. Na Figura 19 pode-se visualizar um cursor de servidor. Figura 19 Trace capturando um cursor de servidor Fonte - RIBEIRO. SQL Magazine. 2004, p. 41 Com uma pequena alteração em CursorLocation no código escrito em Visual Basic, como mostra a Figura 20.

55 55 Dim con As New ADODB.Connection con.open Provider=SQLOLEDB.1; Integrated Security=SSPI; Persist Infor=False;Initial Catalog=northwind;Data Source=srvteste Dim rs As New ADODB.Recordset rs.cursorlocation = aduseserver substituir por aduseclient rs.open Select * from northwind.dbo.employees, con, adopenstatic, adlockoptimistic End Sub Figura 20 Exemplo de conexão - código escrito em Visual Basic Fonte - RIBEIRO. SQL Magazine. 2004, p. 40 Obtém-se o resultado apresentado na Figura 21. Figura 21 Resultado obtido com a alteração do CursorLocation Fonte - RIBEIRO. SQL Magazine. 2004, p Rastreando processos envolvidos em Deadlocks Deadlock é uma causa freqüente de mau desempenho, pois requer que a conexão escolhida como vítima e, cuja execução de comandos foi abortada, envie novamente o comando para execução. O SQL Profiler possui dois eventos que ajudam a rastrear Deadlocks: Lock:DeadLock informa a ocorrência do erro #1205 associado ao deadlock e Lock:DeadLockChain que irá apontar o spid das conexões envolvidas no deadlock. A Figura 22 ilustra a ocorrência de um deadlock:

56 56 Figura 22 Utilizando o SQL Profiler no rastreamento de Deadlocks Fonte - RIBEIRO. SQL Magazine. 2004, p. 41 As conexões envolvidas são as 62 e 66 (Lock:DeadLockChain); os comandos responsáveis pelo conflito de recursos que originou o deadlock são os dois últimos updates. A ação corretiva nesse caso seria eliminar a cláusula holdlock 11 existente nos dois selects iniciais da trace Evitando CacheMiss Quando se aciona uma stored procedure (sp), seu plano de execução fica em memória. Nesse plano são armazenadas instruções como a query deverá ser executada: que índices utilizar, o tipo de join selecionado, etc. Antes de criar um plano de execução novo, o otimizador faz uma busca na área de cachê destinada as procedures procurando por um plano pré-existente. Se a busca for bem sucedida, o plano será aproveitado e a sp será executada de acordo com ele. 11 Holdlock é um tipo de hint que bloqueia os registros até o fim de uma transação.

57 57 Existem algumas situações em que o otimizador é obrigado a fazer várias tentativas até encontrar o código pré-compilado. Cada uma dessas tentativas mal sucedidas dispara um evento conhecido por SP:CacheMiss, que pode ser evitado seguindo as seguintes orientações: Nunca utilizar o prefixo sp_ para nomear sp s quando o otimizador encontra uma stored procedure com o prefixo sp_, sua execução é desencadeada no banco de dados master. Como a sp não existe nesse banco de dados, seu plano de execução não é encontrado na primeira tentativa, disparando um evento SP:CacheMiss. O processo de execução prossegue procurando a sp no banco de dados local, onde o código compilado é encontrado e a sp é executada; Executar stored procedures qualificando seu dono (owner). Pode haver objetos com o mesmo nome, mas com owners diferentes. Se houver usuários que não possuem privilégio de dbo e isso deve ser a regra é necessário especificar o owner da sp no momento da chamada. Trocar exec stp_teste por exec dbo.stp_teste Evitando recompilações Compilação é o processo utilizado pelo otimizador para gerar o plano de execução de uma sp. A compilação ocorre: Quando a sp é executada pela primeira vez;

58 58 Quando o servidor SQL Server 2000 é reinicializado (stop/start no serviço); Se utilizar-se a cláusula with recompile na criação da sp; Quando intercala-se comandos de criação de objetos (Data Definition Language ou DDL) com comandos de manipulação (Data Manipulation Languagem ou DML). Um plano de execução é gerado antes de uma seqüência de comandos ser executada (no caso de uma procedure, o plano de execução é gerado antes da procedure ser disparada). Nesse plano, são determinados os meios de acesso às tabelas baseados nos índices existentes. Se no código de uma stored procedure ou batch se cria um índice na linha 10 e efetua-se um select nessa mesma tabela na linha 11, o índice criado não será considerado no processo de otimização, pois ele passará a existir somente quando a procedure for executada (o plano é gerado antes da execução da procedure). Numa situação dessas, o otimizador força uma compilação adicional da query após a criação do índice, de modo que o select contido na linha 11 possa se beneficiar do índice recém-criado; Quando se altera o estado dos comandos ANSI_DEFAULTS, ANSI_NULLS, ANSI_WARNINGS e CONCAT_NULL_YIELDS_NULL, deixando-os em desacordo com a sessão responsável pela criação da sp. Executar uma mesma query com ANSI_NULLS ligado (ON) e desligado (OFF) pode acarretar em resultados diferentes. Quando o otimizador se depara com alteração dessas variáveis no decorrer da

59 59 execução da sp, então o plano de execução deve ser reavaliado, solicitando uma nova compilação. A Figura 23 faz um breve comentário sobre as três modalidades de execução de stored procedure. Comando executado CacheMiss? Motivo exec dbo.stp_teste Não A sp foi executada qualificando-se o owner dbo. Como o usuário UserSQLMag não pertence ao grupo dbo, a sp é executada sem sucesso para: exec stp_teste Sim exec UserSQLMag.stp_Teste Então, é gerado um CacheMiss. Na segunda tentativa de execução com usuário dbo, ocorre o acerto para: exec dbo.stp_teste exec stp_teste Sim A sp foi procurada sem sucesso no banco de dados master para dbo (primeiro CacheMiss) e depois no banco NorthWind para UserSQLMag (segundo CacheMiss). Na última execução no banco Northwind para dbo ocorre o acerto. Figura 23 Comentários sobre as três modalidades de execução Fonte: RIBEIRO. SQL Magazine. 2004, p. 42 A compilação ocupa um tempo precioso quando realizada no momento da execução da stored procedure. A Figura 24 ilustra algumas stored procedures que foram modificadas para inibir compilações. Código original 1)CREATE PROC stp_teste_rec AS CREATE TABLE #X (codigo INT, descricao VARCHAR(10)) DDL CREATE INDEX ix_x ON #X (codigo) DDL INSERT INTO #X SELECT orderid, xxx FROM orders DML CREATE INDEX ix_x2 ON #X (descricao) DDL SELECT * FROM #X - DML RETURN Trocar por 2) CREATE PROC stp_teste_semrec AS - Primeira parte: grupo de commandos DDL CREATE TABLE #X (codigo INT, descricao VARCHAR(10)) CREATE INDEX ix_x ON #X (codigo) CREATE INDEX ix_x2 ON #X (descricao) - Segunda parte: grupo de commandos DML INSERT INTO #X SELECT orderid, xxx FROM orders SELECT * FROM #X RETURN 3)CREATE PROC stp_teste_rec2 AS SET ANSI_NULLS OFF SELECT TOP 10 * FROM ORDERS 4) CREATE PROC stp_teste_semrec2 AS SELECT TOP 10 * FROM ORDERS Figura 24 Alterações no código das sp s que evitam recompilações Fonte: RIBEIRO. SQL Magazine. 2004, p. 43

60 60 O evento disparado quando acontece uma recompilação é SP:Recompile. A Figura 25 lista as execuções no SQL Profiler antes e depois das alterações sugeridas na figura anterior. Figura 25 Visualizando recompilações com o evento SP:Recompile Fonte: RIBEIRO. SQL Magazine. 2004, p. 43 Quando um índice é criado externamente a uma sp, para melhorar o desempenho de uma query contida na procedure, a geração de um novo plano não acontece de maneira automática, deve-se forçar a recompilação com o comando sp_recompile <nome-da sp >.

61 Confirmando TCP/IP como protocolo de conexão Deve se utilizar Security Audit: Audit Login para confirmar se o TCP/IP é o protocolo padrão das conexões, conforme mostra Figura 26. Figura 26 Evento Audit Login para confirmar o protocolo TCP/IP como padrão Fonte: RIBEIRO. SQL Magazine. 2004, p. 43 Até a versão 2.6 do MDAC 12, o protocolo default de conexão era o Named Pipes, que não possui desempenho tão bom quanto o TCP/IP. Portanto, se for localizada alguma sessão com protocolo Named Pipes, deve seguir até a estação cliente e verificar o SQL Server Client Network Utility. 12 MDAC é o acrônimo de Microsoft Data Access Components; é o componente responsável pela conexão do cliente com o servidor SQL Server.

62 Identificando erros O SQL Profiler possui uma classe chamada Errors and Warnings que possui dois eventos interessantes: Exception é indicado para capturar mensagens que aparecem nas aplicações cliente tais como violação de Foreign Key (FK), violação de Primary Key (PK), divisão por zero, etc; Missing Column Statistics que sinalizará colunas sem estatísticas de distribuição, que poderiam ser úteis para o otimizador no processamento da consulta que estiver sendo executada, conforme pode se observar na Figura 27. Figura 27 Identificando erros e falta de estatísticas Fonte: RIBEIRO. SQL Magazine. 2004, p. 43 Estatísticas desatualizadas acarretam em planos de execução ineficientes, portanto necessitam de atualização.

63 Como agendar uma trace Para gerar uma trace de um processo com problemas de desempenho que roda somente nas madrugadas de domingo, por exemplo, gera-se um script da trace. A Figura 28 mostra os caminhos para se gerar um script trace. Figura 28 Gerando script dos comandos T-SQL necessários para a trace Fonte: RIBEIRO. SQL Magazine. 2004, p. 45 Agendamentos de processos no SQL Server 2000 são efetuados através da criação de jobs. Para criar um job no Enterprise Manager, deve seguir o procedimento definido na Figura 29. Figura 29 Criando um job a partir do Enterprise Manager Fonte: RIBEIRO. SQL Magazine. 2004, p. 45

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 Transações Ambiente com SGBD Distribuído Transações

Leia mais

Boas Práticas para Otimização de Consultas a Bancos de. Dados usando SQL Server 2005

Boas Práticas para Otimização de Consultas a Bancos de. Dados usando SQL Server 2005 Boas Práticas para Otimização de Consultas a Bancos de Dados usando SQL Server 2005 LEONARDO FERREIRA SOARES* leo.fsoares@gmail.com IREMAR NUNES DE LIMA** iremar.prof@newtonpaiva.br RESUMO Este trabalho

Leia mais

Noções de. Microsoft SQL Server. Microsoft SQL Server

Noções de. Microsoft SQL Server. Microsoft SQL Server Noções de 1 Considerações Iniciais Basicamente existem dois tipos de usuários do SQL Server: Implementadores Administradores 2 1 Implementadores Utilizam o SQL Server para criar e alterar base de dados

Leia mais

Controle de Concorrência. Banco de Dados II Profa. Késsia R. C. Marchi

Controle de Concorrência. Banco de Dados II Profa. Késsia R. C. Marchi Controle de Concorrência Banco de Dados II Profa. Késsia R. C. Marchi Transação Transação é uma unidade lógica de trabalho, envolvendo diversas operações de bancos dados. C. J. Date Uma transação inicia-se,

Leia mais

CONTROLE DE CONCORRÊNCIA EM BANCO DE DADOS: Estudo de Caso Microsoft SQL Server 2008

CONTROLE DE CONCORRÊNCIA EM BANCO DE DADOS: Estudo de Caso Microsoft SQL Server 2008 CONTROLE DE CONCORRÊNCIA EM BANCO DE DADOS: Estudo de Caso Microsoft SQL Server 2008 GERALDA SILVIA DE VASCONCELOS JARDIM 1 IREMAR NUNES DE LIMA 2 Resumo: Este artigo descreve a importância do mecanismo

Leia mais

CONCORRÊNCIA. 1. Introdução. Recursos exclusivos. Não necessita controle. Abundância de recursos compartilhados. Controle necessário mas mínimo

CONCORRÊNCIA. 1. Introdução. Recursos exclusivos. Não necessita controle. Abundância de recursos compartilhados. Controle necessário mas mínimo CONCORRÊNCIA 1. Introdução Recursos exclusivos Não necessita controle Abundância de recursos compartilhados Controle necessário mas mínimo Harmonia, provavelmente não haverá conflito Recursos disputados

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

PROVA ESPECÍFICA Cargo 04

PROVA ESPECÍFICA Cargo 04 10 PROVA ESPECÍFICA Cargo 04 QUESTÃO 21 Analise as seguintes afirmativas: I. Uma das funções de um DBA é gerenciar os mecanismos de segurança de acesso aos dados armazenados em um SGBD (Sistema Gerenciador

Leia mais

ESTRATÉGIAS DE OTIMIZAÇÃO NO SGBD MICROSOFT SQL SERVER 2008 R2 IREMAR NUNES DE LIMA 2

ESTRATÉGIAS DE OTIMIZAÇÃO NO SGBD MICROSOFT SQL SERVER 2008 R2 IREMAR NUNES DE LIMA 2 ESTRATÉGIAS DE OTIMIZAÇÃO NO SGBD MICROSOFT SQL SERVER 2008 R2 RAMON FELIPE MOREIRA DIAS DE SOUZA 1 IREMAR NUNES DE LIMA 2 Resumo: Este artigo identifica e discute diversas estratégias que podem ser utilizadas

Leia mais

TRANSAÇÕES. Considerando que estes comandos fazem parte de uma TRANSAÇÃO (veremos como indicar isso):

TRANSAÇÕES. Considerando que estes comandos fazem parte de uma TRANSAÇÃO (veremos como indicar isso): TRANSAÇÕES 1. Visão Geral Uma transação é uma unidade lógica de trabalho (processamento) formada por um conjunto de comandos SQL cujo objetivo é preservar a integridade e a consistência dos dados. Ao final

Leia mais

CONCORRÊNCIA. Buscando aumentar os níveis de concorrência redução da espera em detrimento do isolamento, a SQL definiu alguns níveis de isolamento.

CONCORRÊNCIA. Buscando aumentar os níveis de concorrência redução da espera em detrimento do isolamento, a SQL definiu alguns níveis de isolamento. CONCORRÊNCIA 1. Introdução O termo concorrência se refere ao fato de que os SGBDs em geral permitem que muitas transações tenham acesso ao mesmo banco de dados ao mesmo tempo. Em um sistema desse tipo,

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

Prof. Omero, pág. 63. Banco de Dados InterBase.

Prof. Omero, pág. 63. Banco de Dados InterBase. Prof. Omero, pág. 63 O que é o InterBase? O InterBase é um SGBDR - Sistema Gerenciador de Banco de Dados Cliente/Servidor Relacional 1 que está baseado no padrão SQL ANSI-9, de alta performance, independente

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

Unidade III. Unidade III

Unidade III. Unidade III Unidade III 4 ADMINISTRAÇÃO DE SGBDs As pessoas que trabalham com um banco de dados podem ser categorizadas como usuários de banco de dados ou administradores de banco de dados. 1 Entre os usuários, existem

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

Faculdade Lourenço Filho - ENADE 2011-1

Faculdade Lourenço Filho - ENADE 2011-1 1. Quando se constrói um banco de dados, define-se o modelo de entidade e relacionamento (MER), que é a representação abstrata das estruturas de dados do banco e seus relacionamentos. Cada entidade pode

Leia mais

ESTRUTURA DE SERVER 2008. Lílian Simão Oliveira

ESTRUTURA DE SERVER 2008. Lílian Simão Oliveira ESTRUTURA DE ARMAZENAMENTO SQL SERVER 2008 Lílian Simão Oliveira O Banco de Dados SQL Server mapeia um banco em um conjunto de arquivos do sistema operacional As informações de log e de dados nunca ficam

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

Sistema de Bancos de Dados. Conceitos Gerais Sistema Gerenciador de Bancos de Dados

Sistema de Bancos de Dados. Conceitos Gerais Sistema Gerenciador de Bancos de Dados Sistema de Bancos de Dados Conceitos Gerais Sistema Gerenciador de Bancos de Dados # Definições # Motivação # Arquitetura Típica # Vantagens # Desvantagens # Evolução # Classes de Usuários 1 Nível 1 Dados

Leia mais

RESUMO CAPÍTULO 16 OVERVIEW OF TRANSACTION MANAGEMENT. Prof.: Geovane Magalhães Alunos: Gabriela G. Martins Edmar R. S. de Rezende

RESUMO CAPÍTULO 16 OVERVIEW OF TRANSACTION MANAGEMENT. Prof.: Geovane Magalhães Alunos: Gabriela G. Martins Edmar R. S. de Rezende RESUMO CAPÍTULO 16 OVERVIEW OF TRANSACTION MANAGEMENT Prof.: Geovane Magalhães Alunos: Gabriela G. Martins Edmar R. S. de Rezende ÍNDICE ANALÍTICO 16.1 AS PROPRIEDADES ACID... 3 16.1.1 CONSISTÊNCIA E ISOLAMENTO...

Leia mais

Transações. Prof. Márcio Bueno. {bd2tarde,bd2noited}@marciobueno.com. Material do Prof. Paulo Pires

Transações. Prof. Márcio Bueno. {bd2tarde,bd2noited}@marciobueno.com. Material do Prof. Paulo Pires Transações Prof. Márcio Bueno {bd2tarde,bd2noited}@marciobueno.com Material do Prof. Paulo Pires Introdução a Transações SGBD sistema de processamento de operações de acesso ao BD SGBDs são em geral multi-usuários

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

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

Controle de transações em SQL

Controle de transações em SQL Transações Controle de transações em SQL Uma transação é implicitamente iniciada quando ocorre uma operação que modifica o banco de dados (INSERT, UPDATE ou DELETE). Uma transação pode terminar normalmente

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

TRANSAÇÃO. Reconstrução ( recovery ) BANCO DE DADOS 2. Tipos de falhas (1) Tipos de falhas (2) Princípios

TRANSAÇÃO. Reconstrução ( recovery ) BANCO DE DADOS 2. Tipos de falhas (1) Tipos de falhas (2) Princípios BANCO DE DADOS TRANSAÇÃO Reconstrução ( recovery ) Idéia básica Em algum momento no tempo, todo sistema computacional apresentará uma falha. Prof. Edson Thizon O SGBD deve incorporar mecanismos de proteção

Leia mais

8. Outros tipos de Transação (Modo de Transação de Autoconfirmação e Modo Implícito)

8. Outros tipos de Transação (Modo de Transação de Autoconfirmação e Modo Implícito) 8. Outros tipos de Transação (Modo de Transação de Autoconfirmação e Modo Implícito) Nos itens anteriores vimos transações do tipo explícitas, ou seja, aquelas que iniciam com BEGIN TRANSACTION. As outras

Leia mais

INDICE 3.APLICAÇÕES QUE PODEM SER DESENVOLVIDAS COM O USO DO SAXES

INDICE 3.APLICAÇÕES QUE PODEM SER DESENVOLVIDAS COM O USO DO SAXES w w w. i d e a l o g i c. c o m. b r INDICE 1.APRESENTAÇÃO 2.ESPECIFICAÇÃO DOS RECURSOS DO SOFTWARE SAXES 2.1. Funcionalidades comuns a outras ferramentas similares 2.2. Funcionalidades próprias do software

Leia mais

Sumário. Recuperação de Falhas

Sumário. Recuperação de Falhas Sumário 1 Processamento de Consultas 2 Introdução a Transações 3 Recuperação de Falhas 4 Controle de Concorrência 5 Banco de Dados Distribuído Recuperação de Falhas Garantia de atomicidade e durabilidade

Leia mais

Sr. Nimbus DBA Remoto

Sr. Nimbus DBA Remoto Sr. Nimbus DBA Remoto O serviço DBA Remoto da Sr. Nimbus oferece ao cliente uma melhor estruturação e otimização do seu ambiente de plataforma de gerenciamento de dados baseado no Microsoft SQL Server.

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

Prof. Luiz Fernando. Unidade III ADMINISTRAÇÃO DE

Prof. Luiz Fernando. Unidade III ADMINISTRAÇÃO DE Prof. Luiz Fernando Unidade III ADMINISTRAÇÃO DE BANCOS DE DADOS Administração de SGBDs De todo o tipo de pessoal envolvido com desenvolvimento, manutenção, e utilização de bancos de dados há dois tipo

Leia mais

Introdução ao SQL. O que é SQL?

Introdução ao SQL. O que é SQL? Introdução ao SQL 1 O que é SQL? Inicialmente chamada de Sequel, SQL (Structured Query Language), é a linguagem padrão utilizada para comunicar-se com um banco de dados relacional. A versão original foi

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

Introdução a Banco de Dados

Introdução a Banco de Dados Introdução a Banco de Dados O modelo relacional Marta Mattoso Sumário Introdução Motivação Serviços de um SGBD O Modelo Relacional As aplicações não convencionais O Modelo Orientado a Objetos Considerações

Leia mais

2 Auto-sintonia de Bancos de Dados e Agentes de Software

2 Auto-sintonia de Bancos de Dados e Agentes de Software 2 Auto-sintonia de Bancos de Dados e Agentes de Software A uso da abordagem de agentes de software 1 pode trazer benefícios a áreas de aplicação em que é necessário construir sistemas autônomos, ou seja,

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

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

ANEXO 9 DO PROJETO BÁSICO DA FERRAMENTA DE MONITORAMENTO, SEGURANÇA E AUDITORIA DE BANCO DE DADOS

ANEXO 9 DO PROJETO BÁSICO DA FERRAMENTA DE MONITORAMENTO, SEGURANÇA E AUDITORIA DE BANCO DE DADOS ANEXO 9 DO PROJETO BÁSICO DA FERRAMENTA DE MONITORAMENTO, SEGURANÇA E AUDITORIA DE BANCO DE DADOS Sumário 1. Finalidade... 2 2. Justificativa para contratação... 2 3. Premissas para fornecimento e operação

Leia mais

Introdução a Computação

Introdução a Computação Introdução a Computação Aula 04 SGBD Sistemas Gerenciadores de Bancos de Dados Prof. MSc. Edilberto Silva edilms@yahoo.com Conceitos Básicos DADOS: são fatos em sua forma primária. Ex: nome do funcionário,

Leia mais

Sistemas de Banco de Dados Aspectos Gerais de Banco de Dados

Sistemas de Banco de Dados Aspectos Gerais de Banco de Dados Sistemas de Banco de Dados Aspectos Gerais de Banco de Dados 1. Conceitos Básicos No contexto de sistemas de banco de dados as palavras dado e informação possuem o mesmo significado, representando uma

Leia mais

Banco de Dados Distribuídos

Banco de Dados Distribuídos A imagem não pode ser exibida. Talvez o computador não tenha memória suficiente para abrir a imagem ou talvez ela esteja corrompida. Reinicie o computador e abra o arquivo novamente. Se ainda assim aparecer

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. Introdução a Banco de Dados. Conceitos BásicosB. Engenharia da Computação UNIVASF. Aula 1. Breve Histórico

BANCO DE DADOS. Introdução a Banco de Dados. Conceitos BásicosB. Engenharia da Computação UNIVASF. Aula 1. Breve Histórico Banco de Dados // 1 Banco de Dados // 2 Conceitos BásicosB Engenharia da Computação UNIVASF BANCO DE DADOS Aula 1 Introdução a Banco de Dados Campo representação informatizada de um dado real / menor unidade

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

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

GERENCIAMENTO CENTRALIZADO DELL POWERVAULT DL 2000 BASEADO EM TECNOLOGIA SYMANTEC

GERENCIAMENTO CENTRALIZADO DELL POWERVAULT DL 2000 BASEADO EM TECNOLOGIA SYMANTEC GERENCIAMENTO CENTRALIZADO DELL POWERVAULT DL 2000 BASEADO EM TECNOLOGIA SYMANTEC RESUMO EXECUTIVO O PowerVault DL2000, baseado na tecnologia Symantec Backup Exec, oferece a única solução de backup em

Leia mais

Manter estatísticas atualizadas é uma das regras de ouro na busca por performance.

Manter estatísticas atualizadas é uma das regras de ouro na busca por performance. Atualização de Estatísticas Um objeto de estatística pode ser atualizado manualmente pelo usuário, através dos comandos SP_UPDATESTATS e/ou UPDATE STATISTICS. Enquanto que a procedure SP_UPDATESTATS atualiza

Leia mais

Histórico de revisões

Histórico de revisões Histórico de revisões Data Versão Descrição Autor 13/11/2009 1.0 Criação da primeira versão HEngholmJr CONTEÚDO Passos para a instalação do SQL Server O MS SQL Server Conceitos relacionais Bancos de dados

Leia mais

Bibliografia Relembrando Conceitos

Bibliografia Relembrando Conceitos Prof. Ms. Luiz Alberto Contato: lasf.bel@gmail.com Linguagem de Programação de Banco de Dados Aula 07 - Gerenciamento de transações Objetivos 1. Compreender a necessidade do uso das transações; 2. Entender

Leia mais

Sumário. Ambiente de Trabalho... Erro! Indicador não definido.

Sumário. Ambiente de Trabalho... Erro! Indicador não definido. Sumário Ambiente de Trabalho... Erro! Indicador não definido. Introdução ao Project Um projeto é uma seqüência bem definida de eventos, com um início e um final identificável. O foco de um projeto é obter

Leia mais

BANCO DE DADOS CONCEITOS BÁSICOS

BANCO DE DADOS CONCEITOS BÁSICOS Universidade Federal da Paraíba UFPB Centro de Energias Alternativas e Renováveis - CEAR Departamento de Eng. Elétrica DEE BANCO DE DADOS CONCEITOS BÁSICOS Isaac Maia Pessoa Introdução O que é um BD? Operações

Leia mais

O texto desta seção foi publicado em http://msdn.microsoft.com/ptbr/library/ms177433.aspx. o http://msdn.microsoft.com/pt-br/library/ms178104.

O texto desta seção foi publicado em http://msdn.microsoft.com/ptbr/library/ms177433.aspx. o http://msdn.microsoft.com/pt-br/library/ms178104. AULA 12 - Deadlocks Em alguns casos pode ocorrer a seguinte situação: um processo solicita um determinado recurso e este não está disponível no momento. Quando isso ocontece o processo entra para o estado

Leia mais

EXEMPLO: Processo para atualização da hora Processo para monitoramento da necessidade de proteção de tela. Figura 4-1 - Exemplo

EXEMPLO: Processo para atualização da hora Processo para monitoramento da necessidade de proteção de tela. Figura 4-1 - Exemplo 4 PROCESSOS Os primeiros sistemas operacionais permitiam que apenas um processo fosse executado por vez. Dessa maneira, este processo tinha todo o sistema computacional a sua disposição. Os atuais sistemas

Leia mais

Dicas de Projeto Lógico Relacional

Dicas de Projeto Lógico Relacional Dicas de Projeto Lógico Relacional O que deve ser especificado? mapeamento do esquema conceitual definição das tabelas e chaves justificativas de mapeamento (se necessário) restrições de integridade (RIs)

Leia mais

Gerência de Banco de Dados

Gerência de Banco de Dados exatasfepi.com.br Gerência de Banco de Dados Prof. Msc. André Luís Duarte Banco de Dados Os bancos de dados são coleções de informações que se relacionam para criar um significado dentro de um contexto

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

NOMES: Leonardo Claro Diego Lage Charles Tancredo Márcio Castro

NOMES: Leonardo Claro Diego Lage Charles Tancredo Márcio Castro NOMES: Leonardo Claro Diego Lage Charles Tancredo Márcio Castro O MySQL Cluster é versão do MySQL adaptada para um ambiente de computação distribuída, provendo alta disponibilidade e alta redundância utilizando

Leia mais

Softwares Aplicativos Banco de Dados

Softwares Aplicativos Banco de Dados Softwares Aplicativos Banco de Dados INTRODUÇÃO À ENGENHARIA DA COMPUTAÇÃO Professor: Rosalvo Ferreira de Oliveira Neto Estrutura 1. Definições 2. Serviços 3. Usuários 4. Evolução 5. Exemplos 03 Banco

Leia mais

? O SQL SERVER é um sistema de gerenciamento de banco de dados relacional que foi desenvolvido inicialmente pela Microsoft em parceria com a Sybase.

? O SQL SERVER é um sistema de gerenciamento de banco de dados relacional que foi desenvolvido inicialmente pela Microsoft em parceria com a Sybase. ? O SQL SERVER é um sistema de gerenciamento de banco de dados relacional que foi desenvolvido inicialmente pela Microsoft em parceria com a Sybase.? Desde de 1994, a Microsoft lança versões do SQL SERVER

Leia mais

Introdução. Motivação. Sistema Gerenciador de Banco de Dados (SGBD) Banco de Dados (BD) Sistema de Banco de Dados (SBD)

Introdução. Motivação. Sistema Gerenciador de Banco de Dados (SGBD) Banco de Dados (BD) Sistema de Banco de Dados (SBD) Pós-graduação em Ciência da Computação CCM-202 Sistemas de Banco de Dados Introdução Profa. Maria Camila Nardini Barioni camila.barioni@ufabc.edu.br Bloco B - sala 937 2 quadrimestre de 2011 Motivação

Leia mais

Recuperação de Falhas

Recuperação de Falhas Recuperação de Falhas Prof. Márcio Bueno {bd2tarde,bd2noited}@marciobueno.com Material do Prof. Paulo Pires Recuperação de Falhas Garantia de atomicidade e durabilidade de Transações requer um SGBD tolerante

Leia mais

PROCEDIMENTOS ARMAZENADOS (Stored Procedures)

PROCEDIMENTOS ARMAZENADOS (Stored Procedures) PROCEDIMENTOS ARMAZENADOS (Stored Procedures) 1. Introdução Stored Procedure é um conjunto de comandos, ao qual é atribuído um nome. Este conjunto fica armazenado no Banco de Dados e pode ser chamado a

Leia mais

TRANSAÇÕES. Considerando que estes comandos fazem parte de uma TRANSAÇÃO (veremos como indicar isso):

TRANSAÇÕES. Considerando que estes comandos fazem parte de uma TRANSAÇÃO (veremos como indicar isso): TRANSAÇÕES 1. Introdução Transação Uma transação é uma unidade lógica de trabalho (processamento), formada por um conjunto de comando SQL, que tem por objetivo preservar a integridade e a consistência

Leia mais

CONTENÇÕES NO SGBD MICROSOFT SQL SERVER 2008 R2

CONTENÇÕES NO SGBD MICROSOFT SQL SERVER 2008 R2 CONTENÇÕES NO SGBD MICROSOFT SQL SERVER 2008 R2 ROMULO RUBENS CUNHA JUNIOR 1 IREMAR NUNES DE LIMA 2 Resumo: Este artigo aborda os tipos de contenções que podem ocorrer no Sistema Gerenciador de Banco de

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

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

Gerenciamento de Transações

Gerenciamento de Transações Gerenciamento de Transações Outros tipos de recuperação: Além das falhas causadas por transações incorretas, conforme vimos anteriormente, podem ocorrer outros tipos de falhas, que ocorrem por fatores

Leia mais

UNISA Universidade de Santo Amaro. http://www.unisa.br. Material de Estudo. Módulo I: Básico Banco de dados SQL Server. http://www.unisa-sis.

UNISA Universidade de Santo Amaro. http://www.unisa.br. Material de Estudo. Módulo I: Básico Banco de dados SQL Server. http://www.unisa-sis. UNISA Universidade de Santo Amaro http://www.unisa.br Material de Estudo Módulo I: Básico Banco de dados SQL Server http://www.unisa-sis.info Junho/2010 Objetivo do Workshop Compartilhar e apresentar

Leia mais

Aula 2 Arquitetura Oracle

Aula 2 Arquitetura Oracle Aula 2 Arquitetura Oracle Instancia Oracle Uma instância Oracle é composta de estruturas de memória e processos. Sua existência é temporária na memória RAM e nas CPUs. Quando você desliga a instância em

Leia mais

Bancos de dados distribuídos Prof. Tiago Eugenio de Melo tiagodemelo@gmail.com. http://www.tiagodemelo.info

Bancos de dados distribuídos Prof. Tiago Eugenio de Melo tiagodemelo@gmail.com. http://www.tiagodemelo.info Bancos de dados distribuídos Prof. Tiago Eugenio de Melo tiagodemelo@gmail.com Última atualização: 20.03.2013 Conceitos Banco de dados distribuídos pode ser entendido como uma coleção de múltiplos bds

Leia mais

Padrões de Contagem de Pontos de Função

Padrões de Contagem de Pontos de Função Padrões de Contagem de Pontos de Função Contexto Versão: 1.0.0 Objetivo O propósito deste documento é apresentar os padrões estabelecidos para utilização da técnica de Análise de Pontos de Função no ambiente

Leia mais

Introdução à Banco de Dados. Definição

Introdução à Banco de Dados. Definição Universidade Federal da Bahia Departamento de Ciência da Computação (DCC) Disciplina: Banco de Dados Profª. Daniela Barreiro Claro Introdução à Banco de Dados Definição Um banco de dados é uma coleção

Leia mais

ADMINISTRAÇÃO DE BANCO DE DADOS

ADMINISTRAÇÃO DE BANCO DE DADOS ADMINISTRAÇÃO DE BANCO DE DADOS ARTEFATO 03 AT03 Diversos II Page 1 of 25 Indice EXEMPLOS COM GROUP BY E COM A CLÁUSULA HAVING - TOTALIZANDO DADOS... 3 GROUP BY... 3 Cláusula HAVING com GROUP BY... 5 ENTENDENDO

Leia mais

Um sistema é constituído de um conjunto de processos que executam seus respectivos códigos do sistema operacional e processos e códigos de usuários.

Um sistema é constituído de um conjunto de processos que executam seus respectivos códigos do sistema operacional e processos e códigos de usuários. Os sistemas computacionais atuais permitem que diversos programas sejam carregados na memória e executados simultaneamente. Essa evolução tornou necessário um controle maior na divisão de tarefas entre

Leia mais

Unidade 5 Armazenamento e Indexação

Unidade 5 Armazenamento e Indexação Unidade 5 Armazenamento e Indexação Engenharia de Computação / Engenharia de Produção Banco de Dados Prof. Maria das Graças da Silva Teixeira Material base: Banco de Dados, 2009.2, prof. Otacílio José

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

Curso Superior de Tecnologia em BD Curso Superior de Tecnologia em DAI

Curso Superior de Tecnologia em BD Curso Superior de Tecnologia em DAI Curso Superior de Tecnologia em BD Curso Superior de Tecnologia em DAI Fundamentos de Banco de Dados Aula 01 Introdução aos Sistemas de Bancos de Dados Introdução aos Sistemas de BD Objetivo Apresentar

Leia mais

Noções de Processamento de Transações, Controle de Concorrência e Recuperação de Falhas

Noções de Processamento de Transações, Controle de Concorrência e Recuperação de Falhas Noções de Processamento de, e Banco de Dados I Prof. Guilherme Tavares de Assis Universidade Federal de Ouro Preto UFOP Instituto de Ciências Exatas e Biológicas ICEB Departamento de Computação DECOM Transação

Leia mais

Banco de Dados - Senado

Banco de Dados - Senado Banco de Dados - Senado Transações, Isolamento, Concorrência e Bloqueio Banco de Dados Distribuído Material preparado :Prof. Marcio Vitorino Ilka Kawashita kawashi@gmail.com Transações Uma transação é

Leia mais

Processamento de Transação

Processamento de Transação Processamento de Transação Banco de Dados II 3ª Série Transações Introdução a Transações Propriedades ACID Controle de Concorrência e Restauração Recuperação da Transação COMMIT de duas fases Estado da

Leia mais

INTRODUÇÃO. Diferente de Bando de Dados

INTRODUÇÃO. Diferente de Bando de Dados INTRODUÇÃO Diferente de Bando de Dados 1 INTRODUÇÃO DADOS São fatos conhecidos que podem ser registrados e que possuem significado. Ex: venda de gasolina gera alguns dados: data da compra, preço, qtd.

Leia mais

Banco de Dados. Aula 1 - Prof. Bruno Moreno 16/08/2011

Banco de Dados. Aula 1 - Prof. Bruno Moreno 16/08/2011 Banco de Dados Aula 1 - Prof. Bruno Moreno 16/08/2011 Roteiro Apresentação do professor e disciplina Definição de Banco de Dados Sistema de BD vs Tradicional Principais características de BD Natureza autodescritiva

Leia mais

Cursos Guia DBA Pacote Curso SQL Server 2014 e o passo a passo para otimização SQL Server 2016

Cursos Guia DBA Pacote Curso SQL Server 2014 e o passo a passo para otimização SQL Server 2016 2015 Cursos Guia DBA Pacote Curso SQL Server 2014 e o passo a passo para otimização SQL Server 2016 O pacote inclui os dois cursos mais simulados para a prova de certificação, exercícios, e-book e app

Leia mais

Veritas Storage Foundation da Symantec

Veritas Storage Foundation da Symantec Veritas Storage Foundation da Symantec Gerenciamento de armazenamento heterogêneo on-line O Veritas Storage Foundation oferece uma solução completa para o gerenciamento de armazenamento heterogêneo on-line.

Leia mais

Foglight A solução ideal para o gerenciamento de aplicações e serviços SAP

Foglight A solução ideal para o gerenciamento de aplicações e serviços SAP Parceria: Foglight A solução ideal para o gerenciamento de aplicações e serviços SAP Uma nova visão no Gerenciamento da Aplicação INDICE 1. Parceria Union e Quest Software... 3 2. Foglight Gerenciando

Leia mais

Transações Controle Distribuído de Concorrência Métodos de Controle de Concorrência Deadlocks

Transações Controle Distribuído de Concorrência Métodos de Controle de Concorrência Deadlocks Alcides Pamplona alcides.pamplona@gmail.com 1998 M. Tamer Özsu e Patrick Valduriez (tradução livre e adaptações Fernanda Baião) Conteúdo Transações Controle Distribuído de Concorrência Métodos de Controle

Leia mais

Auditoria de sistemas Deixe que seu banco de dados faça o trabalho por você

Auditoria de sistemas Deixe que seu banco de dados faça o trabalho por você Auditoria de sistemas Deixe que seu banco de dados faça o trabalho por você por Cristóferson Guimarães Magalhães Bueno e Odilon Corrêa da Silva 1 O objetivo deste artigo é demonstrar como criar um sistema

Leia mais

www.en-sof.com.br SOLUÇÕES PARA CONTINUIDADE DO NEGÓCIO

www.en-sof.com.br SOLUÇÕES PARA CONTINUIDADE DO NEGÓCIO SOLUÇÕES PARA CONTINUIDADE DO NEGÓCIO 1 Soluções Oracle Voltadas à Continuidade dos Negócios Luciano Inácio de Melo Oracle Database Administrator Certified Oracle Instructor Bacharel em Ciências da Computação

Leia mais

REPLICAÇÃO E AUTO DISPONIBILIDADE NO SQL SERVER

REPLICAÇÃO E AUTO DISPONIBILIDADE NO SQL SERVER FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE SERGIPE FANESE NÚCLEO DE PÓS-GRADUAÇÃO E EXTENSÃO NPGE CURSO DE PÓS-GRADUAÇÃO LATO SENSU ESPECIALIZAÇÃO EM BANCO DE DADOS REPLICAÇÃO E AUTO DISPONIBILIDADE NO SQL

Leia mais

Etapas da evolução rumo a tomada de decisão: Aplicações Isoladas: dados duplicados, dados inconsistentes, processos duplicados.

Etapas da evolução rumo a tomada de decisão: Aplicações Isoladas: dados duplicados, dados inconsistentes, processos duplicados. Histórico Etapas da evolução rumo a tomada de decisão: Aplicações Isoladas: dados duplicados, dados inconsistentes, processos duplicados. Sistemas Integrados: racionalização de processos, manutenção dos

Leia mais

17/10/2008. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet Redes de Computadores

17/10/2008. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet Redes de Computadores Faculdade INED Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet Redes de Computadores Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan 1 Unidade 2 Imagem: BARBIERI, Carlos. 2

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

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

INTRODUÇÃO À LINGUAGEM SQL CRIAÇÃO DE BANCO DE DADOS E OTIMIZAÇÃO DE CONSULTAS

INTRODUÇÃO À LINGUAGEM SQL CRIAÇÃO DE BANCO DE DADOS E OTIMIZAÇÃO DE CONSULTAS Esclarecimento Licenciamento de Uso Este documento é propriedade intelectual 2012 da NRSYSTEM COMÉRCIO E SERVIÇOS DE INFORMÁTICA LTDA-ME, consiste de uma compilação de diversos materiais entre livros,

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

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

Sumário. Administração de Banco de dados Módulo 12. Ilustração Backup-Recovery. Recuperação (Recovery) - Definição

Sumário. Administração de Banco de dados Módulo 12. Ilustração Backup-Recovery. Recuperação (Recovery) - Definição Sumário Administração de Banco de dados Módulo 12 1. Administração de SGBDs - Continuação 1.1. Recuperação (Recovery) 1.1.1. Recuperação de sistema 1.1.2. Recuperação da mídia M. Sc. Luiz Alberto lasf.bel@gmail.com

Leia mais