Otimização do Desempenho com o SQL Server 2008

Devido ao crescente aumento dos dados corporativos em tamanho e complexidade, é necessário tomar providências de forma a otimizar o tempo de acesso aos dados. O SQL Server 2008 inclui diversos recursos e aprimoramentos para a otimização do desempenho em todas as áreas de funcionalidade, inclusive os bancos de dados relacionais OLTP (Online Transaction processing), os banco de dados OLAP (Online Analytical Processing – Processamento Analítico Online), relatório e processos de dados ETL (extraction, transformation, and loading – extração, transformação e carga).

Desempenho do Banco de Dados Relacional

Os bancos de dados relacionais são parte central dos serviços e aplicativos críticos na maioria dos ambientes empresariais. As empresas devem ser capazes de assegurar a consistência do desempenho e da capacidade de resposta de seus sistemas de dados à medida que aumenta o volume de dados, bem como o número de usuários e aplicativos que dependem do armazenamento de dados relacionais. O SQL Server 2008 fornece um sólido mecanismo de banco de dados, o qual suporta bancos de dados relacionais volumosos, bem como complexos processamentos de consulta.   

Desempenho Real Mensurável

O SQL Server 2008 ampliou o desempenho líder do setor das versões anteriores do programa, para oferecer a sua empresa o mais alto padrão de desempenho de bancos de dados. Tendo demonstrado os recursos de alto desempenho do SQL Server submetidos ao benchmark do TPC-C (Transaction Processing Performance Council’s), a Microsoft foi o primeiro fornecedor de bancos de dados a publicar os resultados para o recente benchmark TCP-E, o qual representa de forma mais acurada os tipos de carga de trabalho de OLTP comuns nas empresas modernas.

Além disso, o SQL Server demonstra sua capacidade de desempenho com cargas de trabalho de armazenamentos em larga escala, através de um resultado recorde TPC-H de 3 terabytes, um nível de escalabilidade e desempenho ampliado pelo SQL Server2008.

Mecanismo de Processamento de Consulta de Alto Desempenho

O mecanismo de processamento de consulta de alto desempenho do SQL Server contribui para o usuário maximizar o desempenho de seus aplicativos.  Este mecanismo avalia solicitações de modo a gerar planos de execução de consultas ideais, baseados em estatísticas sobre os índices, seletividade padrão e volumes de dados, sustentados de forma dinâmica. No SQL Server 2008 é possível bloquear esses planos de consultas, para assegurar um desempenho consistente com as consultas freqüentemente executadas. O mecanismo de processamento de consultas também pode tirar proveito dos sistemas com diversos núcleos e processadores de forma a gerar planos de execução que se beneficiam do paralelismo, a fim de aumentar ainda mais o desempenho.

Em geral, a operação mais cara em termos de desempenho de consulta é a E/S de disco. Os recursos de cache dinâmico do SQL Server reduzem a quantidade de acesso físico ao disco necessário à recuperação e modificação dos dados. Assim, o mecanismo de processamento de consulta pode aprimorar de maneira significativa o desempenho através do uso de varreduras “read-ahead”, com o intuito de antecipar as páginas de dados necessárias a um plano de execução determinado e fazer a leitura de forma preemptiva no interior do cache. Além disso, o suporte nativo à compressão de dados do SQL Server 2008 pode reduzir o número de páginas de dados que precisam ser lidas, o que melhora o desempenho das cargas de trabalho associadas a E/S.

O SQL Server 2008 suporta o particionamento de tabelas e índices, o qual permite aos administradores controlar a disposição física dos dados através da atribuição de partições a partir da mesma tabela ou índice, para vários grupos de arquivos em dispositivos de armazenagem física distintos. Com as otimizações feitas ao mecanismo de processamento de consulta do SQL Server 2008 é possível colocar o acesso aos dados particionados em paralelo, o que aperfeiçoa de maneira significativa o desempenho.

Ferramentas de Otimização de Desempenho

