CONTENÇÕES NO SGBD MICROSOFT SQL SERVER 2008 R2



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

Sistemas de Banco de Dados Aspectos Gerais de Banco de Dados

Recursos. Um recurso é ou um dispositivo físico (dedicado) do hardware, ou Solicitar o recurso: esperar pelo recurso, até obtê-lo.

Como instalar uma impressora?

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

*O RDBMS Oracle é um sistema de gerenciamento de banco de dados relacional.

Conceitos Básicos de Rede. Um manual para empresas com até 75 computadores

MANUAL DE CONFIGURAÇÃO DO BACKUP

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource Rev: 02

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

NORMA TÉCNICA PARA IMPLANTAÇÃO DE NOVOS SISTEMAS OU APLICAÇÕES NO BANCO DE DADOS CORPORATIVO

ESTRUTURA DE SERVER Lílian Simão Oliveira

Perguntas frequentes do Samsung Drive Manager

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

SISTEMAS OPERACIONAIS LIVRES. Professor Carlos Muniz

SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar

Fox Gerenciador de Sistemas

SISTEMAS OPERACIONAIS LIVRES. Professor Carlos Muniz

Guia de início rápido do Powersuite

Gerenciamento de Problemas

Comparativo de desempenho do Pervasive PSQL v11

Sistema de Chamados Protega

Entendendo como funciona o NAT

AULA 5 Sistemas Operacionais

Professor: Macêdo Firmino Disciplina: Sistemas Operacionais de Rede

Prof.: Roberto Franciscatto. Capítulo 1.1 Introdução

Bancos de dados distribuídos Prof. Tiago Eugenio de Melo

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

ACOMPANHAMENTO GERENCIAL SANKHYA

CRIANDO BANCOS DE DADOS NO SQL SERVER 2008 R2 COM O SQL SERVER MANAGEMENT STUDIO

Dicas para usar melhor o Word 2007

Manual Sistema de Autorização Online GW

Atualização De Mapas GPS Apontador. 1º Acessar site: 2º Selecione o Idioma para Português no seu canto direito.

Processo de Controle das Reposições da loja

ADMINISTRAÇÃO DE BANCOS DE DADOS MÓDULO 13

O texto desta seção foi publicado em o

Crash recovery é similar ao instance recovery, onde o primeiro referencia ambientes de instância exclusiva e o segundo ambientes parallel server.

Microsoft Access XP Módulo Um

Manual de operação. BS Ponto Versão 5.1

Guia de boas práticas para realização de Backup

Manual Integra S_Line

Manual do sistema SMARsa Web

Módulo e-rede VirtueMart v1.0. Manual de. Instalação do Módulo. estamos todos ligados

Gerenciamento de Transações

SUMÁRIO Acesso ao sistema... 2 Atendente... 3

Manual SAGe Versão 1.2 (a partir da versão )

Figura 1: tela inicial do BlueControl COMO COLOCAR A SALA DE INFORMÁTICA EM FUNCIONAMENTO?

Manual do usuário. Mobile Auto Download

Configuração do Servidor DHCP no Windows Server 2003

Redes Ponto a Ponto. Os drivers das placas de rede devem estar instalados.

Tópicos. Atualizações e segurança do sistema. Manutenção Preventiva e Corretiva de Software (utilizando o MS Windows XP)

Engenharia de Software III

OCOMON PRIMEIROS PASSOS

PROGRAMA DE PÓS-GRADUAÇÃO POSEAD. Curso Banco de Dados. Resenha Crítica: Backup e Recovery Aluno: Wilker Dias Maia

Manual de Instalação (TEF LOJA)

RESTAURAÇÃO NO WINDOWS 8

29/06/ :30 Leite Júnior QUESTÕES CESPE BACKUP

Boletim Técnico. Empresa. Vagas. Central de Estágio. Desenvolvimento/Procedimento. Acesse Atividades Acadêmicas Estágio Empresa

Um Driver NDIS Para Interceptação de Datagramas IP

ITIL v3 - Operação de Serviço - Parte 1

CONFIGURAÇÃO DE REDE SISTEMA IDEAGRI - FAQ CONCEITOS GERAIS

Problemas básicos nos. Serviços Gladius MP

Sistemas Operativos. Threads. 3º ano - ESI e IGE (2011/2012) Engenheiro Anilton Silva Fernandes (afernandes@unipiaget.cv)

MONITORAMENTO DO AMBIENTE TECNOLÓGICO FoccoMONITOR

Config. do módulo MSA com dispositivos REP.

MANUAL DE UTILIZAÇÃO Aplicativo Controle de Estoque Desktop

