SlideShare uma empresa Scribd logo
1 de 23
Aplicando processamento paralelo
em instruções SQL
Msc. Mauro Pichiliani (@pichiliani)
mauro@pichiliani.com.br
AVISO




2 | 14/04/2012 |
Sobre mim
 Mestre e doutorando em computação pelo ITA
 Escritor da SQL Magazine, Fórum Access, Java
  Magazine, SQLServerCentral.com e outras
 Colaborador do iMasters há 10 anos
 Autor do livro “Conversando sobre banco de dados”
 Co-autor do @databasecast




 3 | 14/04/2012 |
Roteiro

     Hardware e HPC
     Processamento paralelo no SGBDR
     Paralelisando instruções SQL
     Demonstrações
     Testes de desempenho
     Análise dos resultados
     Conclusão


4 | 14/04/2012 |
Processamento paralelo - hardware
     Era de processadores multi-core (lógicos/físicos)
     Virtualização: controle de processadores lógicos
     Licenciamento do SGBD: depende de número de processadores
     Fabricante fornece o valor máximo de processamento em GFLOPS
     Para lembrar:
      1 megaflop = 1 milhão de flops     = 10^6 operações p.f. por segundo
      1 gigaflop = 1 bilhão de flops     = 10^9 operações p.f. por segundo
      1 teraflop = 1 trilhão de flops    = 10^12 operações p.f. por segundo
      1 petaflop = 1 quatrilhão de flops = 10^15 operações p.f. por segundo

     Processador topo de linha: 50~70 GFLOPS
     No máximo 10% disso é utilizado
     É preciso muito esforço de programação para obter bom desempenho
     Solução: uso de processamento paralelo



    5 | 14/04/2012 |