No SQL Server 2008 estão incluídos o SQL Server Profiler e o Database Engine Tuning Advisor. Com o uso do SQL Server Profiler é possível capturar o rastreio dos eventos que ocorrem em uma carga de trabalho típica para o aplicativo e, em seguida, repetir o rastreamento no Database Engine Tuning Advisor, o qual gera e implementa recomendações de indexação e particionamento de dados, de forma a possibilitar a otimização do desempenho do aplicativo.

Após criar os índices e as partições que melhor se adaptem a carga de trabalho de seu aplicativo, é possível utilizar o SQL Server Agent para programar um plano de manutenção de banco de dados automático. A manutenção automática reorganiza e reconstrói os índices periodicamente, além de atualizar as estatísticas de índice e de seletividade, a fim de assegurar o desempenho otimizado de maneira consistente, à medida que as inserções e modificações de dados fragmentam as páginas de dados físicas do banco de dados. 

Gerenciador de Recursos

Muitas vezes utiliza-se um único servidor a fim de fornecer vários serviços de dados.  Em alguns casos, diversos aplicativos e cargas de trabalham recorrem à mesma fonte de dados. À medida que continua a tendência atual de consolidação de servidores, pode ser difícil fornecer um desempenho previsível para uma carga de trabalho determinada, pois outras cargas de trabalho no mesmo servidor competem pelos recursos do sistema. Devido às diversas cargas de trabalho em um único servidor, os administradores devem evitar problemas, como por exemplo: a consulta de fuga que se alimenta de outra carga de trabalho de recursos do sistema ou as cargas de trabalho de baixa prioridade, as quais afetam de maneira adversa as cargas de trabalho de alta prioridade. O SQL Server 2008 inclui o Resource Governor, o qual permite aos administradores definir limites e atribuir prioridades a cargas de trabalho individuais sendo executadas em uma instância do SQL Server. As cargas de trabalho baseiam-se em fatores como usuários, aplicativos e bancos de dados. Através da definição de limites aos recursos, os administradores podem minimizar a possibilidade de ocorrência de consultas de fuga, bem como restringir os recursos disponíveis para as cargas de trabalho que os monopolizam. Ao determinar prioridades, é possível otimizar o desempenho dos processos de missão crítica e ao mesmo tempo manter a previsibilidade das outras cargas de trabalho do servidor.   

Performance Studio

O SQL Server 2008 fornece o Performance Studio, o qual consiste em uma estrutura integrada que pode ser utilizada na coleta, análise, solução de problemas e armazenagem de informações de diagnóstico do SQL Server. O Performance Studio oferece a solução ponta a ponta de monitoramento de desempenho, a qual inclui o baixo acúmulo de sobrecarga, armazenamento centralizado e relatório analítico dos dados de desempenho. É possível utilizar o SQL Server Management Studio para gerenciar tarefas de coleta, tais como: habilitar o coletor de dados, iniciar um conjunto de coleta, bem como exibir relatórios de conjuntos de coletas do sistema, como painel (dashboard) de desempenho. Além disso, os procedimentos armazenados do sistema e a API (application programming interface – interface de programação de aplicativos) do Performance Studio, podem ser utilizados na construção dos seu próprios utilitários de gerenciamento de performance, baseados no Performance Studio.

O Performance Studio fornece uma infra-estrutura de coleta de dados, a qual consiste em um coletor de dados para cada instância do SQL Server que se intenciona monitorar. O coletor de dados é flexível de modo que oferece a capacidade de monitorar o escopo da coleta de dados, a fim de adequá-la aos ambientes de desenvolvimento, teste e produção. Com a estrutura de coleta de dados, é possível coletar dados de desempenho e de diagnóstico geral facilmente.   