TRIBUNAL DE JUSTIÇA DO PARANÁ PROJUDI REFORMULAÇÃO DE CUMPRIMENTOS - MANDADOS

Itinerários de Ônibus Relatório Final

Cadastramento de Computadores. Manual do Usuário

Mercado Eletrônico Instalação e Atualização MEConnect2

OTIMIZAÇÃO E PERFORMANCE DE BANCO DE DADOS UTILIZANDO SQL TUNING

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi

FAÇA FÁCIL: DRIVER IGS PARA COMUNICAÇÃO DE PROTOCOLOS PROPRIETÁRIOS INTRODUÇÃO

Despachante Express - Software para o despachante documentalista veicular DESPACHANTE EXPRESS MANUAL DO USUÁRIO VERSÃO 1.1

O servidor de banco de dados ORACLE corporativo da empresa deve possuir a seguinte especificação mínima:

Manual Xerox capture EMBRATEL

Windows 7. Professor: Jeferson Machado Cordini

Guia de Início Rápido

Transferência de Dados entre Computadores

Questões comentadas informática

GUIA INTEGRA SERVICES E STATUS MONITOR

MÓDULO 9 METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS

Nesse artigo abordaremos os principais aspectos de instalação e uso do NTOP no Fedora Core 4.

Capacidade = 512 x 300 x x 2 x 5 = ,72 GB

Prof. Antonio Fundamentos de Sistemas Operacionais UNIP/2015

AP_ Conta Aplicativo para digitação e envio de contas médicas no padrão TISS

Módulo e-rede OSCommerce v1.0. Manual de. Instalação do Módulo. estamos todos ligados

Guia Site Empresarial

CONFIGURAÇÃO MINIMA EXIGIDA:

14/09/2008. Curso Superior de Tecnologia em Bando de Dados Disciplina: Projeto de Banco de Dados Relacional II Prof.: Fernando Hadad Zaidan

ADMINISTRAÇÃO DE SISTEMAS OPERACIONAIS SERVIÇO DE BACKUP. Professor Carlos Muniz

ADMINISTRAÇÃO E SERVIÇOS DE REDE

Agendamento de Produtos de Uso Contínuo

Transcrição:

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 Dados Microsoft SQL Server 2008 R2. Estas contenções geram waits (esperas) e afetam diretamente o desempenho de uma instância SQL Server. Será mostrado como um Administrador de Banco de Dados (DBA) pode identificar estas contenções e o que deve fazer para minimizar o problema. Palavras-chave: SQL Server 2008, Banco de Dados, Contenção, Waits. 1 INTRODUÇÃO Existem vários tipos de contenções que podem ocorrer no SQL Server como, por exemplo: contenções de I/O, por concorrência, de rede e por configurações incorretas. As contenções podem trazer vários problemas para aos DBAs pelo o fato de nem sempre serem de fácil resolução e ter um custo relativamente alto. Por isso, sempre que se pensar em adquirir um SQL Server deve-se fazer um levantamento de tudo que ira precisar desde a parte de Hardware até as instâncias que serão instaladas e suas configurações, evitando assim o 1 Especialista em Banco de Dados e Business Inteligence (juniorboll@gmail.com). 2 DBA, mestre em informática e professor do Centro Universitário Newton Paiva (iremar.prof@uol.com.br).

