SQL Saturday #127 Rio

Melhores Práticas para o seu DW

                    Felipe Ferreira - @SQLBoy
                    MVP SQL Server
                    Diretor de Operações – SolidQ BR
                    http://blogs.solidq.com/fferreira
                    fferreira@solidq.com
Agenda

   Carga de Trabalho
   Padrão de Consultas
   Data Warehouse hoje...
   Trace Flags
   Fragmentação
   Localização dos arquivos no disco
   Hyper-Threading
   Carga de dados..
Carga de Trabalho

 OLTP x DW

 Indexação

 Constraints

 Leitura Sequencial
Exemplo Consulta DW
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))             Scan Intensive
                 AS SUM_CHARGE,
          AVG(L_QUANTITY) AS AVG_QTY,
          AVG(L_EXTENDEDPRICE) AS AVG_PRICE,
          AVG(L_DISCOUNT) AS AVG_DISC,                              Hash Joins
          COUNT(*) AS COUNT_ORDER
     FROM LINEITEM
     GROUP BY    L_RETURNFLAG,
                       L_LINESTATUS                                 Aggregations
     ORDER BY    L_RETURNFLAG,
                 L_LINESTATUS
Data Warehouses hoje...



 Storage enorme
 Servidor SMP enorme




   O que tem de errado com esse ambiente?
Resposta: sistema desbalanceado
 Esse servidor consegue processar 12GB/seg
  de IO, mas a storage consegue entregar
  somente 2GB/seg
    Normalmente a storage não é dedicada para o
     SQL Server.
    Normalmente os switchs não são dedicados para
     a ligação SQL Server – Storage


Resultado: grande investimento, baixa performance
Trace Flags

 -E: Alocar 64 extents por vez (4MB)

 -T1117: Autogrow crescer em blocos iguais
  em todos os arquivos

 -T834: Habilitar grandes alocações de página
  no SQL Buffer Pool
Fragmentação

 Tipos de Fragmentação
     Fragmentação do Arquivo (física)
     Fragmentação de Extents (lógica)
     Fragmentação de Páginas (lógica)
     Fragmentação de índices non-clustered (lógica)

 Ordenação na tabela/base de dados não implica
 em ordenação nos blocos físicos do disco.
Disco

 Fisicamente o seu arquivo pode estar
  localizado na área mais externa do disco, na
  área mais interna ou fragmentado por todo o
  disco.

 Você sabia que a localização
  do seu arquivo pode
  influenciar em mais de 30%
  a performance de IO?
Comparativo de Performance
Processador – Hyperthreding
 Discussão constante desde o SQL Server 2000




© 2011 SolidQ                                   11
Carga de Dados

 Utilização de área de staging para os dados
  para arrumar a fragmentação
 Utilizar MAXDOP 1 para mover dados de
  staging para tabela fato
 Em tabelas muito grandes, utilizar
  particionamento e utilizar processo de carga
  em 3 fases, com partition switch
Links

 http://blogs.solidq.com/fferreira

 Data Load Best Practices:
  http://download.microsoft.com/download/2/
  F/6/2F6AF505-30B7-4505-80E5-
  B363714441C7/FT_3.0_Data_Load_Best_
  Practices_Overview_2_14_11.pptx


SQLSat #127

  • 1.
    SQL Saturday #127Rio Melhores Práticas para o seu DW Felipe Ferreira - @SQLBoy MVP SQL Server Diretor de Operações – SolidQ BR http://blogs.solidq.com/fferreira fferreira@solidq.com
  • 2.
    Agenda  Carga de Trabalho  Padrão de Consultas  Data Warehouse hoje...  Trace Flags  Fragmentação  Localização dos arquivos no disco  Hyper-Threading  Carga de dados..
  • 3.
    Carga de Trabalho OLTP x DW  Indexação  Constraints  Leitura Sequencial
  • 4.
    Exemplo Consulta DW 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)) Scan Intensive AS SUM_CHARGE, AVG(L_QUANTITY) AS AVG_QTY, AVG(L_EXTENDEDPRICE) AS AVG_PRICE, AVG(L_DISCOUNT) AS AVG_DISC, Hash Joins COUNT(*) AS COUNT_ORDER FROM LINEITEM GROUP BY L_RETURNFLAG, L_LINESTATUS Aggregations ORDER BY L_RETURNFLAG, L_LINESTATUS
  • 5.
    Data Warehouses hoje... Storage enorme  Servidor SMP enorme O que tem de errado com esse ambiente?
  • 6.
    Resposta: sistema desbalanceado Esse servidor consegue processar 12GB/seg de IO, mas a storage consegue entregar somente 2GB/seg  Normalmente a storage não é dedicada para o SQL Server.  Normalmente os switchs não são dedicados para a ligação SQL Server – Storage Resultado: grande investimento, baixa performance
  • 7.
    Trace Flags  -E:Alocar 64 extents por vez (4MB)  -T1117: Autogrow crescer em blocos iguais em todos os arquivos  -T834: Habilitar grandes alocações de página no SQL Buffer Pool
  • 8.
    Fragmentação  Tipos deFragmentação  Fragmentação do Arquivo (física)  Fragmentação de Extents (lógica)  Fragmentação de Páginas (lógica)  Fragmentação de índices non-clustered (lógica) Ordenação na tabela/base de dados não implica em ordenação nos blocos físicos do disco.
  • 9.
    Disco  Fisicamente oseu arquivo pode estar localizado na área mais externa do disco, na área mais interna ou fragmentado por todo o disco.  Você sabia que a localização do seu arquivo pode influenciar em mais de 30% a performance de IO?
  • 10.
  • 11.
    Processador – Hyperthreding Discussão constante desde o SQL Server 2000 © 2011 SolidQ 11
  • 12.
    Carga de Dados Utilização de área de staging para os dados para arrumar a fragmentação  Utilizar MAXDOP 1 para mover dados de staging para tabela fato  Em tabelas muito grandes, utilizar particionamento e utilizar processo de carga em 3 fases, com partition switch
  • 13.
    Links  http://blogs.solidq.com/fferreira  DataLoad Best Practices: http://download.microsoft.com/download/2/ F/6/2F6AF505-30B7-4505-80E5- B363714441C7/FT_3.0_Data_Load_Best_ Practices_Overview_2_14_11.pptx 