A infra-estrutura do coletor de dados introduz os novos conceitos e definições a seguir:

  • Fornecedor de Dados. Fontes de informações de desempenho ou diagnóstico que podem incluir SQL Trace, contadores de desempenho e consultas do Transact-SQL (como por exemplo, para recuperar dados dos Distributed Management Views – (Modos de Exibição de Gerenciamento Distribuído)
  • Tipos de Coletor. O wrapper lógico que fornece os mecanismos para coleta de dados a partir do fornecedor de dados.
  • Item de coleta. Consiste em uma instância de um tipo de coletor. Ao criar um item de coleta, é possível definir as propriedades de entrada e a freqüência de coleta para o item, o qual não pode existir por conta própria.
  • Conjunto de coleta. A unidade básica da coleta de dados, um conjunto de coleta consiste em um grupo de itens de coleta definidos e implantados em uma instância do SQL Server, sendo que cada um deles pode se executado de forma independente.  
  • Modo de Coleta. A forma como os dados de um conjunto de coleta são coletados e armazenados, o modo de coleta pode ser definido como armazenado ou não armazenado em cache. O modo de coleta afeta os tipos de trabalho e os cronogramas existentes para o conjunto de coleta.

O coletor de dados é extensível de modo que suporta a adição de novos fornecedores de dados.

Quando o coletor de dados é configurado, o banco de dados relacional denominado por padrão MDW é criado, como um data warehouse de gerenciamento, no qual são armazenados os dados coletados. Este banco de dados pode residir no mesmo sistema que o coletor de dados ou em um servidor distinto. Os objetos da data warehouse de gerenciamento estão agrupados em três esquemas pré-configurados, cada um deles com um propósito diferente, os quais estão descritos a seguir:

  • O esquema Core inclui tabelas e procedimentos armazenados para organizar e identificar a data de coleta.
  • O esquema Snapshot inclui tabelas de dados e modos de exibição, além de outros objetos, a fim de suportar os dados coletados dos tipos de coletor padrão (standard collector types).
  • O esquema Custom_Snapshot possibilita a criação de novas tabelas de dados para suportar conjuntos de coleta definidos pelo usuário, os quais são criados a partir dos tipos de coletor estendido e padrão.

O Performance Studio fornece um sólido agrupamento de conjuntos de coleta de sistema pré-configurados, entre eles: Server Activity, Query Statistics e Disk Usage, a fim de auxiliar na rápida análise dos dados coletados. Geralmente se inicia o monitoramento e a solução de problemas com o conjunto de coleta de sistema Server Activity. Um conjunto de relatórios associados a cada conjunto de coleta de sistema é publicado no SQL Server Management Studio. Os relatórios podem ser utilizados como um painel de desempenho para ajudar na análise do desempenho dos sistemas de bases de dados, como mostra a Figura 4.  

Data Warehousing e Desempenho de Análises

Os ambientes de data warehouse devem se adaptar ao crescente volume de dados e requisitos de usuários, mas manter o ótimo desempenho. Conforme as consultas de data warehouse tornam-se mais complexas, cada parte da consulta deve ser otimizada para manter um desempenho aceitável. No SQL Server 2008, o otimizador de consulta pode introduzir de maneira dinâmica um filtro bitmap otimizado, a fim de aprimorar o desempenho da consulta para as consultas de esquema star. Além disso, o SQL Server 2008 suporta o particionamento de dados, a funcionalidade de indexação avançada, bem como modos de exibição indexados a fim de sustentar armazenamentos de dados mais volumosos, colunas esparsas e tipos de dados eficientes, como por exemplo, o VARDECIMAL, isto reduz a sobrecarga associada a extensas tabelas que contém diversos valores NULL (uma característica comum aos data warehouses).

Os aplicativos de Analysis Services geralmente requerem cálculos longos e complexos. Um tempo precioso de processamento é desperdiçado com o cálculo de agregações cuja resolução é NULL ou zero. Os cálculos bloqueados do SQL Server 2008 Analysis Services usam valores padrão, minimizam o número de expressões que precisam ser computadas e limitam a navegação da célula a uma vez para o espaço inteiro, em vez de uma vez para cada célula, o que melhora de maneira significativa o desempenho de cálculo.

Embora as partições do MOLAP (OLAP Multidimensional) forneçam um melhor desempenho de consulta, anteriormente as empresas que necessitavam dos recursos de write-back precisavam utilizar as partições do ROLAP (OLAP Relacional) para manter as tabelas de write-back. O SQL Server 2008 adiciona a capacidade de executar operações de write-back nas partições do MOLAP, isso elimina a degradação de desempenho devida à manutenção das tabelas de write-back do ROLAP.

Desempenho do Reporting Services

O mecanismo Reporting Services do SQL Server 2008 foi projetado novamente de modo a adicionar desempenho e escalabilidade ao Reporting Services, por meio do processamento sob demanda. Os relatórios não são mais ligados à memória, porque o processamento de relatório agora utiliza o cache do sistema de arquivos para se adaptar a pressão desta. O Report Processing também pode se adaptar a outros processos que consomem memória.  

Uma nova arquitetura de renderização remove os problemas de uso de memória de versões de renderizadores anteriores. Os novos renderizadores também apresentam aprimoramentos, como por exemplo, o renderizador de dados verdadeiros adicionado ao renderizador do CSV, além do suporte as áreas de dados e sub-relatórios aninhados do renderizador do Excel.   

Desempenho do Integration Services

Os processos ETL são freqüentemente utilizados para popular e atualizar os dados corporativos dos bancos de dados de origem dos data warehouses por toda a empresa.  Tradicionalmente, muitas empresas necessitam somente de dados históricos com renovações de dados infreqüentes do data warehouse. Atualmente, muitas organizações necessitam de dados quase que em tempo real disponibilizados pelo data warehouse. À medida que aumenta a quantidade de dados e as renovações de dados no data warehouse precisam ser mais freqüentes, o tempo de processo e a flexibilidade do ETL tornam-se mais importantes.   

As renovações de dados exigem que o SQL Server Integration Services utilize pesquisas para comparar as linhas de origem aos dados no interior do data warehouse. O Integration Services inclui o desempenho de pesquisa, o qual diminui o tempo de execução de pacotes e otimiza as operações ETL. Outro problema com os processos ETL tradicionais consistia em determinar quais dados sofreram alterações no banco de dados de origem. Os administradores precisavam ser extremamente cuidadosos para evitar a duplicação dos dados existentes. Alguns administradores preferem remover todos os valores de dados e recarregar o data warehouse, em vez de gerenciar os dados modificados. Isso aumentava a sobrecarga ao processo ETL. O SQL Server 2008 inclui a funcionalidade do CDC (Change Data Capture) para registrar as atualizações de alteração de tabela, esta auxilia no acompanhamento de alterações dos dados, bem como garante a consistência do data warehouse quando as renovações de dados são programadas.   

Escalabilidade Vertical do SQL Server 2008

A consolidação do servidor, as armazenagens volumosas de dados e as consultas complexas exigem recursos físicos a fim de suportar as diversas cargas de trabalho sendo executadas no servidor. O SQL Server 2008 possui a habilidade de se beneficiar das mais recentes tecnologias de hardware. Diversas instâncias de mecanismos de banco de dados e instâncias do analysis services podem ser instaladas em um único servidor para consolidar o uso de hardware. Até 50 instâncias podem ser instaladas em um único servidor sem comprometer o desempenho ou a capacidade de resposta.

Suporte ao Hardware

O SQL Server 2008 beneficia-se por completo de hardwares modernos, entre eles, os sistemas de 64 bits, multicore e multiprocessadores. Para suportar a ampliação de cargas de acesso a dados, relatórios e cargas de conteúdo analítico, o SQL Server pode operar com uma memória de até 64 GB, bem como suportar a alocação dinâmica de memória mapeada pelo AWE (Address Windowing Extensions) em um hardware de 32 bits, além de utilizar uma memória de até 8 terabytes em um hardware de 64 bits.   

Quando muitos processadores são adicionados ao servidor e estes precisam acessar uma memória, a qual não está no mesmo local que o processador, este acesso pode ser lento. O hardware construído para a arquitetura NUMA (non-uniform memory access) supera essa limitação de acesso à memória, habilitando os processadores ao acesso da memória local. O SQL Server reconhece o hardware NUMA, de forma que fornece às empresas maior escalabilidade e mais opções de desempenho. É possível se beneficiar dos computadores baseados na NUMA sem que sejam feitas alterações na configuração dos aplicativos. O SQL Server 2008 suporta tanto o hardware NUMA quanto o soft-NUMA (NUMA flexível).   

Inclusão de Hardware “a Quente”

Embora seja fácil fazer a escalabilidade vertical de uma instância do SQL Server através da adição de memória ou de CPUs, pode ser complicado programar o tempo de inatividade para adicionar hardwares, com o intuito de escalonar verticalmente os aplicativos de missão crítica e as operações 24/7. Com o SQL Server 2008, é possível escalonar o servidor verticalmente adicionando CPUs e memória às máquinas compatíveis, sem a necessidade de interromper os serviços do banco de dados.

Para realizar a inclusão “a quente” de memória, é preciso que se atenda aos seguintes requisitos:

  • SQL Server 2008 Enterprise Edition
  • Windows Server® 2003 Enterprise Edition ou Windows Server 2003 Datacenter Edition
  • SQL Server de 64 bits ou SQL Server de 32 bits com o suporte ao AWE habilitado
  • Hardware de seu fornecedor, que suporte a inclusão de memória ou software de virtualização
  • SQL Server iniciado com a opção –h

Para realizar a inclusão “a quente” de CPUs, é preciso que se atenda aos seguintes requisitos:

  • SQL Server 2008 Enterprise Edition
  • Windows Server® 2008 Enterprise Edition para os Sistemas Itanium ou Windows Server 2008 Datacenter Edition para os sistemas de x64 bits.
  • SQL Server de 64 bits
  • Hardware que suporte inclusões de CPU ou software de virtualização
Recursos de Simultaneidade Avançados

A finalidade da escalabilidade vertical do servidor de banco de dados é suportar o crescente número de usuários e aplicativos. Conforme o número de usuários aumenta, a capacidade de resposta pode ser afetada por problemas de simultaneidade, quando várias transações tentam acessar os mesmos dados. SQL Server 2008 fornece diversos níveis de isolamento para suportar uma variedade de soluções, as quais equilibram a simultaneidade com a integridade de leitura. Para o suporte ao controle de versão de nível de linha, o SQL Server 2008 inclui um nível de isolamento comprometido com a leitura, o qual utiliza a opção de banco de dados READ_COMMITTED_SNAPSHOT e um nível de isolamento de instantâneo (snapshot) que utiliza a opção de banco de dados ALLOW_SNAPSHOT_ISOLATION. Além disso, a definição Lock Escalation em uma tabela o habilita a melhorar o desempenho e manter a simultaneidade, especialmente ao consultar as tabelas particionadas.

Escalabilidade Horizontal do SQL Server 2008

Além de escalonar verticalmente servidores individuais para que eles suportarem os ambientes com volume crescente de dados, o SQL Server 2008 fornece ferramentas e recursos de escalabilidade horizontal de bancos de dados para aumentar o desempenho de extensos bancos de dados e mover os dados para mais perto dos usuários.

Bancos de Dados Compartilhados e Escalonáveis

Os data warehouses são tipicamente utilizados por diversos consumidores de dados somente leitura, do tipo soluções de análise e relatório. Estes podem ficar sobrecarregados com solicitações de dados, o que reduz a capacidade de resposta.  Para superar esse problema, o SQL Server 2008 suporta bancos de dados compartilhados e escalonáveis, fornecendo uma maneira de fazer a escalabilidade horizontal dos bancos de dados de relatório somente leitura em múltiplas instâncias de servidor de bancos de dados, a fim de distribuir a carga de trabalho do mecanismo de consulta e isolar as consultas de muitos recursos. O recurso de banco de dados compartilhado e escalonável permite aos administradores criar uma fonte de dados somente leitura dedicada, através da montagem de cópias de banco de dados somente leitura em diversos servidores de relatórios. Os aplicativos acessam uma cópia consistente dos dados, independente do servidor de relatório, ao qual os aplicativos se conectam.

Roteamento Dependente dos Dados

Quando uma empresa decide fazer a escalabilidade horizontal a estrutura do banco de dados por bancos de dados federados, esta necessita determinar como os dados serão divididos logicamente entre os servidores e como rotear as solicitações ao servidor apropriado. Com o SQL Server 2008, é possível implementar o roteamento dependente dos dados como um serviço, utilizando o Service Broker para rotear solicitações aos locais apropriados.   

Replicação Ponto a Ponto

A replicação ponto a ponto pode fornecer uma solução eficiente de escalabilidade horizontal, na qual cópias idênticas de um banco de dados são distribuídas a localidades na empresa, de modo que as alterações realizadas na cópia local dos dados são propagadas automaticamente a outras cópias replicadas. O SQL Server 2008 auxilia na redução do tempo empregado na implementação e no gerenciamento da solução de replicação ponto a ponto, através dos novos: assistente de Topologia Ponto a Ponto e designer visual (visual designer). Com a utilização da replicação ponto a ponto, é possível habilitar aplicativos a ler ou alterar dados de quaisquer bancos de dados participantes da replicação. Enquanto que nas versões anteriores do SQL Server era necessário aos administradores interromper a atividade das tabelas publicadas em todos os nós, antes de anexar um novo nó a um nó existente, o SQL Server 2008 permite que novos nós sejam adicionados e conectados, mesmo durante as atividades de replicação.   

Notificações de Consulta

A maioria dos aplicativos de empresas baseia-se na arquitetura em três camadas, na qual os dados são recuperados a partir de um servidor de banco de dados por um ou mais servidores de aplicativos (em geral um farm da Web), os quais por sua vez, são acessados por computadores clientes. Para melhorar o desempenho, muitos servidores de aplicativo armazenam dados em cachê, a fim de fornecer aos usuários tempos de resposta mais rápidos. A necessidade de renovar os dados consiste na limitação de armazená-los em cache, pois caso não ocorra renovação na freqüência satisfatória, os usuários podem receber dados obsoletos, os quais deixaram de ser exatos. A renovação dos dados com maior freqüência adiciona sobrecarga, o que pode, em última análise, reduzir o desempenho do servidor de aplicativo. O SQL Server 2008 auxilia os aplicativos a fim de que estes utilizem o cache de forma mais eficiente, através do uso de notificações de consulta, de modo a notificar automaticamente os aplicativos da camada intermediária sempre que os dados em cache estão obsoletos. O servidor de aplicativo pode assinar a notificação de consulta, de forma que será informado quando atualizações que afetam os dados em cache são executadas no banco de dados. Em seguida, o servidor de aplicativo pode renovar o cache dinamicamente, com os dados atualizados.

Escalabilidade Horizontal do Analysis Services

Embora os cubos do SQL Server 2005 Analysis Server sejam geralmente bancos de dados Somente Leitura, cada instância mantém o seu próprio diretório de dados. Ainda que seja possível criar várias cópias do banco de dados Analysis Services, sincronizando os cubos em diversos servidores, este processo introduz uma latência que talvez possa ser inaceitável para muitos ambientes corporativos. O Analysis Services do SQL Server 2008 supera esses problemas com o suporte à implantação da escalabilidade horizontal do Analysis Services, na qual uma única cópia somente leitura centralizada do banco de dados do Analysis Services é compartilhada por diversas instâncias e acessada através de um único endereço IP virtual, como mostra a Figura 2.  

Conclusão

O SQL Server 2008 fornece um ambiente eficiente e bem elaborado para todas as necessidades relacionadas aos dados. O programa foi otimizado para fornecer o melhor desempenho, por meio do avançado mecanismo de banco de dados relacional, além do Analysis Services, Reporting Services e Integration Services. Ferramentas e técnicas novas trabalham juntas com as já bem estabelecidas, a fim de auxiliar as empresas na implantação de ambientes de dados de todos os tamanhos, mantendo o ótimo desempenho. O SQL Server 2008 suporta as últimas tendências tecnológicas com o intuito de fornecer às empresas a flexibilidade para escalonar verticalmente servidores individuais e consolidar as cargas de trabalho nesses servidores. Além disso, o programa oferece as tecnologias necessárias para a escalabilidade horizontal de bancos de dados mais volumosos.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s