máximo possível de contenções devido a um Banco de Dados mal instalado ou por causa de uma configuração errada no servidor. As contenções não acontecem apenas na instalação do banco, elas podem acontecer em vários momentos como, por exemplo, em códigos SQLs mal formulados. Desta forma, é importante investigar os waits de um servidor de banco de dados, para conseguir evitar as contenções que podem ocorrer e para saber o que fazer quando o tempo de contenção é muito grande ou até mesmo quando acontece o travamento do sistema. Este artigo aborda alguns tipos de contenções que podem acontecer no SQL Server 2008. 2. TIPOS DE CONTENÇÃO (WAIT) Existem três tipos de contenções que podem acontecer em um banco de dados. as esperas de recursos, as esperas de fila e as esperas externas (MSDN, 2011). Esperas de recursos: ocorrem quando é solicitado um acesso a um recurso que no momento está sendo utilizado e por isto não está disponível ou ainda não foi disponibilizado. Alguns exemplos que se pode dar de esperas de recurso são: bloqueios (locks) e espera de I/O de disco. Esperas de fila: acontecem quando uma tarefa está inativa, pois está esperando que lhe seja atribuído a algum trabalho. Este tipo de tarefa normalmente é vista como tarefas de segundo plano de sistema, como por exemplo monitor de deadlocks e tarefas de limpeza. Essas tarefas aguardam as solicitações para serem colocadas em uma fila de trabalho. Este tipo de espera pode ficar ativo periodicamente mesmo que nenhum outro novo pacote tenha sido colocado na fila. Esperas Externas: ocorrem quando o SQL Server está aguardando o término de um evento externo como o extended stored procedures call (chamada de procedimento de

armazenamento estendido) ou o Linked Server Query (Consulta de servidor vinculada). Lembrando que quando é diagnosticado um problema desse tipo de espera, nem sempre quer dizer que a tarefa está parada, pois ele pode estar executando algum código externo. 3. ENCONTRANDO WAITS NO SQL SERVER 2008 R2 Sempre que uma query roda e acontece algum tipo de espera, o SQL Server registra os detalhes sobre o tipo de espera que podem ser observados através da view SYS.DM_OS_WAITS_STATS. Com esses detalhes pode-se examinar a causa de todas as contenções. Existem vários tipos diferentes de contenções e a cada atualização do SQL Server são lançados alguns novos tipos de waits, por isso, é sempre importante enxugar um pouco quando se vai procurar pelas esperas mais altas. O comando a seguir mostra as dez esperas que está acontecendo numa instância SQL Server 2008 ordenado por tempo de espera. Um exemplo de resposta seria:

Como resultado foi listado o tipo de espera classificando-o pelo tempo total. Na pesquisa no banco de dados apareceu o tipo LOGMGR_QUEUE com o tempo mais alto. O SQL Server possui como recurso uma procedure para limpar o conteúdo das waits, conforme mostra figura a seguir, o que se torna excelente para uma análise comparativa. Isto permite ver com mais segurança onde está acontecendo o maior tipo de contenção. 4. TIPOS MAIS COMUNS DE WAITS A seguir será analisado os tipos de contenções mais encontradas na view SYS.DM_OS_WAIT_STATS. 4.1 Locks (Bloqueios) Os LCK_XX são waits que estão relacionados com bloqueios e travamentos. Quando existe uma contenção muito grande nestes tipos de waits, significa que alguma coisa está impedindo a execução eficiente dos mecanismos de travamento da engine de armazenamento. Isto pode acontecer devido às transações estarem muito grandes ou por uma falta de índices adequados, o que resultaria no bloqueio ou na leitura de mais linhas do que necessário, aumentando assim o tempo de duração e chances de bloqueios. A configuração de hardware mal feita pode

contribuir para uma espera muito alta no LCK_XX, pois cada ação levará mais tempo para poder ser concluída. MSQL_XP acontece quando o SQL Server esta a espera de uma store procedure finalizar, isto pode indicar algum erro no código da sua procedure (ANDREW, 2011). 4.2 Latchs (Travas) O LATCH_xx e o PAGELATCH_xx são waits que não estão relacionados as atividades físicas do I/O. As waits LATCH_XX são típicas contenções de recursos internos ou outra estrutura de buffer pool, especialmente quando estiver usando tipos de dados (text) ou heaps (pilhas). Comparar o problema associando outros tipos de waits geralmente é importante ao invés de tratar os LATCHs sozinhos. PAGELATCH_XX são waits que estão ligados diretamente à contenção na memória cache, incluindo o buffer pool. Uma espera muito alta pode estar relacionada a vários problemas. Um problema comum é uma pequena quantidade de memória ou uma memória mal distribuída, o que causa uma grande contenção para páginas que estão no cache. Nestes casos o ideal é fazer a distribuição correta da memória ou adicionar mais memória. Outro problema que pode ocorrer é um grande número de inserções no mesmo intervalo de páginas, especialmente quando resulta em uma divisão de páginas (split). O problema pode ser ainda maior se houverem muitos SELECTs no mesmo intervalo de páginas o que é difícil de acontecer devido a exigência de um número muito grande de transações por segundo. Para resolver este problema tem que se fazer alguns ajustes nos índices. A PAGELATCH_UP é uma wait que acontece quando uma tarefa está esperando por desbloqueio de buffer. Geralmente acontece no banco de dados TEMPDB quando este está muito sobrecarregado. Pode-se resolver este problema criando mais arquivos de dados para o TEMPDB, o que reduziria a espera ou até mesmo a eliminaria (ANDREW, 2011). 4.3 Rede