Processamento paralelo - HPC
    HPC: High Performance Computing
    Supercomputadores: lista TOP500 (http://www.top500.org/)
    Uso de cluster, GPU, SSD, Infini Band e outras tecnologias
    Uso de linguagens de programação adequadas (C/C++, Fortran, etc)
          Modelo de programação paralela
          Diversas primitivas para processameto paralelo
          Suporte de compilador
          Diretivas para lock direto no microcódigo
 Paralelismo é tradicionamento aplicado em:
    Jogos
    Simulações
    Construção de modelos
    Renderização
    Segurança (força bruta)

    6 | 14/04/2012 |
Processamento paralelo no SGBDR
    Geralmente processamento paralelo é utilizado na aplicação
    No SGBDR utiliza-se um plano de execução para cada instrução SQL
    Plano de execução pode conter operadores indicando paralelismo:




    Sem recursos para trabalhar com threads no SGBDR. Porém:
          SGBDR escala bem pelo número de conexões
          Há recursos para tratar problemas de concorrência (locks)
          Utiliza linguagem adequada para manipulação de dados
          Há como utilizar outras linguagems (C#, Java, Pl/Pg-SQL, etc) no SGBDR
    Proposta: fornecer recursos para programação paralela com instruções SQL
    Nota: novos recursos do .NET seguem esta linha (Parallel.ForEach)



    7 | 14/04/2012 |
Paralelisando instruções SQL - Assembly
  Assembly .NET escrito por Alan Kaplan:
     Artigo “Asynchronous T-SQL Execution Without Service Broker”
      em http://migre.me/8EUFc
           Cria até 64 conexões no sevidor local
           Executa instruções SQL de forma paralela
           Aguarda por término de todas elas
           Emprega 6 stored procedures, 2 funções e tabelas internas
           Permite controle de transação
           Obtenção de tempos de execução e erros
           Código fonte disponível (projeto em C# no VS.NET).

  Demo 1: Instalação do assembly (Listagem1.sql e Deployment.sql)
  Demo 2: Inserção de linhas de forma paralela (Listagem2.sql)
  Demo 3: Tempo de execução (Listagem3.sql)


8 | 14/04/2012 |
Paralelisando instruções SQL - Técnicas

  Não substitui as técnicas existentes para tuning de SQL
  Para obtenção de desempenho com paralelismo:
         Técnica de independência de instruções
         Técnica de divisão do domínio


  Procurar utilizar o assembly em cenários de muito
   processamento (expurgo, fechamento mensal, etc)
  Tenha muito cuidado com o controle de concorrência
  Evitar colocar paralelismo em consultas „simples‟
  Fazer testes para comprovar o ganho de desempenho


9 | 14/04/2012 |
Testes de desempenho – cenário
   Testes de desempenho de INSERT, DELETE, UPDATE, SELECT
    com e sem cache do SQL Server
   Cenário:
          Intel Core i 950 (4 core @ 3.06 GHZ), 12GB RAM, 64KB Cache L1,
           256KB Cache L2, 8MB Cache L3, 1 TB SATA 2 ~ 50 GFLOPS
          Windows 2008 Enterprise+SP1 64 Bits (real), SQL Server 2008 R2+SP1
           64 Bits
   Dados:
          Tabela com 11 colunas: 1 int (PK) + 10 float. Valores float aleatórios
          Número de linhas (N) variando de 100.000 a 1.000.000
          64 Threads dividindo o valor de N igualmente
          Um banco de dados com Recovery Model bulk-logged+Transaction log
           adequado
          Limpeza de cache: DBCC DROPCLEANBUFFERS e DBCC
           FREEPROCCACHE

10 | 14/04/2012 |
Testes de desempenho – Configurações




11 | 14/04/2012 |
Testes de desempenho – Aquecimento




12 | 14/04/2012 |
Testes de desempenho – INSERT
   Ferramentas para o INSERT:
          Comando INSERT
          Comando BULK INSERT
          Utilitário bcp.exe [MELHOR DESEMPENHO]


   Teste:
            Importação de N linhas em 64 threads. Cada thread: N/64 linhas
            Todos os arquivos na mesma pasta e divididos por tamanho
            Transaction log adequado (50% acima do máximo em cada teste)
            Para cada N o teste foi realizado 10 vezes
            Limpeza do cache a cada teste para cenário sem cache
            Medição do tempo de execução com o SET STATISTICS TIME


13 | 14/04/2012 |
Testes de desempenho – Resultado INSERT




      Melhor cenário: N=700.000 com cache (redução de 92%)
      Média do tempo de execução paralelo:
            69% mais rápido sem cache
            83% mais rápido com cache
      S.O. paralelisa I/O da leitura e gravação de dados

14 | 14/04/2012 |
Testes de desempenho – DELETE
   DELETE apaga linhas passando pelo Transaction Log
   Teste didático: para remover todas as linhas use TRUNCATE
    TABLE ou DROP TABLE
   Uso ou não de lock hints não alteraram resultado

   Teste:
            Remoção de N linhas em 64 threads. Cada thread: N/64 linhas
            TempDB adequado (50% acima do máximo em cada teste)
            Transaction log adequado (50% acima do máximo em cada teste)
            Para cada N o teste foi realizado 10 vezes
            Limpeza do cache a cada teste para cenário sem cache
            Medição do tempo de execução com o SET STATISTICS TIME

15 | 14/04/2012 |
Testes de desempenho – Resultado DELETE




      Melhor cenário: N=500.000 com cache (redução de 99%)
      Média do tempo de execução paralelo:
            27% mais rápido sem cache
            85% mais rápido com cache
      Dados não cabem no cache a partir de (N=500.000)

16 | 14/04/2012 |
Testes de desempenho – UPDATE
   Teste de UPDATE incrementa 1 para cada coluna float
   Soma ou subtração geram resultados semelhantes
   Uso ou não de lock hints não alteraram resultado

   Teste:
            Update de N linhas em 64 threads. Cada thread: N/64 linhas
            TempDB adequado (50% acima do máximo em cada teste)
            Transaction log adequado (50% acima do máximo em cada teste)
            Valores float adequados para evitar overflow
            Para cada N o teste foi realizado 10 vezes
            Limpeza do cache a cada teste para cenário sem cache
            Medição do tempo de execução com o SET STATISTICS TIME

17 | 14/04/2012 |
Testes de desempenho – Resultado UPDATE




      Melhor cenário: N=500.000 com cache (redução de 99%)
      Média do tempo de execução paralelo:
            70% mais rápido sem cache
            63% mais rápido com cache
      Novamente, dados não cabem no cache a partir de (N=500.000)

18 | 14/04/2012 |
Testes de desempenho – SELECT
   Instrução SELECT somou o valor das 10 colunas float
   Uso do SUM() sem o group by. Outras aggregações geraram
    resultados semelhantes
   Uso ou não de lock hints não alteraram resultado

   Teste:
            Select de N linhas em 64 threads. Cada thread: N/64 linhas
            TempDB adequado (50% acima do máximo em cada teste)
            Valores float adequados para evitar overflow
            Para cada N o teste foi realizado 10 vezes
            Limpeza do cache a cada teste para cenário sem cache
            Medição do tempo de execução com o SET STATISTICS TIME

19 | 14/04/2012 |
Testes de desempenho – Resultado SELECT




      Nota: diferença de escala com e sem cache
      Melhor cenário: N=400.000 sem cache (redução de 98%)
      Média do tempo de execução paralelo:
            77% mais rápido sem cache
            57% mais rápido com cache
      Variações no plano de execução explicam picos/declínios no gráfico

20 | 14/04/2012 |
Análise dos resultados
   Alguns fatores impactam no resultado: plano de execução,
    cache, transaction log e I/O do S.O.

      INSERT: 69% mais rápido sem cache e 83% mais rápido com cache
      DELETE: 27% mais rápido sem cache e 85% mais rápido com cache
      UPDATE: 70% mais rápido sem cache e 63% mais rápido com cache
      SELECT: 77% mais rápido sem cache e 57% mais rápido com cache


   Supondo melhor cenário no SELECT: 2*10^8 ~ 1 GFLOP

   Isso representa apenas 2% da capacidade total do
    processador


21 | 14/04/2012 |
Conclusões
   Era de processadores com múltiplos núcleos
   Programação paralela é necessária para obter desempenho
   Poucos recursos para paralelismo em SGBDR
   Custo do paralelismo requer esforço de programação
   Testes com assembly .NET indicam melhora média de:
      76% no tempo de execução do INSERT
      56% no tempo de execução do DELETE
      66,5% no tempo de execução do UPDATE
      67% no tempo de execução do SELECT

 Há espaço para novas possibilidades e melhorias nos
  SGBDR em termos de paralelismo e desempenho

22 | 14/04/2012 |
#prontofalei


                    Perguntas?



23 | 14/04/2012 |

Mais conteúdo relacionado

Mais procurados

Gestão de Escola Bíblica Dominical
Gestão de Escola Bíblica DominicalGestão de Escola Bíblica Dominical
Gestão de Escola Bíblica DominicalALTAIR GERMANO
 
Os Desafios da EBD nos Dias Atuais para a Formação de Verdadeiros Cristaos
Os Desafios da EBD nos Dias Atuais para a Formação de Verdadeiros CristaosOs Desafios da EBD nos Dias Atuais para a Formação de Verdadeiros Cristaos
Os Desafios da EBD nos Dias Atuais para a Formação de Verdadeiros Cristaostenmario04
 
Apostila caravana do arrependimento
Apostila   caravana do arrependimentoApostila   caravana do arrependimento
Apostila caravana do arrependimentoLuã França
 
Pequenos grupos o que são e como fazer 5
Pequenos grupos   o que são e como fazer 5Pequenos grupos   o que são e como fazer 5
Pequenos grupos o que são e como fazer 5Sundar Andrade
 
O plano de batalha para oracao
O plano de batalha para oracaoO plano de batalha para oracao
O plano de batalha para oracaovalmir severo
 
Orando com-entendimento
Orando com-entendimentoOrando com-entendimento
Orando com-entendimentoToni Bacci
 
Igrejas em pequenos grupos
Igrejas em pequenos gruposIgrejas em pequenos grupos
Igrejas em pequenos grupostalmidimted
 
01 o que é Evangelização
01  o que é Evangelização01  o que é Evangelização
01 o que é EvangelizaçãoMárcio Martins
 
07 derramentos de sangue
07 derramentos de sangue07 derramentos de sangue
07 derramentos de sangue32148989
 
Sentimentos que aprisionam a alma lição 1 - central gospel
Sentimentos que aprisionam a alma   lição 1 - central gospelSentimentos que aprisionam a alma   lição 1 - central gospel
Sentimentos que aprisionam a alma lição 1 - central gospelCarlos Eduardo Valentino
 
PANORAMA HISTÓRICO DA TRAJETÓRIA DE JESUS NA TERRA: O AUTOR DE UMA NOVA ÉTICA
PANORAMA HISTÓRICO DA TRAJETÓRIA DE JESUS NA TERRA: O AUTOR DE UMA NOVA ÉTICAPANORAMA HISTÓRICO DA TRAJETÓRIA DE JESUS NA TERRA: O AUTOR DE UMA NOVA ÉTICA
PANORAMA HISTÓRICO DA TRAJETÓRIA DE JESUS NA TERRA: O AUTOR DE UMA NOVA ÉTICAJocilaine Moreira
 

Mais procurados (20)

Gestão de Escola Bíblica Dominical
Gestão de Escola Bíblica DominicalGestão de Escola Bíblica Dominical
Gestão de Escola Bíblica Dominical
 
Os Desafios da EBD nos Dias Atuais para a Formação de Verdadeiros Cristaos
Os Desafios da EBD nos Dias Atuais para a Formação de Verdadeiros CristaosOs Desafios da EBD nos Dias Atuais para a Formação de Verdadeiros Cristaos
Os Desafios da EBD nos Dias Atuais para a Formação de Verdadeiros Cristaos
 
Apostila caravana do arrependimento
Apostila   caravana do arrependimentoApostila   caravana do arrependimento
Apostila caravana do arrependimento
 
Tratando as Emoções
Tratando as EmoçõesTratando as Emoções
Tratando as Emoções
 
Pequenos grupos o que são e como fazer 5
Pequenos grupos   o que são e como fazer 5Pequenos grupos   o que são e como fazer 5
Pequenos grupos o que são e como fazer 5
 
Apostila aconselhamento pdf
Apostila aconselhamento pdfApostila aconselhamento pdf
Apostila aconselhamento pdf
 
O plano de batalha para oracao
O plano de batalha para oracaoO plano de batalha para oracao
O plano de batalha para oracao
 
5 ministerios
5 ministerios5 ministerios
5 ministerios
 
Orando com-entendimento
Orando com-entendimentoOrando com-entendimento
Orando com-entendimento
 
Nascer de novo
Nascer de novoNascer de novo
Nascer de novo
 
O culto cristão a forma
O culto cristão   a formaO culto cristão   a forma
O culto cristão a forma
 
Evangelismo Criativo
Evangelismo CriativoEvangelismo Criativo
Evangelismo Criativo
 
Epistola de efeso
Epistola de efesoEpistola de efeso
Epistola de efeso
 
Igrejas em pequenos grupos
Igrejas em pequenos gruposIgrejas em pequenos grupos
Igrejas em pequenos grupos
 
01 o que é Evangelização
01  o que é Evangelização01  o que é Evangelização
01 o que é Evangelização
 
Visão celular- unificacionista
Visão celular- unificacionistaVisão celular- unificacionista
Visão celular- unificacionista
 
07 derramentos de sangue
07 derramentos de sangue07 derramentos de sangue
07 derramentos de sangue
 
Sentimentos que aprisionam a alma lição 1 - central gospel
Sentimentos que aprisionam a alma   lição 1 - central gospelSentimentos que aprisionam a alma   lição 1 - central gospel
Sentimentos que aprisionam a alma lição 1 - central gospel
 
A quem iremos
A quem iremosA quem iremos
A quem iremos
 
PANORAMA HISTÓRICO DA TRAJETÓRIA DE JESUS NA TERRA: O AUTOR DE UMA NOVA ÉTICA
PANORAMA HISTÓRICO DA TRAJETÓRIA DE JESUS NA TERRA: O AUTOR DE UMA NOVA ÉTICAPANORAMA HISTÓRICO DA TRAJETÓRIA DE JESUS NA TERRA: O AUTOR DE UMA NOVA ÉTICA
PANORAMA HISTÓRICO DA TRAJETÓRIA DE JESUS NA TERRA: O AUTOR DE UMA NOVA ÉTICA
 

Semelhante a Aplicando processamento paralelo em instruções SQL

Comparação de desempenho entre SQL e NoSQL
Comparação de desempenho entre SQL e NoSQLComparação de desempenho entre SQL e NoSQL
Comparação de desempenho entre SQL e NoSQLpichiliani
 
Oracle e SQL Server na prática mitos, semelhanças e diferenças
Oracle e SQL Server na prática mitos, semelhanças e diferençasOracle e SQL Server na prática mitos, semelhanças e diferenças
Oracle e SQL Server na prática mitos, semelhanças e diferençasLeonardo Pedroso Costa
 
TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho
TechEd 2010: SQL Server com Foco em Diagnóstico de DesempenhoTechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho
TechEd 2010: SQL Server com Foco em Diagnóstico de DesempenhoFabrício Catae
 
Otimização holistica de ambiente computacional
Otimização holistica de ambiente computacionalOtimização holistica de ambiente computacional
Otimização holistica de ambiente computacionalRodrigo Campos
 
Tuning Banco de Dados
Tuning Banco de DadosTuning Banco de Dados
Tuning Banco de DadosFelipeCaiuby
 
Descobrindo os limites de um Sip Proxy
Descobrindo os limites de um Sip ProxyDescobrindo os limites de um Sip Proxy
Descobrindo os limites de um Sip ProxyAntonio Anderson Souza
 
MANUTENÇÃO DE ÍNDICES: O GUIA DEFINITIVO
MANUTENÇÃO DE ÍNDICES: O GUIA DEFINITIVOMANUTENÇÃO DE ÍNDICES: O GUIA DEFINITIVO
MANUTENÇÃO DE ÍNDICES: O GUIA DEFINITIVOLuciano Moreira
 
Dicas e Truques de Performance: Como obter o maximo do Windows Server 2008 R2...
Dicas e Truques de Performance: Como obter o maximo do Windows Server 2008 R2...Dicas e Truques de Performance: Como obter o maximo do Windows Server 2008 R2...
Dicas e Truques de Performance: Como obter o maximo do Windows Server 2008 R2...Rodrigo Immaginario
 
Isolamento e mvcc
Isolamento e mvccIsolamento e mvcc
Isolamento e mvccLocaweb
 
Testando aplicações DataSnap
Testando aplicações DataSnapTestando aplicações DataSnap
Testando aplicações DataSnapAndreano Lanusse
 
ProcessosEscalonamento.pdf
ProcessosEscalonamento.pdfProcessosEscalonamento.pdf
ProcessosEscalonamento.pdfssuser1d8ddd
 
Path to the future #5 - Melhores práticas de data warehouse no Amazon Redshift
Path to the future #5 - Melhores práticas de data warehouse no Amazon RedshiftPath to the future #5 - Melhores práticas de data warehouse no Amazon Redshift
Path to the future #5 - Melhores práticas de data warehouse no Amazon RedshiftAmazon Web Services LATAM
 
Funcionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQLFuncionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQLMatheus Espanhol
 
[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo...
[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo...[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo...
[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo...Marcio Machado Pereira
 

Semelhante a Aplicando processamento paralelo em instruções SQL (20)

Comparação de desempenho entre SQL e NoSQL
Comparação de desempenho entre SQL e NoSQLComparação de desempenho entre SQL e NoSQL
Comparação de desempenho entre SQL e NoSQL
 
Oracle e SQL Server na prática mitos, semelhanças e diferenças
Oracle e SQL Server na prática mitos, semelhanças e diferençasOracle e SQL Server na prática mitos, semelhanças e diferenças
Oracle e SQL Server na prática mitos, semelhanças e diferenças
 
TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho
TechEd 2010: SQL Server com Foco em Diagnóstico de DesempenhoTechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho
TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho
 
F oc aula_04
F oc aula_04F oc aula_04
F oc aula_04
 
Mainframe Performance Review
Mainframe Performance ReviewMainframe Performance Review
Mainframe Performance Review
 
Otimização holistica de ambiente computacional
Otimização holistica de ambiente computacionalOtimização holistica de ambiente computacional
Otimização holistica de ambiente computacional
 
Oracleplsql
OracleplsqlOracleplsql
Oracleplsql
 
Tuning Banco de Dados
Tuning Banco de DadosTuning Banco de Dados
Tuning Banco de Dados
 
Processador mips - pipeline
Processador mips - pipelineProcessador mips - pipeline
Processador mips - pipeline
 
Descobrindo os limites de um Sip Proxy
Descobrindo os limites de um Sip ProxyDescobrindo os limites de um Sip Proxy
Descobrindo os limites de um Sip Proxy
 
MANUTENÇÃO DE ÍNDICES: O GUIA DEFINITIVO
MANUTENÇÃO DE ÍNDICES: O GUIA DEFINITIVOMANUTENÇÃO DE ÍNDICES: O GUIA DEFINITIVO
MANUTENÇÃO DE ÍNDICES: O GUIA DEFINITIVO
 
Mpu 2012 ppt
Mpu 2012 pptMpu 2012 ppt
Mpu 2012 ppt
 
Dicas e Truques de Performance: Como obter o maximo do Windows Server 2008 R2...
Dicas e Truques de Performance: Como obter o maximo do Windows Server 2008 R2...Dicas e Truques de Performance: Como obter o maximo do Windows Server 2008 R2...
Dicas e Truques de Performance: Como obter o maximo do Windows Server 2008 R2...
 
Isolamento e mvcc
Isolamento e mvccIsolamento e mvcc
Isolamento e mvcc
 
Testando aplicações DataSnap
Testando aplicações DataSnapTestando aplicações DataSnap
Testando aplicações DataSnap
 
ProcessosEscalonamento.pdf
ProcessosEscalonamento.pdfProcessosEscalonamento.pdf
ProcessosEscalonamento.pdf
 
Path to the future #5 - Melhores práticas de data warehouse no Amazon Redshift
Path to the future #5 - Melhores práticas de data warehouse no Amazon RedshiftPath to the future #5 - Melhores práticas de data warehouse no Amazon Redshift
Path to the future #5 - Melhores práticas de data warehouse no Amazon Redshift
 
Funcionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQLFuncionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQL
 
[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo...
[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo...[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo...
[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo...
 
DB2 Express-C
DB2 Express-CDB2 Express-C
DB2 Express-C
 

Mais de pichiliani

Rastreamento de Objetos em Realidade Virtual e Realidade Aumentada
Rastreamento de Objetos em Realidade Virtual e Realidade AumentadaRastreamento de Objetos em Realidade Virtual e Realidade Aumentada
Rastreamento de Objetos em Realidade Virtual e Realidade Aumentadapichiliani
 
Interfaces hands free para o mundo atual e pós-Corona vírus
Interfaces hands free para o mundo atual  e pós-Corona vírusInterfaces hands free para o mundo atual  e pós-Corona vírus
Interfaces hands free para o mundo atual e pós-Corona víruspichiliani
 
The Effect of Audiences On the User Experience of Conversational Interfaces i...
The Effect of Audiences On the User Experience of Conversational Interfaces i...The Effect of Audiences On the User Experience of Conversational Interfaces i...
The Effect of Audiences On the User Experience of Conversational Interfaces i...pichiliani
 
Machine Learning & Machine Teaching
Machine Learning & Machine TeachingMachine Learning & Machine Teaching
Machine Learning & Machine Teachingpichiliani
 
TJBot: Incorporando um chatbot em um robô
TJBot:  Incorporando um chatbot em um robôTJBot:  Incorporando um chatbot em um robô
TJBot: Incorporando um chatbot em um robôpichiliani
 
Carreira de cientista
Carreira de cientistaCarreira de cientista
Carreira de cientistapichiliani
 
Novidades desenvolvimento
Novidades desenvolvimentoNovidades desenvolvimento
Novidades desenvolvimentopichiliani
 
O papel do DBA no mundo de ciência de dados e machine learning
O papel do DBA no mundo de ciência de dados e machine learningO papel do DBA no mundo de ciência de dados e machine learning
O papel do DBA no mundo de ciência de dados e machine learningpichiliani
 
Introdução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlowIntrodução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlowpichiliani
 
Alinguagem SQL no mundo NOSQL
Alinguagem SQL no mundo NOSQLAlinguagem SQL no mundo NOSQL
Alinguagem SQL no mundo NOSQLpichiliani
 
Python x R: mas e o Weka?
Python x R: mas e o Weka? Python x R: mas e o Weka?
Python x R: mas e o Weka? pichiliani
 
Rastreamento 3D de objetos para realidade virtual
Rastreamento 3D de objetos para realidade virtualRastreamento 3D de objetos para realidade virtual
Rastreamento 3D de objetos para realidade virtualpichiliani
 
SSD no banco de dados é bom mesmo?
SSD no banco de dados é bom mesmo?SSD no banco de dados é bom mesmo?
SSD no banco de dados é bom mesmo?pichiliani
 
MediaKit 2016 do DatabaseCast
MediaKit 2016 do DatabaseCastMediaKit 2016 do DatabaseCast
MediaKit 2016 do DatabaseCastpichiliani
 
Projeto AMedCA - Concurso Casa conectada 2015
Projeto AMedCA - Concurso Casa conectada 2015Projeto AMedCA - Concurso Casa conectada 2015
Projeto AMedCA - Concurso Casa conectada 2015pichiliani
 
A User Interface Usability Evaluation of the Electronic Ballot Box used in th...
A User Interface Usability Evaluation of the Electronic Ballot Box used in th...A User Interface Usability Evaluation of the Electronic Ballot Box used in th...
A User Interface Usability Evaluation of the Electronic Ballot Box used in th...pichiliani
 
Evaluation of the Android Accessibility API Recognition Rate towards a Better...
Evaluation of the Android Accessibility API Recognition Rate towards a Better...Evaluation of the Android Accessibility API Recognition Rate towards a Better...
Evaluation of the Android Accessibility API Recognition Rate towards a Better...pichiliani
 
Como lidar com dados temporais e intervalos com a linguagem SQL
Como lidar com dados temporais e intervalos com a linguagem SQLComo lidar com dados temporais e intervalos com a linguagem SQL
Como lidar com dados temporais e intervalos com a linguagem SQLpichiliani
 
Novidades desenvolvimento
Novidades desenvolvimentoNovidades desenvolvimento
Novidades desenvolvimentopichiliani
 
Projeto HTMA - Trand Tremor Measurement Application
Projeto HTMA - Trand Tremor Measurement ApplicationProjeto HTMA - Trand Tremor Measurement Application
Projeto HTMA - Trand Tremor Measurement Applicationpichiliani
 

Mais de pichiliani (20)

Rastreamento de Objetos em Realidade Virtual e Realidade Aumentada
Rastreamento de Objetos em Realidade Virtual e Realidade AumentadaRastreamento de Objetos em Realidade Virtual e Realidade Aumentada
Rastreamento de Objetos em Realidade Virtual e Realidade Aumentada
 
Interfaces hands free para o mundo atual e pós-Corona vírus
Interfaces hands free para o mundo atual  e pós-Corona vírusInterfaces hands free para o mundo atual  e pós-Corona vírus
Interfaces hands free para o mundo atual e pós-Corona vírus
 
The Effect of Audiences On the User Experience of Conversational Interfaces i...
The Effect of Audiences On the User Experience of Conversational Interfaces i...The Effect of Audiences On the User Experience of Conversational Interfaces i...
The Effect of Audiences On the User Experience of Conversational Interfaces i...
 
Machine Learning & Machine Teaching
Machine Learning & Machine TeachingMachine Learning & Machine Teaching
Machine Learning & Machine Teaching
 
TJBot: Incorporando um chatbot em um robô
TJBot:  Incorporando um chatbot em um robôTJBot:  Incorporando um chatbot em um robô
TJBot: Incorporando um chatbot em um robô
 
Carreira de cientista
Carreira de cientistaCarreira de cientista
Carreira de cientista
 
Novidades desenvolvimento
Novidades desenvolvimentoNovidades desenvolvimento
Novidades desenvolvimento
 
O papel do DBA no mundo de ciência de dados e machine learning
O papel do DBA no mundo de ciência de dados e machine learningO papel do DBA no mundo de ciência de dados e machine learning
O papel do DBA no mundo de ciência de dados e machine learning
 
Introdução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlowIntrodução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlow
 
Alinguagem SQL no mundo NOSQL
Alinguagem SQL no mundo NOSQLAlinguagem SQL no mundo NOSQL
Alinguagem SQL no mundo NOSQL
 
Python x R: mas e o Weka?
Python x R: mas e o Weka? Python x R: mas e o Weka?
Python x R: mas e o Weka?
 
Rastreamento 3D de objetos para realidade virtual
Rastreamento 3D de objetos para realidade virtualRastreamento 3D de objetos para realidade virtual
Rastreamento 3D de objetos para realidade virtual
 
SSD no banco de dados é bom mesmo?
SSD no banco de dados é bom mesmo?SSD no banco de dados é bom mesmo?
SSD no banco de dados é bom mesmo?
 
MediaKit 2016 do DatabaseCast
MediaKit 2016 do DatabaseCastMediaKit 2016 do DatabaseCast
MediaKit 2016 do DatabaseCast
 
Projeto AMedCA - Concurso Casa conectada 2015
Projeto AMedCA - Concurso Casa conectada 2015Projeto AMedCA - Concurso Casa conectada 2015
Projeto AMedCA - Concurso Casa conectada 2015
 
A User Interface Usability Evaluation of the Electronic Ballot Box used in th...
A User Interface Usability Evaluation of the Electronic Ballot Box used in th...A User Interface Usability Evaluation of the Electronic Ballot Box used in th...
A User Interface Usability Evaluation of the Electronic Ballot Box used in th...
 
Evaluation of the Android Accessibility API Recognition Rate towards a Better...
Evaluation of the Android Accessibility API Recognition Rate towards a Better...Evaluation of the Android Accessibility API Recognition Rate towards a Better...
Evaluation of the Android Accessibility API Recognition Rate towards a Better...
 
Como lidar com dados temporais e intervalos com a linguagem SQL
Como lidar com dados temporais e intervalos com a linguagem SQLComo lidar com dados temporais e intervalos com a linguagem SQL
Como lidar com dados temporais e intervalos com a linguagem SQL
 
Novidades desenvolvimento
Novidades desenvolvimentoNovidades desenvolvimento
Novidades desenvolvimento
 
Projeto HTMA - Trand Tremor Measurement Application
Projeto HTMA - Trand Tremor Measurement ApplicationProjeto HTMA - Trand Tremor Measurement Application
Projeto HTMA - Trand Tremor Measurement Application
 

Aplicando processamento paralelo em instruções SQL

  • 1. Aplicando processamento paralelo em instruções SQL Msc. Mauro Pichiliani (@pichiliani) mauro@pichiliani.com.br
  • 3. Sobre mim  Mestre e doutorando em computação pelo ITA  Escritor da SQL Magazine, Fórum Access, Java Magazine, SQLServerCentral.com e outras  Colaborador do iMasters há 10 anos  Autor do livro “Conversando sobre banco de dados”  Co-autor do @databasecast 3 | 14/04/2012 |
  • 4. Roteiro  Hardware e HPC  Processamento paralelo no SGBDR  Paralelisando instruções SQL  Demonstrações  Testes de desempenho  Análise dos resultados  Conclusão 4 | 14/04/2012 |
  • 5. Processamento paralelo - hardware  Era de processadores multi-core (lógicos/físicos)  Virtualização: controle de processadores lógicos  Licenciamento do SGBD: depende de número de processadores  Fabricante fornece o valor máximo de processamento em GFLOPS  Para lembrar: 1 megaflop = 1 milhão de flops = 10^6 operações p.f. por segundo 1 gigaflop = 1 bilhão de flops = 10^9 operações p.f. por segundo 1 teraflop = 1 trilhão de flops = 10^12 operações p.f. por segundo 1 petaflop = 1 quatrilhão de flops = 10^15 operações p.f. por segundo  Processador topo de linha: 50~70 GFLOPS  No máximo 10% disso é utilizado  É preciso muito esforço de programação para obter bom desempenho  Solução: uso de processamento paralelo 5 | 14/04/2012 |
  • 6. Processamento paralelo - HPC  HPC: High Performance Computing  Supercomputadores: lista TOP500 (http://www.top500.org/)  Uso de cluster, GPU, SSD, Infini Band e outras tecnologias  Uso de linguagens de programação adequadas (C/C++, Fortran, etc)  Modelo de programação paralela  Diversas primitivas para processameto paralelo  Suporte de compilador  Diretivas para lock direto no microcódigo  Paralelismo é tradicionamento aplicado em:  Jogos  Simulações  Construção de modelos  Renderização  Segurança (força bruta) 6 | 14/04/2012 |
  • 7. Processamento paralelo no SGBDR  Geralmente processamento paralelo é utilizado na aplicação  No SGBDR utiliza-se um plano de execução para cada instrução SQL  Plano de execução pode conter operadores indicando paralelismo:  Sem recursos para trabalhar com threads no SGBDR. Porém:  SGBDR escala bem pelo número de conexões  Há recursos para tratar problemas de concorrência (locks)  Utiliza linguagem adequada para manipulação de dados  Há como utilizar outras linguagems (C#, Java, Pl/Pg-SQL, etc) no SGBDR  Proposta: fornecer recursos para programação paralela com instruções SQL  Nota: novos recursos do .NET seguem esta linha (Parallel.ForEach) 7 | 14/04/2012 |
  • 8. Paralelisando instruções SQL - Assembly  Assembly .NET escrito por Alan Kaplan:  Artigo “Asynchronous T-SQL Execution Without Service Broker” em http://migre.me/8EUFc  Cria até 64 conexões no sevidor local  Executa instruções SQL de forma paralela  Aguarda por término de todas elas  Emprega 6 stored procedures, 2 funções e tabelas internas  Permite controle de transação  Obtenção de tempos de execução e erros  Código fonte disponível (projeto em C# no VS.NET).  Demo 1: Instalação do assembly (Listagem1.sql e Deployment.sql)  Demo 2: Inserção de linhas de forma paralela (Listagem2.sql)  Demo 3: Tempo de execução (Listagem3.sql) 8 | 14/04/2012 |
  • 9. Paralelisando instruções SQL - Técnicas  Não substitui as técnicas existentes para tuning de SQL  Para obtenção de desempenho com paralelismo:  Técnica de independência de instruções  Técnica de divisão do domínio  Procurar utilizar o assembly em cenários de muito processamento (expurgo, fechamento mensal, etc)  Tenha muito cuidado com o controle de concorrência  Evitar colocar paralelismo em consultas „simples‟  Fazer testes para comprovar o ganho de desempenho 9 | 14/04/2012 |
  • 10. Testes de desempenho – cenário  Testes de desempenho de INSERT, DELETE, UPDATE, SELECT com e sem cache do SQL Server  Cenário:  Intel Core i 950 (4 core @ 3.06 GHZ), 12GB RAM, 64KB Cache L1, 256KB Cache L2, 8MB Cache L3, 1 TB SATA 2 ~ 50 GFLOPS  Windows 2008 Enterprise+SP1 64 Bits (real), SQL Server 2008 R2+SP1 64 Bits  Dados:  Tabela com 11 colunas: 1 int (PK) + 10 float. Valores float aleatórios  Número de linhas (N) variando de 100.000 a 1.000.000  64 Threads dividindo o valor de N igualmente  Um banco de dados com Recovery Model bulk-logged+Transaction log adequado  Limpeza de cache: DBCC DROPCLEANBUFFERS e DBCC FREEPROCCACHE 10 | 14/04/2012 |
  • 11. Testes de desempenho – Configurações 11 | 14/04/2012 |
  • 12. Testes de desempenho – Aquecimento 12 | 14/04/2012 |
  • 13. Testes de desempenho – INSERT  Ferramentas para o INSERT:  Comando INSERT  Comando BULK INSERT  Utilitário bcp.exe [MELHOR DESEMPENHO]  Teste:  Importação de N linhas em 64 threads. Cada thread: N/64 linhas  Todos os arquivos na mesma pasta e divididos por tamanho  Transaction log adequado (50% acima do máximo em cada teste)  Para cada N o teste foi realizado 10 vezes  Limpeza do cache a cada teste para cenário sem cache  Medição do tempo de execução com o SET STATISTICS TIME 13 | 14/04/2012 |
  • 14. Testes de desempenho – Resultado INSERT  Melhor cenário: N=700.000 com cache (redução de 92%)  Média do tempo de execução paralelo:  69% mais rápido sem cache  83% mais rápido com cache  S.O. paralelisa I/O da leitura e gravação de dados 14 | 14/04/2012 |
  • 15. Testes de desempenho – DELETE  DELETE apaga linhas passando pelo Transaction Log  Teste didático: para remover todas as linhas use TRUNCATE TABLE ou DROP TABLE  Uso ou não de lock hints não alteraram resultado  Teste:  Remoção de N linhas em 64 threads. Cada thread: N/64 linhas  TempDB adequado (50% acima do máximo em cada teste)  Transaction log adequado (50% acima do máximo em cada teste)  Para cada N o teste foi realizado 10 vezes  Limpeza do cache a cada teste para cenário sem cache  Medição do tempo de execução com o SET STATISTICS TIME 15 | 14/04/2012 |
  • 16. Testes de desempenho – Resultado DELETE  Melhor cenário: N=500.000 com cache (redução de 99%)  Média do tempo de execução paralelo:  27% mais rápido sem cache  85% mais rápido com cache  Dados não cabem no cache a partir de (N=500.000) 16 | 14/04/2012 |
  • 17. Testes de desempenho – UPDATE  Teste de UPDATE incrementa 1 para cada coluna float  Soma ou subtração geram resultados semelhantes  Uso ou não de lock hints não alteraram resultado  Teste:  Update de N linhas em 64 threads. Cada thread: N/64 linhas  TempDB adequado (50% acima do máximo em cada teste)  Transaction log adequado (50% acima do máximo em cada teste)  Valores float adequados para evitar overflow  Para cada N o teste foi realizado 10 vezes  Limpeza do cache a cada teste para cenário sem cache  Medição do tempo de execução com o SET STATISTICS TIME 17 | 14/04/2012 |
  • 18. Testes de desempenho – Resultado UPDATE  Melhor cenário: N=500.000 com cache (redução de 99%)  Média do tempo de execução paralelo:  70% mais rápido sem cache  63% mais rápido com cache  Novamente, dados não cabem no cache a partir de (N=500.000) 18 | 14/04/2012 |
  • 19. Testes de desempenho – SELECT  Instrução SELECT somou o valor das 10 colunas float  Uso do SUM() sem o group by. Outras aggregações geraram resultados semelhantes  Uso ou não de lock hints não alteraram resultado  Teste:  Select de N linhas em 64 threads. Cada thread: N/64 linhas  TempDB adequado (50% acima do máximo em cada teste)  Valores float adequados para evitar overflow  Para cada N o teste foi realizado 10 vezes  Limpeza do cache a cada teste para cenário sem cache  Medição do tempo de execução com o SET STATISTICS TIME 19 | 14/04/2012 |
  • 20. Testes de desempenho – Resultado SELECT  Nota: diferença de escala com e sem cache  Melhor cenário: N=400.000 sem cache (redução de 98%)  Média do tempo de execução paralelo:  77% mais rápido sem cache  57% mais rápido com cache  Variações no plano de execução explicam picos/declínios no gráfico 20 | 14/04/2012 |
  • 21. Análise dos resultados  Alguns fatores impactam no resultado: plano de execução, cache, transaction log e I/O do S.O.  INSERT: 69% mais rápido sem cache e 83% mais rápido com cache  DELETE: 27% mais rápido sem cache e 85% mais rápido com cache  UPDATE: 70% mais rápido sem cache e 63% mais rápido com cache  SELECT: 77% mais rápido sem cache e 57% mais rápido com cache  Supondo melhor cenário no SELECT: 2*10^8 ~ 1 GFLOP  Isso representa apenas 2% da capacidade total do processador 21 | 14/04/2012 |
  • 22. Conclusões  Era de processadores com múltiplos núcleos  Programação paralela é necessária para obter desempenho  Poucos recursos para paralelismo em SGBDR  Custo do paralelismo requer esforço de programação  Testes com assembly .NET indicam melhora média de:  76% no tempo de execução do INSERT  56% no tempo de execução do DELETE  66,5% no tempo de execução do UPDATE  67% no tempo de execução do SELECT  Há espaço para novas possibilidades e melhorias nos SGBDR em termos de paralelismo e desempenho 22 | 14/04/2012 |
  • 23. #prontofalei Perguntas? 23 | 14/04/2012 |