Guia de Referência do Fast Track Data Warehouse para o SQL Server 2012 Artigo técnico do SQL Server Autores: Eric Kraemer, Mike Bassett, Eric Lemoine, Dave Withers Revisores técnicos: Claude Lorenson, Susan Price, Ralph Kemperdick, Henk van der Valk, Alexi Khalyako, Oliver Chiu Publicado em: março de 2012 Aplica-se a: SQL Server 2012 Resumo: este documento define um modelo de configuração de referência (conhecido como Fast Track Data Warehouse) que usa uma abordagem equilibrada de recursos para a implementação de uma arquitetura de sistema de banco de dados do SQL Server baseada em SMP (multiprocessador simétrico), com desempenho e escalabilidade comprovados para cargas de trabalho de data warehouse. A meta de uma arquitetura de referência do Fast Track Data Warehouse é atingir um equilíbrio eficiente de recursos entre a capacidade de processamento de dados do SQL Server e a taxa de transferência de hardware do componente. Direitos autorais Este documento é fornecido "no estado em que se encontra". As informações e opiniões expressas nele, inclusive URLs e outras referências a sites da Internet, poderão ser alteradas sem aviso prévio. Você assume integralmente o risco de usá-lo. Este documento não fornece direitos legais a nenhuma propriedade intelectual de qualquer produto Microsoft. Você pode copiar e usar este documento para sua referência interna. © 2012 Microsoft. Todos os direitos reservados. 2 Sumário Histórico de alterações do FTDW.................................................................................................................. 6 Introdução..................................................................................................................................................... 6 Público-alvo............................................................................................................................................... 6 Fast Track Data Warehouse .......................................................................................................................... 6 Fast Track .................................................................................................................................................. 7 Proposta de valor ...................................................................................................................................... 7 Metodologia .................................................................................................................................................. 7 Arquitetura de componentes holística ..................................................................................................... 7 Abordagem otimizada de carga de trabalho ............................................................................................ 8 Configurações de referência do SQL Server Fast Track validadas ............................................................ 9 Resumo ..................................................................................................................................................... 9 Carga de trabalho do FTDW .......................................................................................................................... 9 Padrões de carga de trabalho de data warehouse ................................................................................... 9 Avaliação da carga de trabalho ............................................................................................................... 10 Atributos qualitativos de carga de trabalho de data warehouse ........................................................... 12 Escolhendo uma configuração de referência do FTDW .............................................................................. 13 Opção 1: Avaliação Básica....................................................................................................................... 14 Etapa 1: Avaliar o caso de uso do cliente................................................................................................ 14 Etapa 2: Escolher uma arquitetura de referência do FTDW publicada .............................................. 15 Opção 2: Avaliação Completa ................................................................................................................. 15 Visão geral do processo ...................................................................................................................... 16 Etapa 1: Avaliar o caso de uso do cliente............................................................................................ 16 Etapa 2: Estabelecer métricas de avaliação ........................................................................................ 17 Etapa 3: Escolher uma arquitetura de referência do Fast Track Data Warehouse............................. 18 Opção 3: Arquiteturas de referência definidas pelo usuário .................................................................. 18 Etapa 1: Definir a carga de trabalho ................................................................................................... 18 Etapa 2: Estabelecer avaliações de desempenho da arquitetura de componentes........................... 18 Escolhendo um resumo de FTRA ............................................................................................................ 19 Configuração padrão do FTDW ................................................................................................................... 20 Arquitetura de componentes de hardware ............................................................................................ 20 Requisitos e configuração do componente ........................................................................................ 20 3 Configuração de aplicativos .................................................................................................................... 22 Windows Server 2008 R2 .................................................................................................................... 22 SQL Server 2012 Enterprise ................................................................................................................ 23 Sistema de armazenamento ............................................................................................................... 24 Práticas recomendadas do SQL Server para FTDW .................................................................................... 29 Arquitetura de dados .............................................................................................................................. 29 Estrutura de tabela ............................................................................................................................. 29 Particionamento de tabela ................................................................................................................. 30 Indexação ............................................................................................................................................ 31 Índices columnstore na memória xVelocity ........................................................................................ 31 Estatísticas de banco de dados ........................................................................................................... 33 Compactação ...................................................................................................................................... 34 Gerenciando a fragmentação de dados .................................................................................................. 34 Fragmentação do sistema de arquivos ............................................................................................... 35 Vários grupos de arquivos................................................................................................................... 37 Carregando dados ................................................................................................................................... 37 Cargas incrementais ............................................................................................................................ 38 Migração de dados.............................................................................................................................. 40 Avaliação de desempenho e validação ....................................................................................................... 42 Executando a validação do FTDW de linha de base................................................................................ 43 Testes de linha de base com o SQLIO ................................................................................................. 44 Executando a avaliação de desempenho de banco de dados Fast Track ............................................... 46 Calculando a MCR ............................................................................................................................... 47 Calculando a BCR ................................................................................................................................ 49 Arquiteturas de referência do FTDW publicadas........................................................................................ 52 Conclusão .................................................................................................................................................... 52 Apêndice ..................................................................................................................................................... 54 Ferramenta de dimensionamento do sistema FTDW ............................................................................. 54 Validando uma FTRA definida pelo usuário ............................................................................................ 54 Testes sintéticos de E/S....................................................................................................................... 54 Gerando arquivos de teste com o SQLIO ............................................................................................ 54 4 Testes de carga de trabalho .................................................................................................................... 57 Medindo a MCR para seu servidor (opcional) .................................................................................... 57 Medindo a BCR para sua carga de trabalho ........................................................................................ 57 Fatores que afetam a taxa de consumo da consulta .......................................................................... 61 5 Histórico de alterações do FTDW A tabela a seguir fornece uma lista das principais alterações ou atualizações das versões do Guia de Referência do Fast Track Data Warehouse. Descrição Versão Novidade no SQL Server 2012 4.0 Novidade no SQL 4.0 Server 2012 Novidade no SQL 4.0 Server 2012 Novidade no SQL 4.0 Server 2012 Novidade no SQL 4.0 Server 2012 Novidade no SQL 4.0 Server 2012 Novidade no SQL 4.0 Server 2012 Tabela 1: Histórico de alterações Observação Links para outros documentos de práticas recomendadas do SQL Server Avaliação de desempenho e validação Local Requisitos de memória RAM Índices columnstore otimizados pela memória xVelocity Armazenamento de estado sólido Validação e índices columnstore Validação de E/S de linha de base Importante Cuidado Índices columnstore Estado sólido Validação SQLIO Introdução Este documento define a arquitetura de componentes e a metodologia do programa FTDW (Fast Track Data Warehouse) do SQL Server. O resultado dessa abordagem é a validação de uma arquitetura mínima de sistema de banco de dados do Microsoft SQL Server, incluindo software e hardware, necessária para você obter e manter uma linha de base de desempenho pronta para uso com muitas cargas de trabalho de data warehouse. Público-alvo O público-alvo deste documento inclui planejadores de TI, arquitetos, DBAs e usuários de BI (business intelligence) interessados em escolher arquiteturas comprovadas do sistema padrão para cargas de trabalho do SQL Server em conformidade com o FTDW. Fast Track Data Warehouse A iniciativa Fast Track Data Warehouse do SQL Server oferece uma metodologia básica e exemplos concretos para a implantação de configuração equilibrada de hardware e banco de dados para uma carga de trabalho de data warehouse. Para obter mais informações, consulte a seção Carga de trabalho do FTDW deste documento. 6 O equilíbrio é uma medida dos principais componentes de uma instalação do SQL Server: armazenamento, servidor, rede de armazenamento, banco de dados e sistema operacional. Cada um desses componentes é ajustado para uma configuração ideal. A meta é atingir um equilíbrio imediato e eficiente entre a capacidade de processamento de dados do SQL Server e os recursos dos componentes de hardware. De modo ideal, sua configuração incluirá hardware mínimo de sistema para atender aos requisitos de armazenamento e desempenho para uma carga de trabalho de data warehouse. Fast Track A marca SQL Server Fast Track identifica uma configuração de hardware de componente que está de acordo com os princípios da FTRA (arquitetura de referência do FTDW). Cada FTRA é definida por uma carga de trabalho e um conjunto principal de diretrizes de práticas recomendadas, configuração, validação e banco de dados. Veja a seguir importantes princípios do programa Fast Track: Avaliações de desempenho específicas à carga de trabalho. O design e a configuração do sistema se baseiam nas cargas de trabalho reais de consultas simultâneas. Especificações detalhadas e validadas do componente de hardware. Equilíbrio da arquitetura de componentes entre a capacidade do banco de dados e os principais recursos de hardware. Proposta de valor Os seguintes princípios criam a base da proposta de valor do FTDW: Equilíbrio predeterminado entre os principais componentes do sistema. Isso minimiza o risco de gasto excessivo de recursos de CPU ou armazenamento que nunca será percebido no nível de aplicativo. Desempenho imediato e previsível. As configurações de Fast Track são integradas à capacidade que já é compatível com os recursos do aplicativo SQL Server para uma carga de trabalho e um servidor selecionados. Centrado na carga de trabalho. Em vez de ser uma abordagem única para todas as configurações de bancos de dados, a abordagem FTDW é especificamente alinhada a um caso de uso de data warehouse. Metodologia Arquitetura de componentes holística As arquiteturas de referência do FTDW do SQL Server fornecem uma estrutura prática para equilibrar as relações complexas entre os principais componentes da arquitetura do sistema de banco de dados. Conhecida de forma genérica como uma pilha, a arquitetura de componentes é ilustrada na Figura 1. 7 Figura 1: Exemplo de arquitetura de componentes de banco de dados Fast Track Cada componente da pilha é um link em uma cadeia de operações necessárias para processar dados no SQL Server. Avaliar a pilha como um sistema integrado permite fazer uma avaliação de desempenho que estabelece a largura de banda real de cada componente. Isso assegura que os componentes individuais forneçam uma taxa de transferência suficiente para os recursos do aplicativo SQL Server da pilha prescrita. Abordagem otimizada de carga de trabalho As diferentes cargas de trabalho do aplicativo de banco de dados podem exigir arquiteturas de componentes muito diferentes para atingir um equilíbrio de recursos ideal. Um exemplo clássico disso pode ser o contraste entre cargas de trabalho OLTP (processamento de transação online) baseadas em pesquisa com solicitações pequenas e data warehouses analíticos com um volume intenso de exames e solicitações grandes. Os casos de uso do OLTP foram estritamente indexados para oferecer suporte à recuperação de baixa latência de pequenos números de linhas de conjuntos de dados que, muitas vezes, apresentam pouco volume de dados históricos. Esses tipos de operações de banco de dados induzem um movimento significativo do cabeçote de disco e geram padrões clássicos de exame aleatório de E/S. Os casos de uso analíticos, como o data warehouse, podem envolver solicitações de dados muito grandes e se beneficiam bastante do potencial aumento da taxa de transferência total de exames de disco sequenciais. Para esses casos de uso opostos, as implicações de uma pilha de componentes equilibrada são significativas. Em média, as taxas de exame aleatório de E/S por disco para as unidades de disco SAS modernas podem ser 10 vezes mais lentas quando comparadas às taxas de exame sequencial no mesmo hardware. Com cargas de trabalho de data warehouse Fast Track, o foco é atingir altas taxas de exame de E/S de modo consistente (medidas em MB/s), tirando o foco mais tradicional das operações por segundo (medidas em IOPS). 8 O desafio de cargas de trabalho muito diferentes é resolvido pela definição clara de atributos das cargas de trabalho do cliente. As cargas de trabalho Fast Track do SQL Server incluem uma lista qualitativa de atributos que definem de modo exclusivo um caso de uso comum do aplicativo de banco de dados. Além disso, cada carga de trabalho é representada pelas medidas quantitativas que incluem consultas padrão de análise de desempenho. A avaliação de desempenho específica à carga de trabalho é usada para validar a configuração do banco de dados, as práticas recomendadas e as recomendações de hardware de componentes. Configurações de referência do SQL Server Fast Track validadas Todas as arquiteturas de referência Fast Track publicadas são validadas de acordo com o conjunto de princípios e diretrizes fornecidos neste guia de referência. Exemplos desse processo podem ser encontrados em seções posteriores deste documento. Resumo A especificação FTDW do SQL Server descrita neste guia de referência é centrada na carga de trabalho e equilibrada por componente. Essa abordagem reconhece que um provisionamento único pode ser ineficaz e oneroso para muitos casos de uso do banco de dados. Os requisitos empresariais cada vez mais complexos combinados aos volumes de dados cada vez maiores exigem uma abordagem mais realista. Ao apresentar uma combinação de arquiteturas de referência prescritiva, avaliação de componentes de hardware e software e cargas de trabalho claramente direcionadas, este documento fornece uma abordagem prática para se obter arquiteturas de componentes equilibradas. Carga de trabalho do FTDW Padrões de carga de trabalho de data warehouse Geralmente, as perguntas feitas em data warehouses exigem acesso a grandes volumes de dados. Os data warehouses precisam dar suporte a uma variedade de consultas de um público-alvo abrangente (por exemplo: equipes de finanças, marketing, operações e pesquisa). Para superar as restrições de sistemas de data warehouse tradicionais, as organizações recorreram ao uso de técnicas tradicionais de otimização do RDBMS, como criação de índices, pré-agregação de dados e limitação de acesso a níveis de dados inferiores. As sobrecargas de manutenção associadas a essas abordagens, muitas vezes, podem oprimir até mesmo as janelas de lote generosas. À medida que um data warehouse se desenvolve e o público-alvo aumenta, o suporte a essas otimizações específicas ao caso de uso torna-se cada vez mais desafiador, principalmente no caso de dados ou correções de dados que chegam de última hora. 9 Uma solução comum para esse desafio é simplesmente adicionar unidades; não é incomum ver centenas de discos oferecendo suporte a um data warehouse relativamente pequeno na tentativa de superar as limitações de desempenho de E/S no mapeamento de uma infraestrutura de E/S baseada em busca para uma carga de trabalho baseada em exame. Isso é visto com frequência em grandes ambientes de rede SAN compartilhada que tradicionalmente são otimizados para buscas. Vários padrões e técnicas de referência de E/S de armazenamento incentivam o acesso aleatório de E/S, introduzindo a latência de disco e reduzindo a taxa de transferência geral do subsistema de armazenamento para uma carga de trabalho de data warehouse com grande volume de exames. O Fast Track Data Warehouse é uma maneira diferente de otimizar as cargas de trabalho do data warehouse. Ao alinhar os arquivos de banco de dados e a configuração ao acesso eficiente de exame de disco (em vez de busca), o desempenho obtido de discos individuais pode ser muito mais alto. O aumento do desempenho por disco resultante reduz o número de discos necessários para gerar uma taxa de transferência de E/S suficiente para atender à capacidade do SQL Server de processar dados para uma determinada carga de trabalho. Além disso, você pode evitar algumas técnicas de otimização baseadas em índice usadas para melhorar a busca no disco. Avaliação da carga de trabalho Ao analisar as cargas de trabalho de sistemas baseados em FTDW, é importante considerar o ajuste em relação às práticas e configurações do sistema descritas neste documento. Os requisitos de data warehouse podem variar de acordo com o cliente e determinados requisitos, como a replicação do banco de dados, que podem não ser apropriados para todos os sistemas desenvolvidos para FTDW. Os principais critérios iniciais desse tipo de avaliação de carga de trabalho são descritos abaixo. Alto volume de exames As consultas em uma carga de trabalho do data warehouse frequentemente examinam um grande número de linhas. Por esse motivo, o desempenho do exame de disco se torna cada vez mais uma prioridade em comparação com as cargas de trabalho transacionais, que enfatizam o tempo de busca no disco. A arquitetura de referência do FTDW otimiza o hardware e os componentes de software do banco de dados priorizando o desempenho do exame de disco. Isso resulta em leituras de disco mais eficientes e um aumento correlacionado na taxa de transferência de E/S do disco por unidade. Não volátil Depois que os dados são gravados, eles raramente são alterados. As operações DML, como a atualização do SQL, que movem páginas associadas à mesma tabela de banco de dados para fora do alinhamento contíguo, devem ser cuidadosamente gerenciadas. As cargas de trabalho que normalmente introduzem tal volatilidade podem não estar bem-alinhadas ao FTDW. Onde ocorre a volatilidade, recomendamos a manutenção periódica para reduzir a fragmentação. 10 Menos índices O acréscimo de índices não clusterizados costuma adicionar desempenho às pesquisas de um ou alguns registros. Se índices não clusterizados forem aplicados às tabelas em que um grande número de linhas deve ser recuperado, o aumento resultante nas operações de busca aleatórias no disco poderá diminuir o desempenho geral do sistema. A manutenção dos índices também pode adicionar sobrecarga significativa de gerenciamento de dados, o que pode colocar em risco o SLA (contrato de nível de serviço) e a capacidade de atender às janelas de carregamento do banco de dados. Em contrapartida, as taxas de exames sequenciais podem ser muito mais altas (10 vezes ou mais) do que as taxas de acesso aleatório. Um sistema que minimiza o uso de busca aleatória, induzindo a índices secundários, geralmente obtém uma média mais alta de taxas de E/S sustentadas. Isso significa um uso mais eficiente de recursos de E/S de armazenamento e um desempenho mais previsível para consultas grandes do tipo exame. A metodologia do FTDW prescreve técnicas de otimização do banco de dados que se alinham com as características da carga de trabalho de destino. O particionamento por intervalos e o índice clusterizado são exemplos de estruturas de dados que oferecem suporte à E/S de disco baseada em exame, e nós os recomendamos como as principais ferramentas de otimização baseada na arquitetura de dados para ambientes FTDW. Alinhamento por partição Uma característica comum das cargas de trabalho do FTDW é a capacidade de aproveitar o particionamento do SQL Server. O particionamento pode simplificar o gerenciamento do ciclo de vida dos dados e ajudar a minimizar a fragmentação ao longo do tempo. Além disso, os padrões de consulta para grandes exames podem aproveitar a qualificação da partição de intervalos e reduzir significativamente o tamanho dos exames de tabela, sem sacrificar a fragmentação ou a taxa de transferência de E/S do disco. Considerações adicionais As considerações adicionais a seguir devem ser levadas em consideração durante a avaliação de uma carga de trabalho do banco de dados: 11 A implementação e o gerenciamento de uma estratégia de otimização do banco de dados com poucos índices é um requisito fundamental para cargas de trabalho do FTDW. Supõe-se que seja mantida uma fragmentação de dados mínima no data warehouse. Isso implica no seguinte: o O tipo de fragmentação de maior preocupação pode ser medido em termos de tamanho do fragmento. Um fragmento representa alocações contíguas de páginas de banco de dados de 8K. o A expansão do servidor adicionando armazenamento exige que todas as tabelas sensíveis ao desempenho sejam novamente populadas de modo consistente com as diretrizes descritas neste documento. o A implementação de estruturas de dados voláteis, como tabelas com atividade de atualização regular no nível de linha, pode exigir manutenção frequente (como desfragmentação ou recompilações de índice) para reduzir a fragmentação. o O carregamento de tabelas de índice de cluster com lotes de IDs de chave de cluster que sobrepõem intervalos existentes é uma fonte frequente de fragmentação. Esse carregamento deve ser cuidadosamente monitorado e gerenciado de acordo com as práticas recomendadas fornecidas neste guia de referência. O data warehouse pode ter significados diferentes para públicos distintos. É preciso tomar cuidado ao avaliar as necessidades do cliente em relação aos atributos de carga de trabalho do FTDW. Atributos qualitativos de carga de trabalho de data warehouse Você pode definir a carga de trabalho do FTDW usando as propriedades das áreas de assunto a seguir relacionadas às operações de banco de dados: Requisitos de usuário e padrão de acesso Modelo de dados Arquitetura de dados Otimização do banco de dados A tabela a seguir resume atributos de carga de trabalho de data warehouse comparados a uma carga de trabalho OLTP ou ODS (repositório de dados operacional). Atributo Descrição do caso de uso 12 Afinidade da carga de trabalho: Data warehouse Basicamente leitura (90%-10%) Atualizações geralmente limitadas aos requisitos de qualidade de dados Inserções em massa de alto volume Simultaneidade geral de consulta de média a baixa; solicitação máxima de consultas simultâneas variando de 10 a 30 Taxa de transferência de consulta simultânea caracterizada pelas necessidades de análise e relatório Agregações e/ou exames de intervalos grandes Consultas complexas (filtro, junção, agrupamento, agregação) OLTP/ODS Proporção equilibrada de leitura e atualização (60%-40%) Taxa de transferência de consulta simultânea caracterizada pelas necessidades operacionais Inserções e atualizações refinadas Alta taxa de transferência de transações (por exemplo, 10s K/s) Simultaneidade geral de usuários de média a alta; solicitação máxima de consultas simultâneas variando de 50 a 100 ou mais Transações normalmente muito curtas (por exemplo, pesquisas mínimas e discretas de linhas) Atributo Afinidade da carga de trabalho: Data warehouse OLTP/ODS Modelo de dados Modelo centralizado de data Modelo de dados operacional warehouse altamente normalizado altamente normalizado Desnormalização como suporte Desnormalização frequente aos requisitos de relatório, para apoio à decisão; geralmente atendidos por pesquisas discretas de baixa aplicativos de BI, como o SQL latência e alta simultaneidade Server Analysis Services A retenção de dados históricos Estruturas de dados é limitada dimensionais hospedadas no Modelos de dados banco de dados com alto volume desnormalizados extraídos de solicitações analíticas de outros sistemas de origem e simultaneidade relativamente como suporte à tomada de baixa decisões de eventos Os exames de intervalos grandes operacionais são comuns Casos de uso analíticos ad hoc Arquitetura de Uso significativo de estruturas Uso mínimo de estruturas de dados de tabela heap tabela heap Tabelas grandes particionadas Estruturas de tabela de índice com índices clusterizados clusterizado que oferecem oferecem suporte a exames suporte a pesquisas detalhadas restritos por intervalo de registros (de uma a algumas linhas por solicitação) Tabelas de fatos muito grandes (por exemplo, de centenas de Tabelas de fatos menores gigabytes a vários terabytes) (por exemplo, de menos de 100 GB) Tamanhos de dados muito grandes (por exemplo, de Tamanhos de dados centenas de terabytes a um relativamente pequenos (por petabyte) exemplo, de alguns terabytes) Otimização do Uso mínimo de índices Otimização da utilização banco de dados secundários (anteriormente intensa de índices secundários descrito como menos índice) O particionamento é comum Tabela 2: Atributos de carga de trabalho de data warehouse Escolhendo uma configuração de referência do FTDW Há três abordagens gerais para usar a metodologia FTDW descrita neste documento. As duas primeiras são específicas ao uso de arquiteturas de referência publicadas e em conformidade com Fast Track para data warehouse. Essas abordagens permitem a seleção de sistemas previamente projetados publicados como parte do programa FTDW. A terceira abordagem trata a principal metodologia Fast Track como uma diretriz para a criação de um sistema de data warehouse definido pelo usuário. Essa abordagem final requer a criação detalhada de perfis de carga de trabalho e a avaliação de desempenho do sistema antes da compra ou implantação. Ela exige um alto conhecimento técnico das áreas de configuração de armazenamento e servidor empresarial, bem como da otimização de banco de dados do SQL Server. 13 Opção 1: Avaliação Básica Neste cenário, o cliente já escolheu uma configuração de referência do FTDW ou tem métodos alternativos para determinar os requisitos de CPU e servidor. Ao usar esta opção, você não precisará fazer uma avaliação completa da plataforma (ou seja, uma prova de conceito). Etapa 1: Avaliar o caso de uso do cliente As configurações de referência do Fast Track Data Warehouse não são configurações únicas de software e hardware. Em vez disso, as configurações são feitas de acordo com as características de uma carga de trabalho de data warehouse. A primeira etapa da escolha de uma configuração é identificar essas características; comece examinando as principais áreas de requisitos e padrões de uso do seu cliente. Carga de trabalho As definições de carga de trabalho do FTDW fornecem dois pontos essenciais para a avaliação do caso de uso. O primeiro é um conjunto de princípios básicos que definem elementos fundamentais da carga de trabalho em relação ao desempenho do SQL Server. Esses princípios devem ser cuidadosamente medidos para um determinado caso de uso, pois os conflitos podem indicar que uma carga de trabalho de destino não é adequada para uma arquitetura de referência do FTDW. O segundo componente para uma carga de trabalho é uma descrição geral do caso de uso pretendido. Isso oferece uma descrição útil de alto nível do caso de uso, além de fornecer um ponto de partida razoável para avaliar a adequação da carga de trabalho. Avaliação da carga de trabalho A lista a seguir detalha um processo básico para avaliação da carga de trabalho do cliente. Essa é uma avaliação qualitativa e deve ser considerada uma diretriz: 1. Defina os requisitos da carga de trabalho de meta. Compare e diferencie os atributos de carga de trabalho do FTDW. Para obter mais informações, consulte a seção Carga de trabalho do FTDW deste documento. 2. Avalie as práticas recomendadas do FTDW. As práticas relacionadas ao gerenciamento do banco de dados e à otimização do sistema e da arquitetura de dados devem ser avaliadas em relação ao caso de uso e ao ambiente operacional de destino. Tomando uma decisão A meta dessa avaliação de carga de trabalho é garantir que uma decisão totalmente informada possa ser tomada na escolha de uma arquitetura de referência do FTDW validada. Na realidade, a maioria dos cenários de data warehouse representa uma mistura de atributos em conformidade e conflitantes relativos à carga de trabalho do FTDW. Os atributos de carga de trabalho de alta prioridade com uma forte afinidade para configurações de referência Fast Track são listados aqui; os principais casos de uso de clientes que entram em conflito direto com qualquer um desses atributos devem ser cuidadosamente avaliados, pois podem invalidar a metodologia para o caso de uso. 14 Carga de trabalho Os seguintes atributos de carga de trabalho são de alta prioridade: As cargas de trabalho críticas apresentam padrões de acesso a dados de alto volume de exames (isto é, aqueles que podem se beneficiar do posicionamento sequencial de dados). Em geral, as solicitações de consultas individuais envolvem leituras de dezenas de milhares a milhões (ou mais) de linhas. Alta capacidade de dados e baixa simultaneidade em relação a cargas de trabalho OLTP comuns. Baixa volatilidade de dados. A atividade DML frequente de atualização/exclusão deve ser limitada a uma pequena porcentagem da superfície geral do data warehouse. Gerenciamento de bancos de dados Inclui administração de banco de dados, arquitetura de dados (estrutura de tabela e modelo de dados) e práticas de integração de dados: Arquitetura de dados particionada e com poucos índices. Gerenciamento cuidadoso da fragmentação do banco de dados com estratégias adequadas de carregamento e ETL, além de manutenção periódica. Requisitos previsíveis de aumento de dados. Os sistemas FTDW são preparados para a uma capacidade totalmente equilibrada. A expansão do armazenamento requer a migração de dados. Etapa 2: Escolher uma arquitetura de referência do FTDW publicada Um cliente pode ter um servidor em mente ao fazer uma avaliação simples com base no orçamento ou na experiência. Como alternativa, o cliente já deve ter uma boa ideia da capacidade de carga de trabalho ou de um sistema existente no qual basear a análise dos requisitos de largura de banda. Seja qual for o caso, não execute uma avaliação completa de plataforma em uma avaliação básica do FTDW. Em vez disso, selecione uma configuração FTDW em conformidade que corresponda aos requisitos estimados do seu cliente. Opção 2: Avaliação Completa As arquiteturas de referência em conformidade com Fast Track fornecem configurações de componentes de hardware de acordo com as cargas de trabalho definidas pelo cliente. A metodologia a seguir permite uma abordagem otimizada para escolher uma arquitetura de componentes de banco de dados que assegure o melhor equilíbrio imediato entre os requisitos do caso de uso, o desempenho e a escalabilidade. Essa abordagem presume um alto grau de experiência na arquitetura do sistema de banco de dados e na implantação do data warehouse. Os parceiros de Fast Track e os recursos técnicos de vendas da Microsoft geralmente são envolvidos nesse processo. 15 Visão geral do processo O fluxo de processo a seguir resume o processo de seleção da Avaliação Completa do FTDW: 1. Avalie os atributos de carga de trabalho Fast Track em relação ao cenário de uso de destino. 2. Identifique os requisitos de servidor e/ou largura de banda para o caso de uso do cliente. É necessário escolher uma configuração de referência publicada do FTDW antes de iniciar uma avaliação. 3. Identifique uma consulta que represente o requisito de carga de trabalho do cliente. 4. Calcule a BCR (taxa de consumo de avaliação de desempenho) do SQL Server para a consulta. 5. Calcule a UDC (capacidade de dados de usuários) exigida. 6. Compare as classificações de BCR e UDC com as classificações de Capacidade e MCR (taxa máxima de consumo de CPU) publicadas para arquiteturas de referência Fast Track em conformidade. A tabela a seguir descreve pontos individuais do fluxo de processo da Avaliação Completa em detalhes. Etapa 1: Avaliar o caso de uso do cliente Avaliação da carga de trabalho Esse processo é o mesmo da Opção 1: Avaliação Básica. Selecionar o hardware de avaliação do FTDW Antes de iniciar uma avaliação completa do sistema, você deve escolher e implantar uma configuração de referência do FTDW publicada para teste. Você pode escolher entre vários métodos para identificar uma configuração de referência apropriada. Veja a seguir as abordagens comuns: 16 Orçamento. O cliente opta por comprar o sistema de capacidade mais alta e/ou o sistema de mais alto desempenho para o orçamento disponível. Desempenho. O cliente opta por comprar o sistema de mais alto desempenho disponível. Análise interna. A decisão é baseada na análise de carga de trabalho que o cliente executou no hardware existente. Análise ad hoc. A Ferramenta de dimensionamento do FTDW fornece uma abordagem básica para calcular os requisitos de sistema para o FTDW com base nas suposições básicas sobre a carga de trabalho do banco de dados de destino. Essa ferramenta de planilha está disponível para download em http://download.microsoft.com/download/D/F/A/DFAAD98F-0F1B-4F8B-988F22C3F94B08E0/Fast%20Track%20Core%20Calculator%20v1.2.xlsx. Etapa 2: Estabelecer métricas de avaliação As três métricas a seguir são importantes para uma avaliação completa do FTDW e abrangem os principais critérios de decisão para avaliação de hardware: MCR (taxa máxima de consumo do núcleo de CPU) BCR (taxa de consumo de avaliação de desempenho) UDC (capacidade de dados de usuário) exigida Para obter mais informações sobre como calcular essas métricas, consulte a seção Avaliação de desempenho e validação deste documento. MCR Essa métrica mede a taxa máxima de processamento de dados do SQL Server para uma consulta padrão e o conjunto de dados para uma combinação específica de servidor e CPU. Ela é fornecida como uma taxa por núcleo, sendo medida como um exame baseado em consulta no cache de memória. A MCR é o ponto de partida inicial para design do sistema Fast Track. Ela representa uma largura de banda de E/S máxima estimada exigida para o servidor, a CPU e a carga de trabalho. A MCR é útil como um guia de design inicial, pois requer apenas um armazenamento local mínimo e um esquema de banco de dados para fazer uma estimativa da taxa de transferência potencial para uma determinada CPU. É importante reforçar que a MCR é usada como um ponto de partida para o design do sistema – não é uma medida de desempenho do sistema. BCR A BCR é medida por um conjunto de consultas que são consideradas definitivas da carga de trabalho do FTDW. Ela é calculada em termos de largura de banda total lida no disco e no cache, e não somente no cache, como ocorre no cálculo da MCR. A BCR pode permitir a personalização da infraestrutura para um determinado caso de uso do cliente, sendo medida em um conjunto de consultas correspondente aos padrões de carga de trabalho do cliente. Ou, no caso da FTRA validada pelo parceiro, é usado um conjunto de consultas de avaliação de desempenho, garantindo que os sistemas sejam projetados para cargas de trabalho de alta pressão. Em resumo, a BCR é uma medida real de processamento de dados que usa várias consultas sujeitas à carga de trabalho simultânea em volumes de dados significativos. Capacidade de dados de usuários Essa é a capacidade de banco de dados prevista para o banco de dados do SQL Server. A capacidade de dados de usuários Fast Track é responsável pela compactação do banco de dados pós-carregamento e representa uma estimativa da quantidade de fluxos ou arquivos de dados de usuários não compactados que podem ser carregados no sistema Fast Track. A proporção de compactação padrão usada para o FTDW é 3,5:1. Observe que qualquer expansão de armazenamento além da implantação inicial pode exigir a migração de dados, que efetivamente dividiria os dados existentes pelos novos locais do arquivo de banco de dados. Por esse motivo, é importante levar em consideração o crescimento esperado do banco de dados e a expectativa de vida do sistema ao escolher uma arquitetura de referência apropriada. 17 Etapa 3: Escolher uma arquitetura de referência do Fast Track Data Warehouse Depois de calculada, a BCR pode ser comparada com uma MCR publicada e com classificações de capacidade fornecidas pelos parceiros Fast Track para cada FTRA publicada. Para obter mais informações sobre nossos parceiros, consulte Fast Track Data Warehouse (http://www.microsoft.com/sqlserver/pt/br/solutions-technologies/data-warehousing/fast-track.aspx). Você pode usar a métrica BCR como um ponto de referência comum para avaliar resultados do sistema de teste/avaliação em relação às configurações publicadas. A partir dos dados de BCR, seu cliente pode escolher a opção Fast Track que melhor se alinhe com os resultados do teste. Opção 3: Arquiteturas de referência definidas pelo usuário Essa abordagem aproveita a metodologia FTDW para adaptar um sistema a uma carga de trabalho ou um conjunto de hardwares específico. Essa abordagem requer uma compreensão completa tanto do SQL Server quanto dos componentes de hardware nos quais ele é executado. As etapas a seguir descrevem a abordagem geral para desenvolver uma arquitetura de referência definida pelo usuário que esteja em conformidade com os princípios do FTDW. Etapa 1: Definir a carga de trabalho Compreender o caso de uso do banco de dados de destino é fundamental para as configurações do FTDW, e isso se aplica igualmente a qualquer aplicação personalizada das diretrizes fornecidas neste documento. As diretrizes para FTRAs, especificamente sobre o tópico de cargas de trabalho, pode ser usada como um modelo de referência para incorporar a avaliação da carga de trabalho no design da arquitetura de componentes. Etapa 2: Estabelecer avaliações de desempenho da arquitetura de componentes A estrutura a seguir fornece uma estrutura básica para desenvolver uma arquitetura de referência para uma carga de trabalho predefinida: 1. Estabeleça a MCR (taxa máxima de consumo do núcleo de CPU) para o servidor e a CPU escolhidos. Use o método descrito na seção Avaliação de desempenho e validação deste documento para calcular a MCR. Você também pode usar as classificações de MCR publicadas para configurações do FTDW. Em geral, as CPUs da mesma família apresentam taxas semelhantes de consumo do núcleo de CPU para o banco de dados do SQL Server. 2. Use o valor da MCR para fazer a estimativa dos requisitos de armazenamento e rede de armazenamento e criar um design de sistema inicial. 3. Adquira um sistema de teste baseado no design de sistema inicial. De modo ideal, isso será a configuração completa especificada. 4. Estabeleça uma BCR (taxa de consumo de avaliação de desempenho). Com base na avaliação da carga de trabalho, identifique uma consulta ou, no caso ideal, um conjunto de consultas representativas. Siga as práticas descritas na seção Medindo a BCR para sua carga de trabalho deste documento. 5. Ajuste o design do sistema com base nos resultados. 6. Estabeleça a configuração final de servidor e armazenamento. 18 Etapa 3: Validação do sistema A meta da avaliação de desempenho do sistema deve ser a validação da configuração e da taxa de transferência da configuração de componentes de hardware identificada na Etapa 2. Para obter mais informações sobre esse processo, consulte a seção Validando a FTRA definida pelo usuário deste documento. Para validar seu sistema, siga estas etapas: 1. Avalie a taxa de transferência do componente em relação aos requisitos de desempenho estabelecidos. Isso assegura que a taxa de transferência real do sistema corresponda às expectativas. 2. Valide a taxa de transferência do sistema recriando a configuração final e executando avaliações de desempenho finais. Como regra geral, a BCR final deve atingir 80% ou ser superior à MCR do sistema. Escolhendo um resumo de FTRA A tabela a seguir resume as três opções de seleção de FTRA. Opção Avaliação básica Avaliação completa Arquitetura de referência definida pelo usuário Prós Aquisição e configuração bem rápidas do sistema (dias a semanas) Custo minimizado de design e avaliação Menos requisitos de habilidade de infraestrutura Arquitetura de referência predefinida e personalizada para a carga de trabalho esperada Potencial para economia em hardware Maior confiança na solução Potencial para reutilização de hardware existente Potencial para incorporar hardware mais recente Sistema altamente personalizado para seu caso de uso Tabela 3: Comparação de diferentes opções de avaliação 19 Contras Possibilidade de armazenamento além do especificado ou de CPU abaixo do especificado A avaliação demanda esforço e tempo (semanas a meses) Exige conhecimento profundo da carga de trabalho de destino O processo leva vários meses Requer experiência significativa em infraestrutura Requer experiência significativa em SQL Server Configuração padrão do FTDW Arquitetura de componentes de hardware As arquiteturas de referência atuais do FTDW são baseadas em configurações de armazenamento dedicado. As opções atualmente publicadas incluem rede SAN alternada, rede SAN de conexão direta, SAS de conexão direta, SAS-RBOD e iSCSI. A taxa de transferência de E/S de disco é atingida pelo uso de processadores e compartimentos independentes de armazenamento dedicado. Os detalhes e as configurações adicionais são publicados por cada fornecedor Fast Track. A Figura 2 ilustra os blocos de construção no nível de componente que incluem uma arquitetura de referência do FTDW com base no armazenamento de rede SAN. Figura 2: Exemplo de configuração de armazenamento para um servidor de dois soquetes e 12 núcleos Requisitos e configuração do componente Memória do servidor RAM total: a alocação de RAM para FTRAs é baseada nos resultados da avaliação de desempenho com a meta de equilibrar a taxa de transferência lógica máxima (total de páginas lidas no disco e no buffer ao longo do tempo) com a utilização de CPU. A Tabela 4 lista alocações de memória recomendadas para arquiteturas de referência do SQL Server 2012. Os valores máximos de memória fornecidos não são limites de hardware, mas representam a média de valores para sistemas validados bem-sucedidos. 20 Tamanho do servidor Memória mínima Memória máxima 1 soquete 64 GB 128 GB 2 soquetes 128 GB 256 GB 4 soquetes 256 GB 512 GB 8 soquetes 512 GB 768 GB Tabela 4: Alocações de memória recomendadas para o SQL Server 2012 As considerações a seguir também são importantes na avaliação dos requisitos de memória do sistema: Consulta no cache: cargas de trabalho que atendem a uma grande porcentagem de consultas no cache podem receber um benefício geral proveniente do aumento das alocações de RAM à medida que a carga de trabalho aumenta. Junções e classificações de hash: consultas que dependem de junções de hash em grande escala ou executam operações de classificação em grande escala se beneficiarão de grandes quantidades de memória física. Com uma memória menor, essas operações são despejadas no disco e utilizam intensamente tempdb, o que introduz um padrão de E/S aleatório nas unidades de dados no servidor. Cargas: as inserções em massa também podem introduzir operações de classificação que utilizam tempdb, caso não possam ser processadas na memória disponível. Índice columnstore otimizado para a memória xVelocity: as cargas de trabalho que favorecem intensamente os planos de consulta do índice columnstore são executadas de modo mais eficiente com pools de memória no nível mais alto dos intervalos listados na Tabela 4. Rede SAN Fibre Channel HBA – SAN: todos os componentes de rede HBA e SAN variam até certo ponto por fabricante e modelo. Além disso, a taxa de transferência do compartimento de armazenamento pode estar relacionada à configuração da rede SAN e aos recursos de barramento de PCIe. Essa recomendação é uma diretriz geral e é consistente com o teste realizado durante o desenvolvimento da configuração de referência de FTDW. Se for usado o zoneamento, somente as portas em uso do Fast Track deverão existir na(s) zona(s). A topologia e a configuração detalhadas da rede FC são documentadas no Guia de Configuração Técnica fornecido por cada parceiro Fast Track e específicas a cada FTRA publicada. MPIO (Multipath I/O): o MPIO deve ser configurado. Cada volume hospedado em matrizes de armazenamento dedicado deve ter pelo menos um caminho Ativo. O rodízio com subconjunto é a política padrão usada para configurações Fast Track, mas raramente é usado para arquiteturas de referência do parceiro, pois configurações mais adequadas são identificadas pelas equipes de engenharia do parceiro de FTDW. DSMs e/ou documentos específicos ao parceiro, muitas vezes, prescrevem diferentes configurações e devem ser revisados antes da configuração. 21 Armazenamento Disco local: uma matriz RAID1 de dois discos é a alocação mínima para a instalação do Windows Server e do SQL Server. É necessário alocar espaço em disco suficiente para requisitos de paginação e RAM virtual. Em geral, a RAM do sistema com mais de 250 GB ou 1,5 vez maior deve estar disponível no espaço livre em disco. A configuração de disco restante depende do caso de uso e da preferência do cliente. Sistema de arquivos lógico: a montagem de LUNs para caminhos de pasta do ponto de montagem no Windows, em vez de letras de unidade, é preferível ao número de volumes em muitos sistemas Fast Track. Também pode ser útil entender qual atribuição de unidade do sistema operacional Windows representa qual LUN (volume), grupo de discos RAID e ponto de montagem do Windows Server nos compartimentos de armazenamento. Você pode adotar um esquema de nomenclatura para os volumes e pontos de montagem ao montar LUNs para pastas do Windows. Para obter mais informações sobre esquemas de nomenclatura de dispositivos, consulte as diretrizes de configuração técnica do parceiro de Fast Track. Você pode usar ferramentas específicas do fornecedor para obter o esquema de nomenclatura de volume recomendado. Se não houver uma ferramenta adequada, você poderá disponibilizar um disco para o Windows das matrizes de armazenamento enquanto atribui nomes de unidades para garantir a topologia correta de físico para lógico. Sistema de arquivos físico: para obter mais informações, incluindo instruções detalhadas, consulte a seção Configuração de aplicativos deste documento. Configuração do compartimento de armazenamento: todas as configurações de compartimento permanecem em seus padrões, a menos que documentado em contrário pela documentação técnica do parceiro Fast Track. As especificações de FTDW para configuração do sistema de arquivos exigem compartimentos de armazenamento que permitem configuração específica de agrupamentos RAID e atribuições de LUN. Isso deve ser levado em consideração para qualquer configuração de referência do FTDW, substituições de hardware ou avaliações de hardware personalizado. Configuração de aplicativos Windows Server 2008 R2 Salvo indicação em contrário, as configurações padrão devem ser usadas para o sistema operacional Windows Server 2008 R2 Enterprise. Verifique se o service pack mais recente e todas as atualizações críticas foram aplicadas. O recurso Multipath I/O é exigido para diversas arquiteturas de referência. Para obter mais informações sobre a configuração detalhada do MPIO, consulte o guia de instalação técnica do parceiro Fast Track para a arquitetura de referência fornecida. Verifique se o Windows Server 2008 R2 está instalado como uma função de Servidor de Aplicativos para garantir a instalação e os padrões adequados do .NET Framework. 22 SQL Server 2012 Enterprise Opções de inicialização -E deve ser adicionado às opções de inicialização. Isso aumenta o número de extensões contíguas em cada arquivo que são alocadas para uma tabela de banco de dados à medida que ela cresce. Isso melhora o acesso sequencial ao disco. Para obter mais informações sobre essa opção, consulte o artigo 329526 da Base de Dados de Conhecimento da Microsoft (http://support.microsoft.com/kb/329526). É importante garantir que a opção -E tenha entrado em vigor na inicialização do banco de dados. A opção diferencia letras maiúsculas de minúsculas e o formato. O espaço em branco antes ou depois da opção pode impedir a inicialização. -T1117 também deve ser adicionado às opções de inicialização. Esse sinalizador de rastreamento garante o aumento de todos os arquivos em um grupo de arquivos no caso de habilitação do aumento automático. A recomendação padrão do FTDW para aumento do arquivo de banco de dados é a pré-alocação, em vez do aumento automático (com exceção de tempdb). Para obter mais informações, consulte a seção Detalhes da configuração do armazenamento deste documento. Habilite a opção Bloquear Páginas na Memória. Para obter mais informações, consulte Como habilitar a opção Bloquear Páginas na Memória (http://go.microsoft.com/fwlink/?LinkId=141863). -T834 deve ser avaliado caso a caso. Esse sinalizador de rastreamento pode aumentar as taxas de transferência para muitas cargas de trabalho do data warehouse. Ele permite alocações de páginas grandes na memória para o pool de buffers do SQL Server. Para obter mais informações sobre esse e outros sinalizadores de rastreamento, consulte o artigo 920093 da Base de Dados de Conhecimento da Microsoft (http://support.microsoft.com/kb/920093). Observação: no momento, o SQL Server 2012 não oferece suporte ao uso de –T834 se os índices columnstore estiverem em uso no banco de dados. Se você planeja usar índices columnstore, não use esse sinalizador de rastreamento. Memória máxima do SQL No SQL Server 2012, não deve ser alocado para o SQL Server mais de 92% do total de RAM do servidor. Se aplicativos adicionais forem compartilhar o servidor, a quantidade de RAM restante disponível para o sistema operacional deverá ser ajustada adequadamente. Essa configuração é controlada pela opção max server memory. Para obter mais informações sobre as configurações de memória para arquiteturas de referência validadas, consulte a documentação do parceiro FTDW. Administrador de Recursos As cargas de trabalho do data warehouse geralmente incluem consultas complexas que operam em grandes volumes de dados. Essas consultas podem consumir grandes quantidades de memória e podem ser despejadas no disco se a memória for restrita. Esse comportamento tem implicações específicas em termos de gerenciamento de recursos. Você pode usar a tecnologia Administrador de Recursos no SQL Server 2012 para gerenciar o uso de recursos. 23 Nas configurações padrão do SQL Server, o Administrador de Recursos fornece um máximo de 25% de recursos de memória do SQL Server para cada sessão. Isso significa que, na pior das hipóteses, três consultas pesadas o suficiente para consumir pelo menos 25% da memória disponível bloquearão qualquer outra consulta que consuma muita memória. Nesse estado, todas as consultas adicionais que exigem uma grande quantidade de memória para serem executadas serão enfileiradas até que os recursos se tornem disponíveis. Você pode usar o Administrador de Recursos para reduzir a memória máxima consumida por consulta. No entanto, como resultado, as consultas simultâneas que, de alguma forma, consumiriam grandes quantidades de memória passam a usar tempdb, introduzindo mais E/S aleatória, o que pode reduzir a taxa de transferência geral. Embora isso possa ser benéfico para muitas cargas de trabalho de data warehouse para limitar a quantidade de recursos do sistema disponíveis para uma sessão individual, é mais bem mensurado com a análise das cargas de trabalho de consultas simultâneas. Para obter mais informações sobre como usar o Administrador de Recursos, consulte Gerenciando cargas de trabalho do SQL Server com o Administrador de Recursos (http://msdn.microsoft.com/pt-br/library/bb933866.aspx). As diretrizes e práticas específicas ao fornecedor de soluções Fast Track também deve ser examinadas. Especificamente, as soluções Fast Track com mais de 4 e 8 soquetes podem depender das configurações específicas do Administrado de Recursos para atingir um bom desempenho. Em resumo, há uma troca entre a redução de restrições que oferecem desempenho mais alto para consultas individuais e restrições mais rigorosas que garantem o número de consultas que podem ser executadas simultaneamente. Para obter mais informações sobre as práticas recomendadas e os cenários comuns do Administrador de Recursos, leia o white paper Usando o Administrador de Recursos (http://msdn.microsoft.com/pt-br/library/ee151608.aspx). Sistema de armazenamento Gerenciar a fragmentação é essencial para o desempenho do sistema ao longo do tempo para arquiteturas de referência do FTDW, que colocam o armazenamento de banco de dados primário em HDDs (unidades de disco rígido). Por esse motivo, uma configuração detalhada do sistema de arquivos e do armazenamento é especificada. Componentes do sistema de armazenamento A Figura 3 fornece uma exibição que combina as três camadas principais da configuração de armazenamento para a pilha integrada de banco de dados. Isso deve ser considerado um caso de referência, uma vez que a topologia específica varia muito de acordo com o parceiro Fast Track. A pilha típica de banco de dados contém os seguintes elementos: 24 Matriz de disco físico: RAID 1+0 de 4 eixos é a abordagem padrão detalhada na Figura 3. Também são usados RAID 5 e RAID 6 em algumas arquiteturas de referência de parceiros para o SQL Server 2008 R2 e SQL Server 2012. Atribuição de volume do sistema operacional (LUN) Bancos de dados: Usuário, Temp do Sistema, Log do Sistema Figura 3: Exemplo de arquitetura de armazenamento abrangente para um sistema FTDW baseado em três compartimentos de armazenamento com um LUN (volume) por grupo de discos Detalhes de configuração do armazenamento Para cada compartimento de armazenamento, execute o procedimento a seguir. 1. Crie grupos contendo quatro discos cada um, usando RAID 1+0 (RAID 10). O número exato de grupos de discos por compartimento de armazenamento pode variar por fornecedor. Para obter mais informações, consulte a documentação específica ao fornecedor. Em geral, o número é grupo de discos (2) RAID10 e (1) RAID1 para compartimentos de fator forma grande (LFF) e grupos de discos (5) RAID10 para compartimentos SFF (fator forma pequeno). 25 Os volumes totais usados como locais do grupo de arquivos para dados primários não devem exceder 32. Se o número total de LUNs do sistema de armazenamento exceder esse limite, poderão ser usados grupos de discos maiores para reduzir a contagem de LUNs mantendo uma taxa de transferência de E/S semelhante. Por exemplo, use um grupo de discos RAID 10 de 8 discos com 1 LUN, em vez de um grupo de discos RAID 10 de 4 discos com 1 LUN. A taxa de transferência e a eficiência são um pouco reduzidas com grupos de discos maiores. Isso varia de acordo com a tecnologia de armazenamento. 2. Dedique tudo, menos um grupo de discos, aos dados de usuário primários (PRI). Os locais dos dados de usuário primários são sinônimos dos locais de grupos de arquivos do banco de dados do SQL Server. Todas as FTRAs requerem um ou dois LUNs por grupo de discos PRI. Consulte as diretrizes específicas ao fornecedor da arquitetura de referência de sua escolha. Esses LUNs são usados para armazenar os arquivos de banco de dados do SQL Server (arquivos .mdf e .ndf). 3. Verifique se a atribuição do processador de armazenamento primário para cada volume de disco alocado aos dados primários em um compartimento de armazenamento é uniformemente equilibrada. Por exemplo, um compartimento de armazenamento com quatro volumes de disco alocados para dados primários terá dois volumes atribuídos ao processador de armazenamento "A" e dois atribuídos ao processador de armazenamento "B". 4. Crie um LUN no grupo de discos restante para hospedar os logs de transações do banco de dados. Para algumas configurações Fast Track mais amplas, as alocações de log são limitadas apenas aos primeiros compartimentos de armazenamento no sistema. Nesse caso, os grupos de discos adicionais são usados para preparo não referente a banco de dados ou não são populados para redução de custos. Para cada banco de dados, siga este procedimento: 1. Crie pelo menos um grupo de arquivos que contenha um arquivo de dados por LUN de PRI. Certifique-se de deixar todos os arquivos do mesmo tamanho. Se você planeja usar vários grupos de arquivos dentro de um único banco de dados para separar objetos (por exemplo, um banco de dados de preparo para oferecer suporte ao carregamento), não se esqueça de incluir todos os LUNs de PRI como locais para cada grupo de arquivos. 2. Ao criar os arquivos para cada grupo de arquivos, aloque-os previamente para os respectivos tamanhos máximos previstos, com um tamanho suficiente para manter os objetos previstos. 3. Desabilite a opção de aumento automático para arquivos de dados e aumente manualmente todos os arquivos de dados quando o limite de tamanho atual estiver se aproximando. 4. Para obter mais informações sobre recomendações para bancos de dados de usuários e grupos de arquivos, consulte a seção Gerenciando a fragmentação de dados deste documento. 26 Para tempdb, siga este procedimento: 1. Pré-aloque espaço e adicione um único arquivo de dados por LUN. Certifique-se de deixar todos os arquivos do mesmo tamanho. 2. Atribua arquivos de log temporários em um dos LUNs dedicados aos arquivos de log. 3. Habilite o aumento automático; em geral, o uso de um grande incremento de crescimento é apropriado para cargas de trabalho de data warehouse. Um valor equivalente a 10% do tamanho do arquivo inicial é um ponto de partida razoável. 4. Siga as práticas recomendadas padrão do SQL Server para o banco de dados e as considerações de dimensionamento de tempdb. A alocação de um espaço maior pode ser necessária durante a fase de migração ou durante a carga de dados inicial do data warehouse. Para obter mais informações, consulte Planejamento de capacidade para tempdb (http://msdn.microsoft.com/pt-br/library/ms345368.aspx) nos Manuais Online do SQL Server. Para o log de transações, siga este procedimento: 1. Crie um único arquivo de log de transações por banco de dados em um dos LUNs atribuídos ao espaço de log de transações. Distribua arquivos de log por diferentes bancos de dados nos LUNs disponíveis ou use vários arquivos de log para o aumento do log, conforme a necessidade. 2. Habilite a opção de aumento automático para arquivos de log. 3. Verifique se a capacidade de log se alinha aos requisitos fornecidos na Tabela 5. Alguma variação é aceitável, dependendo das características específicas de design do sistema. RAM do sistema (GB) Capacidade classificada de FT (terabytes) <= 96 <=10 <= 128 >10 <=40 Alocação mínima de log recomendada Espaço livre espelhado em GB Volume de 300 GB x 1 Volume de 300 GB x 2 ou Volume de 600 GB x 1 Tabela 5: Recomendações de alocação de log Consulte as práticas recomendadas existentes para alocação e gerenciamento do log de transações do SQL Server. Armazenamento de estado sólido As arquiteturas de referência do FTDW que usam o armazenamento de estado sólido para PRI (dados primários) têm muitas vantagens, incluindo gerenciamento simplificado, redução dos custos operacionais e manutenção previsível. 27 Gerenciamento simplificado: o armazenamento de estado sólido não exige gerenciamento de fragmentação. A opção de inicialização – E do SQL Server ainda deve ser usada, mas não há necessidade de otimização ou gerenciamento de alocação de página. Essa simplificação facilita consideravelmente o gerenciamento de longo prazo de ambientes FTDW. Além disso, os grupos de discos maiores e as contagens mais baixas de volume/LUN podem ser usados sem nenhuma implicação negativa de desempenho. Essa alteração simplifica a criação e a manutenção do grupo de arquivos. Resiliência de E/S: o armazenamento de estado sólido apresenta degradação mínima de desempenho sob alta simultaneidade ou fragmentação de página. Além disso, a carga de trabalho de leitura (busca) aleatória combinada não afeta negativamente os padrões de E/S de uma solicitação (exame) grande. Manutenção previsível: muitas opções de armazenamento de estado sólido fornecem monitoramento da vida útil da gravação com menor frequência de falhas físicas que são difíceis de prever. Redução dos custos operacionais: embora mais caro no preço de lista, o armazenamento de estado sólido oferece um equilíbrio mais eficiente entre a taxa de transferência de E/S e a capacidade por unidade. As taxas efetivas de E/S de carga de trabalho do FTDW para HDD SAS de 10k com 300 GB são em média de 50 MBs. O SSD MLC empresarial oferece entre 150 e 200 MBs em uma capacidade de 600 GB. Além disso, o armazenamento de estado sólido consome significativamente menos energia, gera menos calor e, muitas vezes, oferece suporte a soluções de densidade mais alta. Configuração do armazenamento de estado sólido Os ajustes a seguir podem ser feitos nas diretrizes de configuração do armazenamento padrão do FTDW caso o armazenamento de estado sólido seja usado para volumes de PRI. 28 Se houver necessidade de espelhamento, você poderá usar RAID1+0 ou RAID5. O RAID5 oferece a melhor capacidade sem impacto no desempenho para cargas de trabalho do FTDW no estado sólido. A contagem de LUNs e volumes pode ser reduzida para apenas um volume de PRI por unidade de armazenamento. É útil, em alguns casos, que a contagem de volumes de PRI seja um múltiplo da contagem de núcleos de CPU. A contagem mínima de volumes de PRI é dois. O log de transações também pode ser colocado em estado sólido, mas as cargas de trabalho do FTDW geralmente não são associadas ao log. O custo pode ser reduzido quando se coloca o log em um HDD tradicional. O mesmo vale para o armazenamento local da instalação do Windows Server e do SQL Server. As recomendações para o gerenciamento da fragmentação de páginas e o carregamento paralelo de índices de cluster podem ser ignoradas, pois a fragmentação lógica do banco de dados não afeta o desempenho de E/S de estado sólido. Práticas recomendadas do SQL Server para FTDW As práticas para cargas de trabalho Fast Track são validadas e documentadas em dois casos. O primeiro ocorrerá se uma prática Fast Track for substancialmente diferente das práticas recomendadas estabelecidas para o SQL Server. O segundo caso ocorrerá em cenários em que práticas existentes estiverem ausentes ou não puderem ser acessadas com facilidade. As práticas fornecidas aqui não pretendem ser abrangentes, pois existe uma extensa documentação para a implantação de bancos de dados do SQL Server. A documentação técnica e as práticas recomendadas existentes do SQL Server devem ser referenciadas em vários tópicos relacionados a uma implantação do FTDW. Importante: há vários links para a documentação escrita para o SQL Server 2008 R2 neste guia. Acreditamos que a maioria dessas diretrizes ainda seja útil para o SQL Server 2012, mas você deve procurar as versões constantemente atualizadas desses documentos. As versões futuras deste guia de referência atualizarão os links à medida que eles se tornarem disponíveis. Arquitetura de dados Estrutura de tabela O tipo de tabela que é usado para armazenar dados no banco de dados tem um efeito significativo no desempenho do acesso sequencial. É muito importante desenvolver o esquema físico com isso em mente, para permitir que os planos de consulta induzam a E/S sequencial na medida do possível. A escolha de um tipo de tabela se reduz à maneira como os dados na tabela serão acessados na maioria das vezes. As informações a seguir podem ser usadas para ajudar a determinar que tipo de tabela deve ser considerado, com base nos detalhes dos dados que estão sendo armazenados. Tabelas heap As tabelas heap fornecem E/S sequencial limpa para exames de tabela e, geralmente, diminuem a sobrecarga relacionada à fragmentação da tabela. Intrinsecamente, elas não permitem exames baseados em intervalos (acesso direto) otimizados, como acontece com uma tabela de índice clusterizado. Em uma situação de exame de intervalo, uma tabela heap examina a tabela inteira (ou a partição de intervalo apropriada, se o particionamento for aplicado). O exame de tabelas heap atinge a taxa de transferência máxima em 32 arquivos, de modo que o uso de heaps para tabelas de fatos grandes em sistemas com números elevados de LUNs (mais de 32) ou núcleos (mais de 16) pode exigir o uso do Administrador de Recursos, restrições DOP ou alterações na alocação de arquivos do banco de dados Fast Track padrão. 29 É melhor usar as tabelas heap onde: A maioria das consultas de alta prioridade na referência de tabela contém predicados que referenciam uma série de colunas distintas ou não tem nenhum predicado de coluna. As consultas geralmente executam exames grandes, ao contrário dos exames restritos a intervalos, como as tabelas usadas exclusivamente para popular cubos do Analysis Services. (Nesses casos, a tabela heap deve ser particionada com a mesma granularidade que o cubo do Analysis Services que está sendo populado.) Os requisitos de carga de trabalho de consulta são atendidos sem a sobrecarga incremental do gerenciamento de índice ou o desempenho da carga – o carregamento de tabelas heap é mais rápido. Tabelas de índice clusterizado No ambiente de data warehouse, um índice clusterizado é mais eficiente quando a chave é uma coluna qualificada por intervalo (como a de data), que geralmente é usada em restrições da carga de trabalho de consulta relevante. Nesse caso, o índice pode ser usado para restringir e otimizar significativamente os dados a serem examinados. É melhor usar tabelas de índice clusterizado quando: A tabela contém colunas qualificadas por intervalo que são usadas em restrições de consulta na maioria dos cenários de carga de trabalho de consulta de alta prioridade da tabela. Para configurações do FTDW, a coluna de data particionada de um índice clusterizado também deve ser a chave do índice clusterizado. Observação: em alguns casos, pode ser vantajoso escolher uma chave de índice clusterizado que não seja a coluna de partição de data para uma tabela de índice clusterizado. No entanto, isso pode resultar em fragmentação, a menos que partições completas sejam carregadas, pois os dados novos que sobrepõem intervalos de chave de índice clusterizado existentes criam divisões de página. As consultas na tabela normalmente fazem pesquisas granulares ou restritas ao intervalo, e não exames grandes de vários intervalos ou da tabela inteira. Particionamento de tabela O particionamento de tabela pode ser uma importante ferramenta para gerenciar a fragmentação em bancos de dados do FTDW. Por exemplo, é possível usar o particionamento para atualizar ou excluir de uma tabela grandes blocos de dados de usuário baseados em intervalos, sem afetar outras partes da tabela. Em contrapartida, excluir linha por linha de um índice de cluster pode provocar uma fragmentação significativa da extensão. Um cenário comum é recriar partições mais novas quando elas se tornam antigas e a frequência de operações DML para o intervalo de dados diminui. Agora a partição está estável em relação às operações DML e apresenta fragmentação mínima da extensão. 30 Além disso, as tabelas grandes que são usadas principalmente para popular cubos do SQL Server Analysis Services podem ser criadas como tabelas heap particionadas, com o particionamento de tabela alinhado ao particionamento do cubo. Quando acessadas, somente as partições relevantes da tabela grande são examinadas. (As partições que oferecem suporte ao modo ROLAP do Analysis Services podem ser mais bem estruturadas como índices clusterizados.) Para obter mais informações sobre particionamento de tabela, leia o white paper Estratégias de tabelas e índices particionados usando o SQL Server 2008 (http://msdn.microsoft.com/ptbr/library/dd578580(v=SQL.100).aspx). Indexação Considere as seguintes diretrizes na criação de índices do FTDW: Use um índice clusterizado para intervalos de datas ou restrições comuns. Use um índice columnstore sempre que possível. A seção a seguir aborda as práticas recomendadas para se trabalhar com índices columnstore em ambientes do FTDW. Reserve a indexação não clusterizada para situações em que a pesquisa granular for necessária e o particionamento de tabela não oferecer um desempenho suficiente. Se possível, use um índice columnstore como uma alternativa ao índice não clusterizado. Os índices de cobertura não clusterizados podem proporcionar valor a algumas cargas de trabalho do data warehouse. Eles devem ser avaliados caso a caso e comparados com o índice columnstore. Índices columnstore na memória xVelocity O SQL Server 2012 inclui um novo recurso de aceleração de consultas de data warehouse que se baseia na tecnologia de colunas: índices columnstore. Esses novos índices, combinados a recursos avançados de processamento de consultas, melhoram o desempenho das consultas de data warehouse para uma grande variedade de consultas analíticas. Os índices columnstore otimizados para a memória xVelocity são columnstores "puros" (não híbridos), pois armazenam todos os dados para colunas incluídas em páginas separadas. Os índices columnstore aumentam o desempenho do exame de E/S e as taxas de acertos do buffer, além de estarem bem-alinhados à metodologia de design do FTDW. Práticas recomendadas Os objetos do índice columnstore residem junto às tabelas e são criados de forma semelhante aos índices não clusterizados. Esses fatos implicam na capacidade incremental de armazenamento, se necessário. Não é necessário criar índices columnstore em grupos de arquivos separados, a menos que as alterações frequentes na tabela de destino do índice sejam esperadas. Manter os índices columnstore em grupos de arquivos separados pode ajudar a gerenciar a fragmentação de páginas ao longo do tempo em ambientes altamente voláteis. 31 Criando índices columnstore para modelos de dados normalizados Os modelos de dados normais (isto é, 3NF) muitas vezes disparam junções entre duas ou mais tabelas grandes (de fatos). Atualmente, esses tipos de junções não são ideais para o processamento de índices columnstore e podem exibir regressões de desempenho em relação aos planos de consulta não relacionados a índices columnstore. As abordagens a seguir podem ajudar a evitar esse problemas com modelos de dados normais: Use dicas no nível de consulta para impedir que o processamento de índices columnstore seja usado. Use OPTION(IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX) Reescreva as consultas. Para obter mais informações, consulte os recursos listados na seção Práticas recomendadas gerais do índice columnstore deste documento. Tente omitir chaves comuns de junção de uma tabela envolvida em junções SQL que exibem regressões de desempenho de planos de consulta não relacionados a índices columnstore. A omissão da chave de junção do índice columnstore em uma tabela pode fazer com que o índice columnstore não seja usado para consultas que se unem na coluna omitida. Essa abordagem poderá ser útil em ambientes onde não é possível aplicar opções no nível de consulta. Lembre-se de que omitir uma coluna do índice columnstore não é garantia de um plano de consulta melhor e pode afetar outras consultas para as quais o índice columnstore forneceria benefícios de desempenho. Se você optar por usar essa opção, a seleção de uma coluna da menor das tabelas envolvidas pode reduzir o impacto de desempenho em outras consultas. Observe que as chaves primárias declaradas (DDL) devem ser incluídas no índice columnstore, o que pode limitar as colunas de junção disponíveis. Mesmo que você omita uma coluna de chave primária da definição do índice columnstore, todas as colunas de chave primária serão adicionadas automaticamente ao índice columnstore quando ele for criado. Embora os modelos de dados normais não sejam perfeitamente otimizados para índices columnstore na versão atual, é importante observar que a avaliação de desempenho do FTDW é baseada em uma versão modificada do TPC-H, que é um modelo normalizado. Ganhos significativos ainda foram medidos para cargas de trabalho simultâneas que combinaram planos de consulta de índice columnstore e outros tipos de índices, incluindo a taxa de transferência classificada pelo FTDW que quase dobrou o desempenho geral da carga de trabalho em alguns casos. Criando índices columnstore para modelos de dados dimensionais Siga as práticas recomendadas de índice columnstore para modelos dimensionais, como esquemas em estrela. Isso pode ser considerado um cenário do melhor caso para o processamento de índices columnstore. 32 Gerenciamento de memória para índices columnstore A FTRA validada para SQL Server 2012 geralmente tem mais RAM total de sistema do que as configurações semelhantes para o SQL Server 2008 R2. O principal motivo para isso é que as cargas de trabalho aprimoradas com índices columnstore são executadas de modo mais eficiente com pools de memória maiores. O Administrador de Recursos sempre deve ser usado para definir a quantidade máxima de memória por sessão para ambientes do FTDW em que você pretende aproveitar os índices columnstore. As FTRAs validadas documentam as configurações do Administrador de Recursos usadas para atingir um desempenho classificado pelo FT, e esses valores podem ser considerados um ponto de partida para cargas de trabalho do cliente. De modo ideal, a configuração será avaliada e ajustada especificamente para uma carga de trabalho do cliente após a instalação do sistema. O comando SQL a seguir configura o Administrador de Recursos do SQL Server para essas recomendações. Nesse caso, a quantidade máxima de memória por sessão é definida como 19%. ALTER RESOURCE GOVERNOR RECONFIGURE; ALTER WORKLOAD GROUP [default] WITH(request_max_memory_grant_percent=19); Práticas recomendadas gerais do índice columnstore otimizado para a memória xVelocity As diretrizes de referência do FTDW abrangem apenas as práticas exclusivas ao Fast Track. Para obter mais informações sobre índices columnstore, consulte o Guia de Ajuste de CSI do SQL Server 2012 (http://social.technet.microsoft.com/wiki/contents/articles/sql-server-columnstoreperformance-tuning.aspx) e as Perguntas frequentes sobre CSI do SQL Server 2012 (http://social.technet.microsoft.com/wiki/contents/articles/sql-server-columnstore-index-faq.aspx). Estatísticas de banco de dados Sua decisão de quando executar as estatísticas e com que frequência atualizá-las não depende de nenhum fator único. A janela de manutenção disponível e a falta geral de desempenho do sistema costumam ser as duas principais razões para os problemas de estatísticas de banco de dados serem solucionados. Para obter mais informações, consulte Estatísticas do SQL Server 2008 (http://msdn.microsoft.com/pt-br/library/dd535534.aspx). Práticas recomendadas Sugerimos as seguintes práticas recomendadas para estatísticas de banco de dados: 33 Use as opções AUTO CREATE e AUTO UPDATE (síncrona ou assíncrona) para as estatísticas (o padrão do sistema no SQL Server). O uso dessa técnica minimiza a necessidade de executar as estatísticas manualmente. Se você precisa coletar estatísticas manualmente, o ideal é que elas sejam coletadas em todas as colunas de uma tabela. Se não for possível executar estatísticas para todas as colunas, você deve, ao menos, coletar estatísticas de todas as colunas usadas em uma cláusula WHERE ou HAVING e em chaves de junção. A criação de índice gera estatísticas sobre a chave de índice, portanto não é preciso fazer isso explicitamente. As estatísticas compostas (várias colunas) são essenciais para muitos cenários de junção. As junções de dimensão de fatos que envolvem chaves de junção compostas podem resultar em planos de otimização de loop aninhado de qualidade inferior na ausência de estatísticas compostas. As estatísticas automáticas não criam, atualizam nem substituem estatísticas compostas. As estatísticas que envolvem um valor de chave crescente (como uma data em uma tabela de fatos) devem ser atualizadas manualmente após cada operação de carregamento incremental. Em todos os outros casos, as estatísticas podem ser atualizadas com menos frequência. Se você determinar que a opção AUTO_UPDATE_STATISTICS não é suficiente, execute estatísticas agendadas. Compactação As configurações do FTDW foram desenvolvidas com a compactação de página habilitada. É recomendável usar a compactação de página em todas as tabelas de fatos. A compactação de tabelas de dimensões pequenas (isto é, aquelas com menos de um milhão de linhas) é opcional. Já com as tabelas de dimensões maiores, frequentemente é vantajoso usar a compactação de página. Em ambos os casos, a compactação das tabelas de dimensões deverá ser avaliada de acordo com o caso de uso. A compactação de linhas é uma opção adicional que fornece taxas razoáveis de compactação para determinados tipos de dados. A compactação de página do SQL Server reduz os dados em tabelas, índices e partições. Isso reduz a quantidade de espaço físico necessário para armazenar tabelas de usuário, o que permite que mais dados caibam no pool de buffers do SQL Server (memória). Um benefício disso está na redução do número de solicitações de E/S atendidas pelo armazenamento físico. A quantidade da compactação real que pode ser percebida varia em relação aos dados que estão sendo armazenados e à frequência de campos de dados duplicados nos dados. Se os dados forem altamente aleatórios, os benefícios da compactação serão muito limitados. Até mesmo nas melhores condições, o uso da compactação aumenta a demanda na CPU para compactar e descompactar os dados, mas também reduz os requisitos de espaço do disco físico e, na maioria das vezes, aumenta o tempo de resposta das consultas ao atender às solicitações de E/S do buffer de memória. Geralmente, a compactação de página apresenta uma proporção de compactação (tamanho original/tamanho compactado) entre 2 e 7:1, com 3:1 sendo uma estimativa conservadora típica. Os resultados podem variar de acordo com as características de seus dados. Gerenciando a fragmentação de dados A fragmentação pode acontecer em vários níveis, que devem ser controlados para preservar a E/S sequencial. Um objetivo importante de um FTDW é manter seus dados em sequência da maneira mais ordenada possível, ao mesmo tempo em que limita a fragmentação subjacente. Se for permitido que a fragmentação ocorra, o desempenho geral será prejudicado. A desfragmentação periódica é necessária, mas as diretrizes a seguir podem ajudar a minimizar o número de processos demorados de desfragmentação. 34 Fragmentação do sistema de arquivos Os blocos de disco por arquivo de banco de dados devem ser mantidos contíguos na superfície física dentro do sistema de arquivos NTFS. A fragmentação nesse nível pode ser evitada pela pré-alocação de arquivos para o respectivo tamanho máximo esperado na criação. As ferramentas de desfragmentação do sistema de arquivos NTFS devem ser evitadas. Essas ferramentas foram desenvolvidas para funcionar no nível do sistema operacional e não conhecem as estruturas internas do arquivo de dados do SQL Server. Fragmentação da extensão No SQL Server, todas as páginas em um arquivo, independentemente da associação de tabela, podem ser intercaladas até o tamanho de extensão (2M) ou o nível de página (8K). Em geral, isso ocorre devido a operações DML simultâneas, atualizações excessivas no nível de linha ou exclusões excessivas no nível de linha. Reescrever completamente as tabelas em questão é a única maneira de garantir uma alocação de página adequada em um arquivo. Não há nenhum método alternativo para resolver esse tipo de fragmentação de banco de dados. Por esse motivo, é importante seguir as diretrizes de configuração e práticas recomendadas do SQL Server para carregar dados e gerenciar o DML. A consulta a seguir fornece informações fundamentais para avaliação da fragmentação lógica de uma tabela do FTDW. A métrica de prioridade mais alta é Tamanho Médio do Fragmento. Esse valor fornece um inteiro que representa o número médio de páginas do SQL Server que são clusterizadas em extensões contíguas. SELECT db_name(ps.database_id) as database_name ,object_name(ps.object_id) as table_name ,ps.index_id ,i.name ,cast (ps.avg_fragmentation_in_percent as int) as [Logical Fragmentation] ,cast (ps.avg_page_space_used_in_percent as int) as [Avg Page Space Used] ,cast (ps.avg_fragment_size_in_pages as int) as [Avg Fragment Size In Pages] ,ps.fragment_count as [Fragment Count] ,ps.page_count ,(ps.page_count * 8)/1024/1024 as [Size in GB] FROM sys.dm_db_index_physical_stats (DB_ID() --NULL = All Databases , OBJECT_ID('$(TABLENAME)') ,1 , NULL , 'SAMPLED') AS ps 35 --DETAILED, SAMPLED, NULL = LIMITED INNER JOIN sys.indexes AS i on (ps.object_id = i.object_id AND ps.index_id = i.index_id) WHERE ps.database_id = db_id() and ps.index_level = 0; A tabela a seguir fornece diretrizes gerais para interpretar valores de tamanho médio do fragmento. Tamanho médio do fragmento >400 Status Ação Ideal Esse é um valor ideal e pode ser difícil de manter para algumas estruturas de dados. 300-399 Verde A tabela fornecerá bom desempenho de E/S e não requer manutenção da fragmentação lógica. 150-299 Amarelo A fragmentação lógica tem mais probabilidade de afetar a eficiência de E/S. A manutenção é recomendada para melhorar a contagem de fragmentos. 10-149 Vermelho Fragmentação lógica severa. Grandes solicitações de E/S nessa estrutura resultarão em movimento significativo do cabeçote de disco e em redução da eficiência de E/S geral do sistema. <10 Vermelho Esses valores baixos de tamanho médio do fragmento geralmente significam que a opção de inicialização –E do SQL Server não foi definida ou não está sendo reconhecida na inicialização. Tabela 6: Valores de tamanho médio do fragmento Por fim, é importante observar que os resultados de tamanho médio do fragmento não devem ser avaliados para tabelas ou partições inferiores a 500 MB. As estruturas de dados pequenas simplesmente não têm páginas suficientes no total para atingir quantidades de fragmentos altamente eficazes. Além disso, essas estruturas de dados menores geralmente representam solicitações de dados relativamente pequenas e têm impacto limitado na eficiência geral de E/S do sistema. Muitas vezes, os melhores resultados são vistos no gerenciamento de tabelas maiores, acessadas com mais frequência em um ambiente de data warehouse. 36 Fragmentação de índice Um índice pode estar em ordens física (página) e lógica (índice) diferentes. Não use o comando ALTER INDEX REORGANIZE para resolver esse tipo de fragmentação, pois isso pode invalidar os benefícios de alocações grandes. Uma recompilação de índice ou o uso de INSERT…SELECT para inserir dados em uma nova cópia do índice (o que evita uma reordenação) podem resolver esse problema. Qualquer processo de ALTER INDEX REBUILD deve especificar SORT_IN_TEMPDB=TRUE para evitar a fragmentação do grupo de arquivos de destino. Um valor MAXDOP de 1 é ideal, mas pode resultar em taxas de carregamento muito lentas. É possível definir valores MAXDOP de até 8 em alguns casos. Para obter mais informações, consulte a seção Carregando dados deste documento. Vários grupos de arquivos Os grupos de arquivos separados podem ser criados para reduzir a fragmentação lógica de casos de uso de dados voláteis, como: Tabelas ou índices que frequentemente são removidos e recriados (deixando lacunas no layout do armazenamento que são novamente preenchidas por outros objetos). Índices para os quais não há nenhuma opção que não seja aceitá-los como altamente fragmentados devido a divisões de página, como nos casos em que frequentemente são carregados dados incrementais que, na maioria das vezes, sobrepõem o intervalo de chaves de índice clusterizado existente. Tabelas menores (como tabelas de dimensões) que são carregadas em incrementos relativamente pequenos, que podem ser colocados em um grupo de arquivos volátil para evitar que essas linhas se intercalem com grandes transações ou tabelas de fatos. Bancos de dados de preparo dos quais os dados são inseridos na tabela de destino final. Outras tabelas podem ser colocadas em um grupo de arquivos não volátil. Além disso, as tabelas de fatos muito grandes também podem ser colocadas em grupos de arquivos separados. Carregando dados A arquitetura de componentes Fast Track é balanceada para maiores taxas médias de exame obtidas com o acesso de disco sequencial. Para manter essas taxas de exame, é preciso tomar cuidado para garantir um layout de dados contíguo no sistema de arquivos do SQL Server. Esta seção é dividida em duas abordagens de alto nível: carregamento incremental e migração de dados. Estas diretrizes são específicas, mas não exclusivas, ao data warehouse Fast Track. Para obter mais informações sobre o carregamento em massa do SQL Server, consulte o Guia de Desempenho de Carregamento de Dados (http://msdn.microsoft.com/pt-br/library/dd425070.aspx). Outro recurso útil é o Guia de Práticas Recomendadas de Carregamento de Dados Fast Track 3.0. Essa apresentação do Microsoft PowerPoint pode ser encontrada no Portal do SQL Server Fast Track DW (http://msdn.microsoft.com/pt-br/library/dd425070.aspx). Embora inicialmente baseado no SQL Server 2008 R2, o documento ainda se aplica ao SQL Server 2012. 37 Cargas incrementais Esta seção abrange os cenários comuns de carga diária de um ambiente de data warehouse. Ela inclui cenários de carregamento com um ou mais dos seguintes atributos: Tamanho pequeno em relação à memória de sistema disponível As operações de classificação de carga se ajustam à memória disponível Tamanho pequeno em relação ao total de linhas no objeto de carga de destino As diretrizes a seguir devem ser consideradas durante o carregamento de tabelas heap e de índice clusterizado. Processo de carregamento de tabela heap As inserções em massa de tabelas heap podem ser implementadas como processo serial ou paralelo. Use as dicas a seguir: Para executar a movimentação de dados na tabela heap de destino, use BULK INSERT com a opção TABLOCK. Se a tabela permanente final for particionada, use a opção BATCHSIZE, pois o carregamento em uma tabela particionada gera uma classificação para que tempdb ocorra. Para melhorar o desempenho do tempo de carga quando estiver importando grandes conjuntos de dados, execute várias operações de inserção em massa ao mesmo tempo para usar o paralelismo no processo em massa. Processo de carregamento de índice clusterizado Existem duas abordagens gerais para carregar tabelas de índice clusterizado com fragmentação mínima da tabela. Opção 1 Use BULK INSERT para carregar dados diretamente na tabela de destino. Para otimizar o desempenho, o conjunto completo de dados que está sendo carregado deve caber em uma classificação na memória. Todos os dados carregados devem ser tratados por uma única operação de confirmação usando um valor BATCHSIZE de 0. Essa configuração impede que os dados em vários lotes sejam intercalados e gerem divisões de página. Se você usar essa opção, o carregamento deverá ocorrer em um único thread. Opção 2 Crie uma tabela de preparo que corresponda à estrutura (incluindo o particionamento) da tabela de destino: 38 Execute uma inserção em massa serial ou multithreaded na tabela de preparo vazia de índice clusterizado usando valores de tamanho de lote moderados e diferentes de zero para evitar que as classificações transbordem em tempdb. O melhor desempenho será obtido com qualquer nível de paralelismo. O objetivo desta etapa é o desempenho; portanto, as divisões de página e a fragmentação lógica induzidas por inserções paralelas e/ou simultâneas não são um problema. Faça uma inserção da tabela de preparo na tabela de índice clusterizado de destino usando uma única instrução INSERT…SELECT com um valor MAXDOP de 1. MAXDOP 1 garante fragmentação de extensão mínima, mas geralmente prejudica o desempenho. As configurações de MAXDOP de até 8 podem ser usadas para aumentar o desempenho da carga, mas mostrarão a crescente fragmentação de extensão à medida que o paralelismo aumentar. O equilíbrio efetivo nessa troca é mais bem avaliado caso a caso. Opção 3 Esta opção requer o uso de dois grupos de arquivos e de duas ou mais tabelas. A abordagem requer uma tabela de índice de cluster particionado e é mais adequada para as tabelas que percebem altos níveis de fragmentação lógica nas partições mais atuais com pouca ou nenhuma atividade nas partições mais antigas. A meta geral é colocar partições voláteis em um grupo de arquivos dedicado e antigo ou "mover" essas partições para o grupo de arquivos estático depois que elas pararem de receber novos registros ou alterações em registros existentes: 39 Crie dois grupos de arquivos, seguindo as diretrizes do FTDW. Um será dedicado a partições voláteis e o outro a partições estáticas. Uma partição volátil é aquela em que mais de 10% de linhas são alteradas ao longo do tempo. Uma partição estática é aquela que não é volátil. Crie a tabela primária particionada de índices de cluster no grupo de arquivos estático. Crie uma tabela consistente com uma das duas abordagens gerais a seguir: o Uma única tabela heap com uma restrição que espelhe o esquema de partição da tabela primária. Essa restrição deve representar o intervalo volátil do conjunto de dados primário e pode incluir um ou mais intervalos de partição do esquema da tabela primária. Isso será muito útil se o desempenho do carregamento inicial for o principal critério de decisão, pois os carregamentos em um heap costumam ser mais eficientes do que os carregamentos em um índice de cluster. o Uma única tabela de índice de cluster com um esquema de partição que seja consistente com a partição da tabela primária. Isso permite inserções diretas com baixo DOP (grau de paralelismo) na tabela primária à medida que as partições voláteis ficam antigas. Depois de envelhecerem por meio da inserção na tabela primária, as partições são removidas e novos intervalos são adicionados. Crie uma exibição que reúna ambas as tabelas. Essa exibição apresenta a combinação das duas tabelas como um único objeto da perspectiva do usuário. Depois que os intervalos de dados voláteis tornam-se estáticos de uma perspectiva de alteração de dados, use um processo de antiguidade apropriado, como a alternância de partição: o Se for usada uma tabela heap com restrição, mova os dados por intervalo de partição para o grupo de arquivos estático usando a inserção na tabela de preparo. Use CREATE INDEX e a alternância de partição para mover os dados para a tabela primária. Para obter mais informações sobre esse tipo de operação para configurações do FTDW, consulte a seção Migração de dados deste documento. o Se um índice clusterizado particionado for usado, use um DOP que seja menor ou igual a 8. Em seguida, realize uma operação INSERT restrita por intervalo de partição diretamente na tabela primária. Talvez você precise definir o DOP como 1 para evitar a fragmentação, dependendo da simultaneidade geral do sistema. Migração de dados Isso inclui cenários de grandes carregamentos ocasionais ou infrequentes em um ambiente de data warehouse. Essas situações podem ocorrer durante a migração de plataforma ou enquanto os dados de teste são carregados para a avaliação de desempenho do sistema. Este tópico inclui os cenários de carregamento com um ou mais dos seguintes atributos: Operações de carregamento que excedem a memória do sistema disponível Operações de carregamento de alta simultaneidade e alto volume que criam pressão sobre a memória disponível Processo de carregamento de tabela heap Siga as diretrizes fornecidas anteriormente para o processamento de carregamento incremental. Processo de carregamento de índice clusterizado Existem várias abordagens gerais para carregar tabelas de índice clusterizado com fragmentação mínima da tabela. Opção 1 Use BULK INSERT para carregar dados diretamente em uma tabela de destino de índice clusterizado. As operações de classificação e o tamanho completo da confirmação devem se ajustar à memória para otimizar o desempenho. É preciso tomar cuidado para garantir que esses lotes separados de dados que estão sendo carregados não tenham intervalos de chave de índice que se sobreponham. Opção 2 Execute uma inserção em massa serial ou multithreaded em uma tabela vazia de preparo de índice clusterizado de estrutura idêntica. Use um tamanho de lote moderado e diferente de zero para manter as classificações na memória. Em seguida, insira dados em uma tabela vazia de índice clusterizado usando uma única instrução INSERT...SELECT com um valor MAXDOP de 1. Opção 3 Use inserções em massa multithreaded em uma partição que esteja em conformidade com a tabela de preparo heap, usando valores de tamanho de lote moderados e diferentes de zero para manter as classificações na memória. Em seguida, use instruções INSERT…SELECT seriais ou paralelas que incluam cada intervalo de partição para inserir dados na tabela de índice clusterizado. 40 Opção 4 Use operações de alternância de partição em um processo de várias etapas, que geralmente fornece os melhores resultados para grandes operações de carregamento. Essa abordagem adiciona mais complexidade ao processo geral e foi criada para demonstrar que é ideal para o desempenho de carregamento bruto. O principal objetivo dessa abordagem é habilitar a atividade paralela de gravação em todas as fases da operação de inserção no índice de cluster sem apresentar fragmentação lógica. Isso é obtido com a preparação da tabela por vários grupos de arquivos antes de inserir os dados na tabela de destino final. 1. Identifique o esquema de partição para a tabela de índice de cluster de destino final. 2. Crie um grupo de arquivos de preparo. 3. Crie uma tabela de preparo "base" heap descompactada e não particionada no grupo de arquivos de preparo. 4. Insira dados em massa usando WITH TABLOCK para a tabela de preparo base. As operações múltiplas de cópia em massa paralela são a abordagem mais eficiente quando vários arquivos de origem são uma opção. O número de operações paralelas de carregamento para atingir uma taxa de transferência máxima depende dos recursos do servidor (CPU e memória) e dos dados que estão sendo carregados. 5. Identifique o número de grupos de arquivos primários que devem ter suporte. Esse número deve ser um múltiplo do número total de partições na tabela de destino. O número também representa o número total de operações INSERT e CREATE INDEX a serem executadas simultaneamente em etapas posteriores. Por exemplo, para uma tabela com 24 partições e um servidor com oito núcleos, seria indicado um banco de dados com oito grupos de arquivos primários. Essa configuração permite a execução de oito inserções paralelas nas próximas etapas, uma para cada um dos oito grupos de arquivos primários e núcleos de CPU. Cada grupo de arquivos, nesse caso, conteria três intervalos de partição de dados. 6. Crie o número de grupos de arquivos primários conforme determinado anteriormente. 7. Crie uma tabela heap de preparo em cada grupo de arquivos primário para cada intervalo de partição, sem compactação. Crie uma restrição na tabela de preparo que seja compatível com o intervalo de partição correspondente na tabela de destino. Usando o exemplo fornecido anteriormente, haveria três tabelas de preparo por grupo de arquivos primário criado nesta etapa. 8. Crie a tabela de destino de índice de cluster particionado com compactação de página. Essa tabela deve ser particionada por todos os grupos de arquivos primários. As partições devem ser alinhadas aos intervalos de restrição da tabela de preparo heap. 9. Execute uma instrução INSERT ou SELECT da tabela de preparo base para as tabelas de grupos de arquivos de preparo para cada grupo de arquivos primário. Isso deve ser feito em paralelo. Verifique se o predicado da instrução INSERT ou SELECT é compatível com os intervalos de partição correspondentes. Nunca execute mais de uma instrução INSERT ou SELECT por grupo de arquivos simultaneamente. 41 10. Execute um comando CREATE CLUSTERED INDEX com a compactação de página por grupo de arquivos para as tabelas de preparo recentemente populadas. Isso pode ser feito em paralelo, mas nunca com o DOP mais alto que 8. Nunca execute mais de uma criação de índice por grupo de arquivos simultaneamente. Certifique-se de usar a opção SORT_IN_TEMPDB sempre que executar uma operação CREATE INDEX para evitar a fragmentação dos grupos de arquivos primários. O número ideal de operações simultâneas de criação de índice dependerá do tamanho do servidor, da memória e dos dados em si. Em geral, tente a alta utilização de CPU em todos os núcleos sem inscrição excessiva (de 85 a 90% da utilização total). 11. Execute as operações de alternância de partição serial das tabelas de preparo para a tabela de destino. Isso também pode ser feito na conclusão de cada operação CREATE INDEX de preparo. Avaliação de desempenho e validação Esta seção fornece uma descrição básica dos processos usados para criar e qualificar arquiteturas de referência do FTDW do SQL Server. O objetivo de fornecer essas informações é dar suporte às arquiteturas de referência personalizadas ou definidas pelo usuário com base na metodologia do FTDW. Para avaliação de desempenho, solução de problemas ou verificação de arquiteturas de referência do parceiro pré-validadas e publicadas, contate o parceiro de publicação (H-P, Dell, EMC, IBM, Cisco, entre outros). O processo para validação do FTDW pode ser dividido em duas categorias descritas aqui. Validação de hardware de linha de base O objetivo da validação de hardware é estabelecer métricas de desempenho reais, e não classificadas, para os principais componentes de hardware da arquitetura de referência Fast Track. Esse processo determina características reais de desempenho de linha de base dos principais componentes de hardware na pilha do banco de dados. Validação de banco de dados Fast Track Estabelecer características de desempenho do SQL Server, com base em uma carga de trabalho do FTDW, permite a comparação com as suposições de desempenho fornecidas pelo processo de avaliação de hardware de linha de base. No geral, as métricas de taxa de transferência de carga de trabalho do banco de dados devem refletir pelo menos 80% das taxas de linha de base para arquiteturas de referência Fast Track validadas. As métricas de desempenho calculadas nesse processo são a base para valores de desempenho do FTDW publicados e se baseiam nas cargas de trabalho simultâneas de consulta SQL executadas com a ferramenta de avaliação de desempenho Fast Track Reference Point. 42 O Ponto de Referência é uma ferramenta de software da Microsoft distribuída aos parceiros de hardware Fast Track e é a única infraestrutura pela qual uma arquitetura de referência oficial Fast Track pode ser validada e aprovada pela Microsoft. A ferramenta instancia um esquema de banco de dados de referência e direciona várias cargas de trabalho simultâneas de consulta projetadas para identificar afunilamentos e estabelecer importantes medidas de desempenho do sistema. Validação do Fast Track com índices columnstore otimizados para a memória xVelocity O SQL Server 2012 implementa a tecnologia de índice columnstore como uma opção de indexação não clusterizada para tabelas preexistentes. As consultas individuais podem ou não usar planos de otimização do índice columnstore de acordo com a estrutura da consulta. Isso significa que a combinação de planos de consulta de colunas novos e de linhas tradicionais para um ambiente do FTDW em um momento determinado não pode ser prevista. Por esses motivos, o FTDW para design e validação do sistema SQL Server 2012 se baseia em avaliações de desempenho não relacionadas a índices columnstore. Os sistemas FTDW foram desenvolvidos para serem executados com eficiência caso nenhuma otimização de coluna seja obtida em nenhum período de tempo determinado. Muitas vezes, os ganhos de desempenho significativos são obtidos quando os planos de consulta do índice columnstore estão ativos, e esse desempenho pode ser exibido como incremental para o design básico do sistema As arquiteturas de referência Fast Track para SQL Server 2012 validadas por parceiros publicam uma classificação de taxa de transferência lógica adicional para avaliações de desempenho aprimoradas pelo índice columnstore, e esses números podem ser usados para estimar o impacto positivo no desempenho de consultas que os clientes podem esperar sob carga de trabalho de consultas simultâneas. Esses números são baseados nas mesmas avaliações de desempenho do FTDW e no esquema usados para todas as validações do sistema. Executando a validação do FTDW de linha de base A validação de linha de base é feita no nível de sistema operacional com uma ferramenta como o SQLIO. Os testes de aplicativos do SQL Server não são feitos nessa fase, e todos os testes são cenários sintéticos do melhor caso. O objetivo é garantir que a configuração de hardware e sistema operacional seja precisa e forneça os resultados esperados com base nas avaliações de desempenho de design e desenvolvimento. O Monitor de Desempenho e Confiabilidade do Windows Server (também conhecido como perfmon) pode ser usado para rastrear, registrar e relatar o desempenho de E/S. Uma ferramenta como o SQLIO pode ser usada para testar a largura da banda de E/S. Para obter mais informações sobre o SQLIO, incluindo instruções e locais de download, consulte o white paper do SQLCAT Práticas recomendadas de pré-implantação de E/S (http://sqlcat.com/sqlcat/b/whitepapers/archive/2007/11/21/predeployment-i-o-best-practices.aspx). Os componentes e processos de validação a seguir são usados para gerar avaliações de desempenho de hardware de linha de base. 43 Testes de linha de base com o SQLIO O uso do SQLIO é descrito de forma mais completa no artigo de práticas recomendadas. Os testes de leitura geralmente recebem o formato: sqlio –kR –fSequential -s30 -o120 -b512 d:\iobw.tst –t1 Nesse caso, R indica um teste de leitura, 30 é a duração do teste em segundos, 120 é o número de solicitações pendentes emitidas, 512 é o tamanho do bloco em quilobytes de solicitações feitas, d:\iobw.tst é o local do arquivo de teste e 1 é o número de threads. Para testar cenários de agregação de largura de banda, devem ser emitidos vários testes do SQLIO em paralelo. Uma única instância do SQLIO deve ser usada para cada ponto de montagem de dados primário (volume de disco). A paralelização das instâncias do SQLIO pode ser obtida com o Windows PowerShell ou outros métodos de geração de script. Para arquiteturas de referência FTDW validadas por parceiros, os scripts de validação de E/S de linha de base podem ser disponibilizados pelo parceiro. O artigo sobre práticas recomendadas de pré-implantação também aborda como rastrear seus testes usando o Monitor de Desempenho e Confiabilidade do Windows Server. O registro e o armazenamento dos resultados desses testes fornecerão uma linha de base para a análise de desempenho e a resolução de problemas futuros. Etapa 1 - Validar a largura de banda de E/S A primeira etapa na validação de uma configuração do FTDW é determinar a taxa de transferência de agregação máxima que pode ser percebida entre a rede de E/S de armazenamento e o servidor. Isso envolve remover o disco como um afunilamento e concentrar-se em componentes não relacionados ao disco (isto é, HBAs, infraestrutura de comutador e controladores de matriz). Use as etapas a seguir para executar essa tarefa usando o SQLIO: 1. Gere um arquivo de dados pequeno em cada LUN a ser usado para arquivos de banco de dados. Esses arquivos devem ser dimensionados de forma que todos os arquivos de dados se ajustem ao cache de leitura nos controladores da matriz (por exemplo, 50 MB por arquivo). 2. Use o SQLIO para emitir leituras sequenciais no arquivo que usa simultaneamente tamanhos de blocos grandes de E/S (512 K) e, pelo menos, dois threads de leitura por arquivo. Certifique-se de calcular leituras pendentes de agregação. Por exemplo, 2 threads de leitura com 50 solicitações pendentes seriam responsáveis por um total de 100 solicitações pendentes para o LUN de destino. 3. Comece com um valor relativamente baixo de operações de E/S pendentes (-o) e repita os testes aumentando esse valor até que não haja mais ganho na taxa de transferência de agregação. A meta desse teste é atingir uma taxa de transferência de agregação que seja razoável em comparação com os limites teóricos dos componentes no caminho entre o servidor e o armazenamento. Esse teste valida a largura da banda entre o servidor e os processadores de armazenamento da rede SAN, isto é, os caminhos Fibre Channel de Múltiplos Caminhos. 44 Etapa 2 - Validar a largura de banda de LUN/volume Esse teste é semelhante ao teste anterior. No entanto, é usado um arquivo maior para remover os possíveis benefícios do cache de matriz do cache do controlador. Esses arquivos de teste devem ser grandes o bastante para simular o tamanho do arquivo de banco de dados de destino por volume, por exemplo, 25 GB por volume. Parâmetros semelhantes devem ser usados para o SQLIO, conforme descrito na etapa 1. As leituras sequenciais de bloco grande (512 KB) devem ser emitidas nos arquivos de teste em cada volume. Recomendamos usar um único thread por arquivo com uma profundidade de solicitação pendente em torno de 4 e 16 (comece com um número baixo e aumente até que a taxa de transferência máxima seja atingida). Em primeiro lugar, teste cada volume individualmente e, em seguida, teste os dois simultaneamente. A taxa de transferência do grupo de discos varia por fornecedor de armazenamento e configuração, mas a comparação sempre pode ser feita com taxas únicas de leituras de HDD. Um grupo de discos RAID1+0 de 4 discos, por exemplo, poderia atingir uma taxa de leitura de pico de aproximadamente quatro vezes a taxa de leitura única de HDD para esse tipo de padrão de leitura básico. O desempenho do RAID 1 ou 1+0 pode variar por produto de armazenamento, pois a tecnologia de alguns fornecedores permite a "leitura espelhada", a qual permite que as operações de E/S sejam atendidas em ambos os lados do par espelhado quando solicitações contíguas são recebidas. Etapa 3 - Validar a largura de banda de agregação Nesse teste, as leituras sequenciais devem ser executadas simultaneamente em todos os volumes de dados disponíveis nos mesmos arquivos usados na etapa 2. O SQLIO deve ser executado usando dois threads por arquivo de teste, com um tamanho de E/S de 512 K e um número ideal de E/Ss pendentes, conforme determinado pelo teste anterior. Os resultados desse teste ilustram a taxa de transferência máxima de agregação que pode ser atingida na leitura de dados dos discos físicos. Os dados são lidos no arquivo de dados grande, como no teste anterior, em cada volume simultaneamente. O desempenho de agregação do disco deve estar na faixa de 80 a 90% da largura de banda de E/S de armazenamento agregado, para sistemas FTDW balanceados. Classificações de componentes O diagrama a seguir ilustra os resultados da avaliação de desempenho sintética que são consistentes com os valores vistos em arquiteturas de referência Fast Track semelhantes. 45 Figura 4: Exemplo de largura de banda percebida pela avaliação de desempenho sintética para um servidor de 12 núcleos e 2 soquetes com 3 placas HBA de 8 Gbps de porta dupla, com 12 volumes de dados primários RAID1+0 de 4 discos. Resumo A avaliação de desempenho de hardware de linha de base valida a capacidade real da largura de banda para os principais componentes de hardware da pilha de banco de dados. Essa validação é feita com uma série de testes sintéticos do melhor caso executados com uma ferramenta como o SQLIO. Executando a avaliação de desempenho de banco de dados Fast Track Essa fase de avaliação da FTRA mede o desempenho do SQL Server para a carga de trabalho do FTDW em termos de duas métricas principais. A primeira, MCR (taxa máxima de consumo de CPU), é uma medida da taxa de transferência de processamento máximo de E/S. A segunda, BCR (taxa de consumo de CPU da avaliação de desempenho), é uma medida da taxa de transferência real do processamento de E/S para uma consulta ou uma carga de trabalho baseada em consulta. 46 O que é MCR? O cálculo da MCR fornece um valor de taxa de transferência de E/S por núcleo em MB ou GB por segundo. Para medir esse valor, é necessário executar uma consulta predefinida, somente leitura e não otimizada no cache do buffer e medir o tempo de execução em relação à quantidade de dados em MB ou GB. Como a MCR é executada no cache, ela representa a taxa máxima de exame não otimizada que pode ser atingida com o SQL Server para o sistema que está sendo avaliado. Por esse motivo, a MCR fornece uma taxa de pico de linha de base para fins de design inicial. Ela não se destina a indicar os resultados médios ou esperados para uma carga de trabalho real. As arquiteturas do FTDW validadas terão os resultados da taxa de transferência de E/S de linha de base agregada que são, pelo menos, 100% da MCR classificada pelo servidor. Outra maneira de explicar isso é declarar que a MCR representa a melhor taxa possível de processamento do SQL Server para uma carga de trabalho razoável do pior caso. A MCR também pode ser usada como um quadro de referência na comparação de outras arquiteturas de referência do FTDW publicadas e validadas para o SQL Server 2012. Em resumo: A MCR não representa os resultados reais definitivos para uma carga de trabalho do cliente. A MCR fornece uma linha de base da taxa máxima de processamento de dados para o SQL Server e uma única consulta associada à carga de trabalho Fast Track. A MCR é específica a uma CPU e um servidor. Em geral, as taxas de uma determinada CPU variam muito por servidor e arquitetura de placa-mãe, mas a MCR final deve ser determinada pelos testes reais. A classificação da taxa de transferência da MCR pode ser usada como um valor comparativo em relação a arquiteturas de referência do FTDW existentes já publicadas. Isso pode ajudar na escolha do hardware antes dos testes de componentes e aplicativos. Calculando a MCR Uma taxa de consumo de CPU de linha de base para o aplicativo SQL Server é estabelecida por uma consulta SQL padrão definida para o programa FTDW. Essa consulta foi desenvolvida para ser uma representação relativamente simples de uma consulta comum para o tipo de carga de trabalho (nesse caso, o data warehouse) e é executada no cache de buffer. O valor resultante é específico à CPU e ao servidor em que a consulta está sendo executada. Use este método para calcular a MCR: 1. Crie um conjunto de dados de referência com base na tabela lineitem do TPC-H ou em um conjunto de dados semelhante. A tabela deve ser de um tamanho que possa ser totalmente armazenada em cache no pool de buffers do SQL Server, mas ainda manter um tempo de execução mínimo de um segundo para a consulta fornecida aqui. 2. Para o FTDW, a seguinte consulta é usada: SELECT sum([integer field]) FROM [table] WHERE [restrict to appropriate data volume] GROUP BY [col]. 47 3. O ambiente deve: o Garantir que as configurações do Administrador de Recursos tenham os valores padrão. o Garantir que a consulta esteja sendo executada no cache do buffer. A primeira execução da consulta deve colocar as páginas no buffer e as execuções subsequentes devem ler somente do buffer. Verifique se não há leituras físicas na saída de estatísticas da consulta. o Definir STATISTICS IO e STATISTICS TIME como ON para gerar os resultados. 4. Execute a consulta várias vezes, com MAXDOP = 4. 5. Registre o número de leituras lógicas e o tempo de CPU da saída de estatísticas para cada execução da consulta. 6. Calcule a MCR em MB/s usando a fórmula: ( [Leituras lógicas] / [Tempo de CPU em segundos] ) * 8 KB / 1024 7. Um intervalo de valores consistente (+/- 5%) deve aparecer em um mínimo de cinco execuções da consulta. As exceções significativas (+/- 20% ou mais) podem indicar problemas de configuração. A média de pelo menos 5 resultados calculados é a MCR do FTDW. Com base no cálculo da MCR, é possível criar um diagrama da taxa de transferência da arquitetura do componente. Para fins de avaliação da MCR do sistema, a taxa de transferência do componente é baseada na largura de banda classificada pelo fornecedor. Este diagrama pode ser útil para o design, a seleção e a análise de afunilamentos do sistema. A Figura 5 ilustra um exemplo disso. 48 Figura 5: Exemplo de MCR e largura de banda de componentes classificados para um servidor de 12 núcleos e 2 soquetes baseado em CPUs Intel Westmere Para obter mais informações sobre como medir a MCR, consulte Teste de carga de trabalho no apêndice. Calculando a BCR Uma taxa de consumo de CPU da avaliação de desempenho do aplicativo do SQL Server é estabelecida com a execução de um conjunto de linha de base das consultas SQL, sob um nível adequado de simultaneidade, que são específicas à sua carga de trabalho de data warehouse. O número de consultas e o nível de simultaneidade usados dependem completamente do caso de uso esperado. A carga de trabalho da consulta deve ser atendida no disco, não no pool de buffers do SQL Server, como acontece com a MCR. O valor resultante é específico à CPU, ao servidor e à carga de trabalho em que a consulta está sendo executada. A entrada do apêndice para Teste de carga de trabalho fornece um exemplo mais detalhado de como criar uma avaliação de desempenho de carga de trabalho da BCR. 49 Use este método para calcular a BCR: 1. Crie um conjunto de dados de referência que contenha pelo menos uma tabela. A tabela deve ter um tamanho suficiente significativo, que não seja inteiramente armazenado em cache no pool de buffers do SQL Server nem no cache de matriz da rede SAN. Na ausência de dados do cliente, um conjunto de dados sintético pode ser usado. É importante tentar aproximar as características esperadas dos dados do caso de uso pretendido. 2. A forma básica de consulta para o FTDW é a seguinte: SELECT sum([integer field]) FROM [table] WHERE [restrict to appropriate data volume] GROUP BY [col]. Ela poderá ser usada como um ponto de partida para o design de carga de trabalho de consulta se as consultas do cliente não estiverem prontamente disponíveis. TPC-H é outra avaliação de desempenho de consulta usada frequentemente que pode ser tratada como um conjunto de consultas de referência. 3. Para uma avaliação de desempenho de cliente do FTDW é sempre ideal escolher as consultas que são representativas da carga de trabalho de destino. As consultas devem ser agendadas em várias sessões simultâneas que representam a atividade máxima histórica ou projetada para o ambiente do cliente. Os critérios a seguir podem ser considerados na seleção da consulta: Represente os requisitos médios da carga de trabalho de destino. Isso pode indicar o aumento ou a diminuição da complexidade da forma básica de consulta, a adição de junções e/ou o descarte de mais ou menos dados por meio de projeção e restrição. A consulta não deve causar gravações de dados em tempdb, a menos que essa característica seja uma parte essencial da carga de trabalho de destino. A consulta deve retornar linhas mínimas. A opção SET ROWCOUNT pode ser usada para gerenciar isso. Deve ser usado um valor ROWCOUNT maior que 100 (105 é o padrão para a avaliação de desempenho do Fast Track). Como alternativa, a agregação pode ser usada para reduzir os registros retornados de grandes exames irrestritos. 4. O ambiente deve: Garantir que as configurações do Administrador de Recursos sejam definidas para os valores padrão. Garantir que os caches sejam limpos antes da execução da consulta, usando DBCC dropcleanbuffers. Definir STATISTICS IO e STATISTICS TIME como ON para gerar os resultados. 5. Execute a consulta ou a carga de trabalho várias vezes, começando em MAXDOP 8. Toda vez que você executar a consulta, aumente a configuração MAXDOP para a consulta, limpado os caches entre cada execução. Registre o número de leituras lógicas e o tempo de CPU da saída de estatísticas. Calcule a BCR em MB/s usando a fórmula: ( [Leituras lógicas] / [Tempo de CPU em segundos] ) * 8 KB / 1024 Isso fornece um intervalo para a BCR. Se várias consultas forem usadas, use uma média ponderada para determinar a BCR. 50 Resultados da BCR A Figura 6 ilustra os resultados da avaliação de desempenho baseada na carga de trabalho do SQL Server que são consistentes com os valores vistos em arquiteturas de referência do Fast Track Data Warehouse semelhantes. Figura 6: Exemplo de largura de banda percebida pela avaliação de desempenho sintética para um servidor de 12 núcleos e 2 soquetes com 3 placas HBA de 8 Gbps de porta dupla, com 12 LUNs de dados primários RAID1+0 de 4 discos 51 Interpretando a BCR Se sua CR para a consulta média for muito menor que a MCR padrão avaliada para a FTRA, é provável que você esteja limitado à CPU. Em resposta, você pode pensar na diminuição da taxa de transferência de armazenamento, por exemplo, reduzindo o número de matrizes, introduzindo mais discos por matriz ou aumentando o tamanho dos discos – essas etapas podem ajudar a reduzir os custos de infraestrutura de armazenamento a um nível balanceado. Como alternativa, você pode pensar em como usar um servidor com um número de soquetes mais alto ou CPUs de desempenho mais alto que possam aproveitar a taxa de transferência de E/S de armazenamento excedente. Em ambos os casos, a meta é equilibrar a capacidade de processamento do banco de dados com a taxa de transferência de E/S do armazenamento. De modo correspondente, se sua BCR for mais alta que a MCR, talvez você precise de mais taxa de transferência de E/S para processar uma carga de trabalho de consulta de maneira equilibrada. Arquiteturas de referência do FTDW publicadas As especificações detalhadas da arquitetura de referência de hardware estão disponíveis em cada parceiro participante do Fast Track Data Warehouse. Para obter mais informações, incluindo links para cada parceiro, consulte Fast Track Data Warehouse (http://www.microsoft.com/sqlserver/pt/br/solutions-technologies/data-warehousing/fast-track.aspx). A capacidade do FTDW foi avaliada pela estimativa da quantidade de arquivos de dados de usuário não compactados que podem ser carregados no banco de dados. Isso é chamado de UDC (capacidade de dados do usuário). Esse cálculo supõe que a compactação de página esteja habilitada para todas as tabelas e que os volumes de dados serão espelhados. É usado um fator médio de compactação de 3,5:1. Além disso, uma alocação de até 30% de capacidade não compactada é alocada para tempdb antes do cálculo da UDC. Observe que, para configurações maiores com mais capacidade total, essa taxa é reduzida para até 20%. Para obter informações sobre o dimensionamento de tempdb, consulte Planejamento de capacidade para tempdb (http://msdn.microsoft.com/pt-br/library/ms345368.aspx). Conclusão O SQL Server Fast Track Data Warehouse oferece um modelo e ferramentas para desde o design até a implantação de um data warehouse. Este documento descreve a metodologia, as opções de configuração, as práticas recomendadas, as configurações de referência e as técnicas de avaliação de desempenho e validação do Fast Track Data Warehouse. 52 Para obter mais informações: Site do SQL Server Site do SQL Server Fast Track TechCenter do SQL Server Recursos online do SQL Server As 10 principais práticas recomendadas para criação de data warehouses relacionais em grande escala (equipe do SQLCAT) Como habilitar a opção Bloquear Páginas na Memória (Windows) Opções de ajustes para o SQL Server 2005 e o SQL Server 2008 ao executar cargas de trabalho de alto desempenho Como configurar o SQL Server para usar o NUMA para software Inicialização de arquivos de bancos de dados Como exibir ou alterar o modelo de recuperação de um banco de dados (SQL Server Management Studio) Monitorando o uso da memória Solucionando problemas de rede SAN Instalando e configurando o MPIO White paper de noções básicas sobre E/S do SQL Server 2000 Compactação de dados: estratégia, planejamento de capacidade e práticas recomendadas Este documento ajudou você? Envie seus comentários. Em uma escala de 1 (ruim) a 5 (excelente), como você classificaria este white paper e por quê? Por exemplo: Você está classificando-o como excelente devido aos bons exemplos, às excelentes capturas de tela, à clareza do texto ou por outro motivo? Você está classificando-o como ruim devido aos exemplos insatisfatórios, às capturas de tela confusas ou ao texto mal-escrito? Estes comentários nos ajudam a melhorar a qualidade dos white papers que lançamos. Enviar comentários. 53 Apêndice Ferramenta de dimensionamento do sistema FTDW A ferramenta FTDW System Sizing é uma calculadora em formato de planilha que ajuda você a calcular um requisito de carga de trabalho do cliente em termos de taxa de transferência do sistema FTDW. Você pode usar essa ferramenta na ausência de uma plataforma de teste ou como ponto de partida ao avaliar requisitos do cliente. A ferramenta pode ser encontrada em Fast Track Data Warehouse (http://www.microsoft.com/sqlserver/pt/br/solutions-technologies/ data-warehousing/fast-track.aspx). Além disso, alguns fornecedores parceiros criaram as próprias ferramentas de dimensionamento em conformidade com o Fast Track. Elas podem ser encontradas nos sites dos parceiros. Validando uma FTRA definida pelo usuário Testes sintéticos de E/S O SQLIO é uma ferramenta disponível para download da Microsoft que permite testar o subsistema de E/S independentemente do SQL Server. Gerando arquivos de teste com o SQLIO Quando você executa o SQLIO, ele cria um arquivo de teste apropriado, caso esse arquivo não esteja presente. Para gerar um arquivo de um tamanho específico, use o parâmetro –F. Por exemplo, use um arquivo de parâmetro (param.txt) que contenha o seguinte: C:\stor\pri\1\iobw.tst 1 0x0 50 A execução de SQLIO com o parâmetro –F gera um arquivo de 50 MB na primeira execução: Eq sqlio -kW -s60 -fsequential -o1 -b64 -LS -Fparam.txt Esse processo pode ser demorado para arquivos grandes. Crie um arquivo em cada disco de dados no qual você hospedará os dados do SQL Server e os arquivos tempdb. Isso pode ser feito com a inclusão de mais linhas ao arquivo de parâmetro, que criará os arquivos necessários, um a um. Para criar arquivos em paralelo, crie vários arquivos de parâmetro e execute várias sessões do SQLIO simultaneamente. Validar a largura de banda do armazenamento (no cache) Usar um arquivo de teste pequeno com uma duração de leitura de vários minutos garante que o arquivo resida por completo no cache da matriz. A Figura 7 mostra o contador Disco Lógico > Bytes de Leitura/s nos discos em um exemplo do sistema Fast Track em vários números de solicitações pendentes e tamanhos de bloco. Os testes devem ser executados, pelo menos, durante alguns minutos para garantir um desempenho consistente. A figura mostra que o bom desempenho exige uma fila de solicitações pendentes de, pelo menos, quatro solicitações por arquivo. Cada disco individual deve contribuir para a largura de banda total. 54 Figura 7: Contador Disco Lógico > Bytes de Leitura/s Validar largura de banda de LUN/volume (no disco) Esses testes garantem que todos os volumes de disco apresentados pelas matrizes de disco para o Windows sejam capazes de contribuir com a largura de banda agregada geral, lendo cada volume individualmente. Você pode ver que alguns dos LUNs parecem ser um pouco mais rápidos do que outros. Isso não é incomum, mas as diferenças superiores a 15% devem ser examinadas. Figura 8: Validando a largura de banda do par LUN/volume e RAID 55 Execute testes simultâneos em um ou mais volumes que compartilhem o mesmo grupo de discos. A imagem a seguir mostra a saída dos testes em 8 grupos de discos. Figura 9: Testando LUNs que compartilham grupos de disco Validar largura de banda agregada (no disco) O teste a seguir demonstra o efeito de aumentar a taxa de transferência de E/S adicionando um volume extra ao teste em intervalos regulares. À medida que cada teste for executado para um intervalo de conjuntos, você observará uma diminuição. Você deverá notar um padrão semelhante. A largura de banda agregada máxima do disco deve se aproximar de 80% a 90% da largura de banda demonstrada no cache na primeira etapa. O gráfico mostra o teste em vários tamanhos de bloco, 512 K e 64 K. Figura 10: Largura de banda agregada em vários tamanhos de bloco 56 Testes de carga de trabalho Medindo a MCR para seu servidor (opcional) A meta da MCR é calcular a taxa de transferência máxima de um único núcleo de CPU, que executa o SQL Server, na ausência de problemas de afunilamento de E/S. A MCR é avaliada por núcleo. Se você optou por esse cálculo para seu próprio servidor, aqui são fornecidos os detalhes adicionais que descrevem a metodologia para calcular a MCR: 1. Crie um conjunto de dados de referência com base na tabela lineitem do TPC-H ou em um conjunto de dados semelhante. A tabela deve ter um tamanho que permita seu armazenamento completo em cache no pool de buffers do SQL Server, mas ainda manter um tempo de execução mínimo de 2 segundos para a consulta fornecida aqui. 2. Para o FTDW, a seguinte consulta é usada: SELECT sum([integer field]) FROM [table] WHERE [restrict to appropriate data volume] GROUP BY [col]. 3. O ambiente deve: Garantir que o Administrador de Recursos seja definido para os valores padrão. Garantir que a consulta esteja sendo executada no cache do buffer. A primeira execução da consulta deve colocar as páginas no buffer e as execuções subsequentes devem ler somente do buffer. Verifique se não há leituras físicas na saída de estatísticas da consulta. Definir STATISTICS IO e STATISTICS TIME como ON para gerar os resultados. 4. Execute a consulta várias vezes, com MAXDOP = 4. Registre o número de leituras lógicas e o tempo de CPU da saída de estatísticas para cada execução da consulta. Calcule a MCR em MB/s usando a fórmula: ( [Leituras lógicas] / [Tempo de CPU em segundos] ) * 8 KB / 1024 Um intervalo de valores consistente (+/- 5%) deve aparecer em um mínimo de cinco execuções da consulta. As exceções significativas (+/- 20% ou mais) podem indicar problemas de configuração. A média de pelo menos 5 resultados calculados é a MCR do FTDW. Medindo a BCR para sua carga de trabalho A medida de BCR é semelhante à medida de MCR, exceto pelo fato de que os dados são atendidos no disco, não no cache. A consulta e o conjunto de dados para a BCR representam a carga de trabalho do seu data warehouse de destino. Uma abordagem para a BCR é executar uma consulta simples, uma consulta média e uma consulta complexa na carga de trabalho. As consultas complexas devem ser aquelas que colocam mais demandas na CPU. A consulta simples deve ser análoga à MCR e deve realizar um volume de trabalho semelhante, de modo que seja comparável à MCR. Criando o banco de dados Veja o exemplo de uma instrução CREATE DATABASE para um sistema FTDW de 8 núcleos, com 16 LUNs de dados. 57 CREATE DATABASE FT_Demo ON ( NAME = N 'FT_Demo_.mdf' , FILEGROWTH = 0 ), ( NAME = N 'FT_Demo_v1.ndf' FILEGROWTH = 0 ), ( NAME = N 'FT_Demo_v2.ndf' FILEGROWTH = 0 ), ( NAME = N 'FT_Demo_v3.ndf' FILEGROWTH = 0 ), ( NAME = N 'FT_Demo_v4.ndf' FILEGROWTH = 0 ), PRIMARY Filegroup FT_Demo FILENAME = N'C:\FT\PRI\SE1-SP1-DG1-v1' , SIZE = 100MB , ( NAME = N FILEGROWTH ( NAME = N FILEGROWTH ( NAME = N FILEGROWTH ( NAME = N FILEGROWTH , FILENAME = N'C:\FT\PRI\SE2-SP1-DG6-v6' , SIZE = 417GB , ( , ( , ( , ( , 'FT_Demo_v6.ndf' = 0 ), 'FT_Demo_v7.ndf' = 0 ), 'FT_Demo_v8.ndf' = 0 ), 'FT_Demo_v9.ndf' = 0 ), , FILENAME = N'C:\FT\PRI\SE1-SP1-DG1-v1' , SIZE = 417GB , , FILENAME = N'C:\FT\PRI\SE1-SP1-DG2-v2' , SIZE = 417GB , , FILENAME = N'C:\FT\PRI\SE1-SP2-DG3-v3' , SIZE = 417GB , , FILENAME = N'C:\FT\PRI\SE1-SP2-DG4-v4' , SIZE = 417GB , , FILENAME = N'C:\FT\PRI\SE2-SP1-DG7-v7' , SIZE = 417GB , , FILENAME = N'C:\FT\PRI\SE2-SP2-DG8-v8' , SIZE = 417GB , NAME = N 'FT_Demo_v11.ndf' FILEGROWTH = 0 ), NAME = N 'FT_Demo_v12.ndf' FILEGROWTH = 0 ), NAME = N 'FT_Demo_v13.ndf' FILEGROWTH = 0 ), NAME = N 'FT_Demo_v14.ndf' FILEGROWTH = 0 ), , FILENAME = N'C:\FT\PRI\SE2-SP2-DG9-v9' , SIZE = 417GB , , FILENAME = N'C:\FT\PRI\SE3-SP1-DG11-v11' , SIZE = 417GB , FILENAME = N'C:\FT\PRI\SE3-SP1-DG12-v12' , SIZE = 417GB , FILENAME = N'C:\FT\PRI\SE3-SP2-DG13-v13' , SIZE = 417GB , FILENAME = N'C:\FT\PRI\SE3-SP2-DG14-v14' , SIZE = 417GB LOG ON ( NAME = N 'FT_LOG_v5.ldf' , FILENAME = N 'C:\FT\LOG\SE1-SP2-DG5-v5' , SIZE = 100GB , MAXSIZE = 500GB , FILEGROWTH = 50 ) GO /*****************Configure recommended settings***********************/ ALTER DATABASE FT_Demo SET AUTO_CREATE_STATISTICS ON GO ALTER DATABASE GO FT_Demo SET AUTO_UPDATE_STATISTICS ON ALTER DATABASE GO FT_Demo SET AUTO_UPDATE_STATISTICS_ASYNC ON ALTER DATABASE GO FT_Demo SET RECOVERY SIMPLE sp_configure 'show advanced options', 1 go reconfigure with override go /********Make sure all tables go on our filegroup and not the Primary filegroup****/ ALTER DATABASE FT_Demo MODIFY FILEGROUP FT_Demo DEFAULT GO 58 Criando as tabelas de teste Aqui está um exemplo da instrução CREATE TABLE. CREATE TABLE lineitem ( l_orderkey bigint not null, l_partkey integer not null, l_suppkey integer not null, l_linenumber integer not null, l_quantity float not null, l_extendedprice float not null, l_discount float not null, l_tax float not null, l_returnflag char(1) not null, l_linestatus char(1) not null, l_shipdate datetime not null, l_commitdate datetime not null, l_receiptdate datetime not null, l_shipinstruct char(25) not null, l_shipmode char(10) not null, l_comment varchar(132) not null ) ON FT_Demo GO CREATE CLUSTERED INDEX cidx_lineitem ON lineitem(l_shipdate ASC) WITH( SORT_IN_TEMPDB = ON , DATA_COMPRESSION = PAGE ) ON FT_Demo GO Carregando dados para avaliação de BCR Conforme descrito anteriormente neste documento, os sistemas Fast Track Data Warehouse reconhecem a fragmentação dos arquivos de banco de dados. Use uma das técnicas que este documento descreve para carregamento de dados. Durante os testes do FTDW, foi usado o método de carregamento de índice clusterizado descrito como a opção 2. Usando a ferramenta datagen do TPC-H, os dados da tabela lineitem foram gerados com um tamanho de 70 GB, usando opções -s100, gerando o arquivo em 8 partes e usando as opções –S e –C. O sinalizador de rastreamento 610 foi definido durante todas as operações de carregamento para usar o registro em log mínimo sempre que possível. Usando BULK INSERT, esses dados foram inseridos paralelamente em uma única tabela de preparo de índice clusterizado, usando o log mínimo; escolhemos um tamanho de bloco que não oprimisse a memória disponível e que reduzisse o derramamento no disco. Desabilitar os bloqueios de página e o escalonamento de bloqueio na tabela de preparo melhorou o desempenho durante essa fase. Uma inserção final foi executada em uma tabela de destino idêntica, com MAXDOP 1 (usando a dica TABLOCK) e evitando uma classificação. 59 Executando consultas para avaliação da BCR Use a ferramenta SQL Server Profiler para registrar informações relevantes de avaliações de desempenho de consulta. O SQL Server Profiler deve ser configurado para registrar leituras lógicas, a CPU, a duração, o nome do banco de dados, o nome do esquema, a instrução SQL e os planos de consulta reais. Como alternativa, podem ser usados os parâmetros de sessão de estatísticas set statistics io on e set statistics time on. Veja alguns exemplos de consultas (com base nas consultas da avaliação de desempenho TPC-H) e a BCR atingida nos sistemas de referência. Observe que este exemplo não é uma indicação de que o desempenho será obtido em qualquer sistema. Os números da BCR são exclusivos do sistema, do tamanho do esquema, dos tipos de dados, da estrutura de consulta e das estatísticas, apenas para citar algumas das muitas variáveis. Complexidade da consulta BCR por núcleo (Página compactada ) em MAXDOP 4 Simples 201 MB/s Média 83 MB/s Complexa 56 MB/s Tabela 7: Exemplos de avaliações de desempenho Simples SELECT sum(l_extendedprice * l_discount) as revenue FROM lineitem WHERE l_discount between 0.04 - 0.01 and 0.04 + 0.01 and l_quantity < 25 OPTION (maxdop 4) Média SELECT l_returnflag, l_linestatus, sum(l_quantity) as sum_qty, sum(l_extendedprice) as sum_base_price, sum(l_extendedprice*(1-l_discount)) as sum_disc_price, sum(l_extendedprice*(1-l_discount)*(1+l_tax)) as sum_charge, avg(l_quantity) as avg_qty, avg(l_extendedprice) as avg_price, avg(l_discount) as avg_disc, count_big(*) as count_order FROM lineitem WHERE l_shipdate <= dateadd(dd, -90, '1998-12-01') 60 GROUP BY l_returnflag, l_linestatus ORDER BY l_returnflag, l_linestatus OPTION (maxdop 4) Complexa SELECT 100.00 * sum(case when p_type like 'PROMO%' then l_extendedprice*(1-l_discount) else 0 end) / sum(l_extendedprice * (1 - l_discount)) as promo_revenue FROM lineitem, part WHERE l_partkey = p_partkey and l_shipdate >= '1995-09-01' and l_shipdate < dateadd(mm, 1, '1995-09-01') OPTION (maxdop 4) Fatores que afetam a taxa de consumo da consulta Nem todas as consultas atingirão a MCR (taxa máxima de consumo de CPU) e a BCR (taxa de consumo de avaliação de desempenho). Há muitos fatores que podem afetar a taxa de consumo de uma consulta. As consultas mais simples do que a carga de trabalho usada para gerar a taxa de consumo terão taxas de consumo mais altas, e as cargas de trabalho mais complexas terão taxas de consumo mais baixas. Muitos fatores podem afetar essa complexidade e a taxa de consumo, por exemplo: 61 Complexidade da consulta: quanto mais a consulta consumir CPU, por exemplo, em termos de cálculos e número de agregações, mais baixa será a taxa de consumo. Complexidade da classificação: as classificações de ordem explícita por operações ou grupo por operações gerarão mais carga de trabalho de CPU e diminuirão a taxa de consumo. As gravações adicionais em tempdb causadas pelo derramamento de tais consultas no disco afetam negativamente a taxa de consumo. Complexidade do plano de consulta: quanto mais complexo for um plano de consulta, e quanto mais etapas e operadores ele tiver, mais baixa será a taxa de consumo da CPU, pois cada unidade de dados é processada por meio de um pipeline mais longo de operações. 62 Compactação: a compactação diminuirá a taxa de consumo de dados em termos reais, pois a taxa de consumo, por definição, é medida para consultas que são associadas à CPU, e a descompactação consumirá ciclos de CPU. Entretanto, os maiores benefícios em taxa de transferência geralmente superam a sobrecarga de CPU adicional envolvida na compactação, a menos que a carga de trabalho consuma CPU em alto grau. Ao comparar taxas de consumo de dados compactados e descompactados, leve em consideração o fator de compactação. Outra maneira de ver isso é pensar na taxa de consumo em termos de linhas por segundo. Utilização de dados: descartar dados durante os exames (por exemplo, por meio da projeção e seleção de consultas) é um processo bastante eficiente. As consultas que usam todos os dados em uma tabela têm taxas de consumo menores, pois mais dados são processados por taxa de transferência de dados da unidade.