Muitas pessoas acham que os problemas de contenção de rede estão relacionados a problemas físicos da estrutura de rede entre o cliente e o servidor, o que não é correto, apesar de afetar o tempo de espera do NETWORKIO. O que acontece geralmente é uma falha do próprio cliente. Por exemplo, se o cliente não consegue processar os resultados tão rápido quanto o SQL Server, ele começará a observar este tipo de espera. O que também pode ocasionar isto é quando se tem um aplicativo mal feito rodando e o hardware fica sobrecarregado do lado do cliente (ANDREW, 2011). 4.4 I / O As waits IO_COMPLETION, WRITELOG, PAGEIOLATCH_XX e LOGMGR são tipos de esperas que se encaixam na categoria de I/O. A IO_COMPLETION significa que o sistema está esperando I/O para a tarefa poder finalizar. A WRITELOG acontece quando está aguardando a transação de log ser concluída. O que pode causar isto é a freqüência dos pontos de verificações (CHEKPOINT) e confirmações de transações (COMMITS). As PAGEIOLATCH_XX são waits específicas relativas a transferências do disco para memória, e quase sempre indica problemas com o subsistema de disco. O subsistema não está conseguindo acompanhar o volume de solicitações de I/O LOGMGR: este tipo de wait acontece quando uma tarefa está a espera de algum log pendente de I/O antes de finalizar o log e fechar o banco de dados. Quando estão envolvidos alguns desses waits é um forte indicador que o gargalo é no I/O. Temos também o LOGMGR_QUEUE que ocorre quando a tarefa de gravador de log aguarda uma solicitação de trabalho. O LOGMGR_RESERVE_APPEND acontece quando está esperando para verificar se o truncamento de log vai liberar espaço para os logs, para assim poder ser gravado novos registros de log (MSDN, 2011). Existem algumas estratégias para poder reduzir a maioria destas esperas:

Ajustar suas consultas para lerem menos dados satisfazendo os pedidos. Aumentar o tamanho do arquivo de log para evitar a espera do LOGMGR_RESERVE_APPEND. Colocar os arquivos de log e de dados em unidades diferentes, para não haver qualquer tipo de competição para a gravação dos mesmos nas unidades. Alterar os tipos e configurações do dispositivo RAID para melhorar o desempenho (por exemplo, adicionar mais discos, mudar a matriz de RAID 5 e RAID 10). 4.5 Paralelismo O wait CXPACKET acontece quando tem um processamento paralelo que não está sendo eficiente. Acontece quando o SQL Server está aguardando um ou mais processos paralelos se completarem ou iniciarem. Os valores indicam que não se pode tirar proveito do uso de múltiplos processadores ou de muitos processadores em paralelos. Se o tempo de espera do CXPACKET for muito grande a ponto de se tornar um problema deve-se considerar reduzir o grau de paralelismo (RANDAL, 2011). 5. CONCLUSÃO As contenções (waits) podem acontecer a todo o momento no SQL Server 2008 R2, o que pode ocasionar muita lentidão em todo banco de dados. Neste artigo foi mostrado a query SQL para poder encontrar os waits que estão causando maior contenção no banco de dados e aqueles que acontecem com maiores freqüência no Microsoft SQL Server 2008 R2. Cada tipo de contenção tem uma maneira de ser tratada: o ideal é saber qual wait está acontecendo para assim poder tratá-la de maneira adequada.

REFERÊNCIAS ANDREW, J. KELLY. Dissecting SQL Server s Top Waits Disponível em <http://www.sqlmag.com/article/performance/dissecting-sql-server-s-top-waits> Acessado em 27de maio de 2011 COLLAGE,Rod. SQL Server 2008: Administration In Action. 74. Greenwich: Ed. MANNING, 2010. KNOWS, PEARL by Robert Pearl. SQL Server Waits and Queues Disponivel em <http://www.sqlservercentral.com/blogs/pearlknows/archive/2010/01/15/sql-server-waitsand-queues.aspx> acessado em 25 de maio de 2011 MSD Magazine, Microsoft. Encontrar dados ocultos para otimizar o desempenho do aplicativo Disponível em <http://msdn.microsoft.com/pt-br/magazine/cc135978.aspx> Acessado em 27 de maio de 2011 MSDN, MICROSOFT sys.dm_os_wait_stats(transact-sql) Disponível em <http://msdn.microsoft.com/pt-br/library/ms179984.aspx> acessado em 28 de maio de 2011 RANDAL, PAUL S. Wait statistics, or please tell me where it hurts. Disponível em <http://www.sqlskills.com/blogs/paul/post/wait-statistics-or-please-tell-me-where-ithurts.aspx> Acesso em 27 de maio de 2011 SQL Server 2008. Disponível em: <http://social.msdn.microsoft.com>. Acesso em: 22 abril 2011.