SlideShare uma empresa Scribd logo
1 de 14
Baixar para ler offline
JIT
ONE MORE TIME
PALESTRANTES
Gerdan Rezende dos Santos
Brasília - DF
Tecnisys Tecnologias Inovadoras
Especialista em Banco de Dados
e Big Data
Ativo em várias comunidades de
software livre, sendo um apaixonado por
tecnologias open source
Organizador e palestrante do PGDay
Brasília. Já palestrou em eventos da IBM,
Latinoware, entre outros
https://www.linkedin.com/in/gerdan
Davy Alvarenga Machado
Brasília - DF
Tecnisys Tecnologias Inovadoras
Especialista em Banco de Dados
e Big Data
Ativista open source e curioso por
natureza
Revisor e contribuidor da comunidade
PostgreSQL e Apache
Organizador e palestrante do PGDay
Brasília
https://br.linkedin.com/in/davy-alvarenga-machado
TECNISYS
Referência nacional em soluções open source
atuando no mercado de TI a mais de 25 anos
Parceira de empresas líderes internacionalmente,
tais como, EnterpriseDB, Hortonworks, Cloudera,
Red Hat, SUSE, entre outras
Especialistas em Banco de Dados, Big Data,
Sistemas Operacionais, Middlewares, entre outras
áreas
Principal via estratégica de mercado da
EnterpriseDB para o território brasileiro
Suporte ao PostgreSQL 24x7, com atendimento
inicial em menos de 15 min via 0800, site ou e-
mail
AGENDA
­ O que é o JIT
­ Operações JITed
­ Se liga!
­ Instalando, Configurando e Verificando
­ Benchmark
­ Dúvidas
JUST-IN-TIME (JIT)
­ Programa interpretado para liguagem de máquina (bytecode)
­ Expressões SQL para código nativo = Aumento de desempenho (CPU)
­ Tudo isso em tempo de planejamento baby!
­ LLVM (compiler infrastructure) – JIT Provider
­ Avaliação de Expressões e Deformação de Tuplas
­ Thank you so much Andres Freund!
OPERAÇÕES JITED
­ Avaliação de Expressões
Filtros (WHERE)
Agregações (GROUP BY, SUM, COUNT, MAX, MIN, etc)
Projeções (SELECT …)
­ Deformação de Tuplas
Representação in-memory de tuplas
Função própria para o layout data tabela
Acesso rápido e fácil
­ No futuro, outras operações poderão ser otimizadas pelo JIT
SE LIGA!
Não existe almoço grátis! O JIT tem o seu custo!
Good Queries longas, como consultas analíticas (OLAP)
Good Queries com várias expressões complexas, como agregações
Good Queries limitadas pelo CPU
Bad Queries rápidas
(JIT overhead maior que o tempo ganho na execução)
INSTALANDO …
­ Repositório
sudo yum install https://download.postgresql.org/pub/repos/...
sudo yum install postgresql11-server
sudo yum install epel-release (dependências do LLVM)
sudo yum install postgresql11-llvmjit
­ Código-fonte
sudo yum install centos-release-scl
sudo yum install llvm-toolset-7 llvm-toolset-7-llvm-devel.x86_64
PATH=/opt/rh/devtoolset-7/root/usr/bin/:/opt/rh/llvm-toolset-7/root/usr/bin/:$PATH
tar -xvf postgresql-11.0.tar.bz2
./configure --prefix=/home/postgres/pg11 --with-llvm
make
make install
CONFIGURANDO ...
­ Por padrão, o JIT vem desabilitado
postgresql.conf jit = on (não requer restart)
ALTER SYSTEM SET jit = on;
SET jit = on;
­ Acionamento baseado no custo estimado da query
jit_above_cost = 100000 (default)
jit_inline_above_cost = 500000 (default)
jit_optimize_above_cost = 500000 (default)
VERIFICANDO ...
=# SET jit_above_cost = 10;
SET
=# EXPLAIN ANALYZE SELECT SUM(relpages) FROM pg_class;
QUERY PLAN
-------------------------------------------------------------------------------------------------------------
Aggregate (cost=16.27..16.29 rows=1 width=8) (actual time=6.049..6.049 rows=1 loops=1)
-> Seq Scan on pg_class (cost=0.00..15.42 rows=342 width=4) (actual time=0.019..0.052 rows=356 loops=1)
Planning Time: 0.133 ms
JIT:
Functions: 3
Options: Inlining false, Optimization false, Expressions true, Deforming true
Timing: Generation 1.259 ms, Inlining 0.000 ms, Optimization 0.797 ms, Emission 5.048 ms, Total 7.104 ms
Execution Time: 7.416 ms
Tip Use a opção BUFFERS do EXPLAIN para analisar o impacto do
uso do cache na execução da query: EXPLAIN (ANALYZE, BUFFERS)
BENCHMARK
­ TPC-H - Sistemas de suporte à decisão
­ Scale Factor 10
Banco de dados de 22GB, incluindo índices
Loop de 10 min
AWS c5.4xlarge
­ Paralelização de queries desativada
­ PG 9.6 x PG 10 x PG 11 (JIT)
BENCHMARK
Pricing Summary Report Query (Q1)
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(*) as count_order
from
lineitem
where
l_shipdate <= date '1998-12-01' - interval ':1' day
group by
l_returnflag, l_linestatus
order by
l_returnflag, l_linestatus :n -1 ;
BENCHMARK
PostgreSQL 11
29.31%
MAIS RÁPIDO
Em 10 minutos,
30 EXECUÇÕES
Fonte: https://www.citusdata.com/blog/2018/09/11/postgresql-11-just-in-time/
DÚVIDAS? RTFM
OBRIGADO!

Mais conteúdo relacionado

Mais procurados

Linux - Instalação de Programas
Linux - Instalação de ProgramasLinux - Instalação de Programas
Linux - Instalação de Programasguest407a9
 
FreeBsd com Alta Disponibilidade
FreeBsd com Alta DisponibilidadeFreeBsd com Alta Disponibilidade
FreeBsd com Alta DisponibilidadeBoteco 4Linux
 
Tutorial do shell script para Clonar HDs WIN7 usando Linux
Tutorial do shell script para Clonar HDs WIN7 usando LinuxTutorial do shell script para Clonar HDs WIN7 usando Linux
Tutorial do shell script para Clonar HDs WIN7 usando LinuxLuiz Francisco Bozo
 
Hardening Linux
Hardening LinuxHardening Linux
Hardening Linuxhdoria
 
Instalação de um servidor debian
Instalação de um servidor debianInstalação de um servidor debian
Instalação de um servidor debianEduardo Mendes
 
Instalando o MySQL em menos de 10 minutos
Instalando o MySQL em menos de 10 minutosInstalando o MySQL em menos de 10 minutos
Instalando o MySQL em menos de 10 minutosAlexandre Almeida
 
Apresentando o FreeBSD
Apresentando o FreeBSDApresentando o FreeBSD
Apresentando o FreeBSDflisolmaringa
 
Tutorial do shell script para criar imagens de HDs Win7 usando Linux
Tutorial do shell script para criar imagens de HDs Win7 usando LinuxTutorial do shell script para criar imagens de HDs Win7 usando Linux
Tutorial do shell script para criar imagens de HDs Win7 usando LinuxLuiz Francisco Bozo
 
Como migrar seu ambiente de desenvolvimento para Linux
Como migrar seu ambiente de desenvolvimento para LinuxComo migrar seu ambiente de desenvolvimento para Linux
Como migrar seu ambiente de desenvolvimento para LinuxMarcelo Sabadini
 
Administração de servidores Linux
Administração de servidores LinuxAdministração de servidores Linux
Administração de servidores LinuxJoão Sá
 
Mini-curso de linux básico
Mini-curso de linux básicoMini-curso de linux básico
Mini-curso de linux básicoAdriano Melo
 
Procedimentos de Backup
Procedimentos de BackupProcedimentos de Backup
Procedimentos de Backupelliando dias
 
pf: O Filtro de Pacotes do OpenBSD
pf: O Filtro de Pacotes do OpenBSDpf: O Filtro de Pacotes do OpenBSD
pf: O Filtro de Pacotes do OpenBSDVinícius Zavam
 

Mais procurados (19)

Linux - Instalação de Programas
Linux - Instalação de ProgramasLinux - Instalação de Programas
Linux - Instalação de Programas
 
Drupal + Rex
Drupal + RexDrupal + Rex
Drupal + Rex
 
Prasix
PrasixPrasix
Prasix
 
FreeBsd com Alta Disponibilidade
FreeBsd com Alta DisponibilidadeFreeBsd com Alta Disponibilidade
FreeBsd com Alta Disponibilidade
 
Squid proxy
Squid proxySquid proxy
Squid proxy
 
Tutorial do shell script para Clonar HDs WIN7 usando Linux
Tutorial do shell script para Clonar HDs WIN7 usando LinuxTutorial do shell script para Clonar HDs WIN7 usando Linux
Tutorial do shell script para Clonar HDs WIN7 usando Linux
 
Hardening Linux
Hardening LinuxHardening Linux
Hardening Linux
 
Instalação de um servidor debian
Instalação de um servidor debianInstalação de um servidor debian
Instalação de um servidor debian
 
Roteiro sshd
Roteiro sshdRoteiro sshd
Roteiro sshd
 
Instalando o MySQL em menos de 10 minutos
Instalando o MySQL em menos de 10 minutosInstalando o MySQL em menos de 10 minutos
Instalando o MySQL em menos de 10 minutos
 
Certificação LPI
Certificação LPICertificação LPI
Certificação LPI
 
Apresentando o FreeBSD
Apresentando o FreeBSDApresentando o FreeBSD
Apresentando o FreeBSD
 
Tutorial do shell script para criar imagens de HDs Win7 usando Linux
Tutorial do shell script para criar imagens de HDs Win7 usando LinuxTutorial do shell script para criar imagens de HDs Win7 usando Linux
Tutorial do shell script para criar imagens de HDs Win7 usando Linux
 
Dicas de segurança para o PHP e seus amigos
Dicas de segurança para o PHP e seus amigosDicas de segurança para o PHP e seus amigos
Dicas de segurança para o PHP e seus amigos
 
Como migrar seu ambiente de desenvolvimento para Linux
Como migrar seu ambiente de desenvolvimento para LinuxComo migrar seu ambiente de desenvolvimento para Linux
Como migrar seu ambiente de desenvolvimento para Linux
 
Administração de servidores Linux
Administração de servidores LinuxAdministração de servidores Linux
Administração de servidores Linux
 
Mini-curso de linux básico
Mini-curso de linux básicoMini-curso de linux básico
Mini-curso de linux básico
 
Procedimentos de Backup
Procedimentos de BackupProcedimentos de Backup
Procedimentos de Backup
 
pf: O Filtro de Pacotes do OpenBSD
pf: O Filtro de Pacotes do OpenBSDpf: O Filtro de Pacotes do OpenBSD
pf: O Filtro de Pacotes do OpenBSD
 

Semelhante a JIT One More Time

Project HA
Project HAProject HA
Project HAKarpv
 
Construção e provisionamento de ambientes de desenvolvimento virtualizados
Construção e provisionamento de ambientes  de desenvolvimento virtualizadosConstrução e provisionamento de ambientes  de desenvolvimento virtualizados
Construção e provisionamento de ambientes de desenvolvimento virtualizadosThiago Rodrigues
 
TDC2018SP | Trilha Banco de Dados - Transformacao do DBA. O que Agile e DevOp...
TDC2018SP | Trilha Banco de Dados - Transformacao do DBA. O que Agile e DevOp...TDC2018SP | Trilha Banco de Dados - Transformacao do DBA. O que Agile e DevOp...
TDC2018SP | Trilha Banco de Dados - Transformacao do DBA. O que Agile e DevOp...tdc-globalcode
 
Arquitetando Soluções de Dados com PostgreSQL
Arquitetando Soluções de Dados com PostgreSQLArquitetando Soluções de Dados com PostgreSQL
Arquitetando Soluções de Dados com PostgreSQLRaul Oliveira
 
Tunning PostgreSQL em modo OGRO - 13º Latinoware
Tunning PostgreSQL em modo OGRO - 13º LatinowareTunning PostgreSQL em modo OGRO - 13º Latinoware
Tunning PostgreSQL em modo OGRO - 13º LatinowareGerdan Santos
 
Apache NiFi com postgresql
Apache NiFi com postgresqlApache NiFi com postgresql
Apache NiFi com postgresqlGerdan Santos
 
Apache NiFi com PostgreSQL - PGConf.Brasil 2018
Apache NiFi com PostgreSQL - PGConf.Brasil 2018Apache NiFi com PostgreSQL - PGConf.Brasil 2018
Apache NiFi com PostgreSQL - PGConf.Brasil 2018Davy Alvarenga Machado
 
IBM Domino 9 cluster - zero to hero
IBM Domino 9 cluster - zero to heroIBM Domino 9 cluster - zero to hero
IBM Domino 9 cluster - zero to heroAndré Luís Cardoso
 
Segurança em servidores Linux
Segurança em servidores LinuxSegurança em servidores Linux
Segurança em servidores LinuxSoftD Abreu
 
Semana Acadêmica ICET - Feevale - 12/04/2014
Semana Acadêmica ICET - Feevale - 12/04/2014Semana Acadêmica ICET - Feevale - 12/04/2014
Semana Acadêmica ICET - Feevale - 12/04/2014Getup Cloud
 
Instalando um servidor virtual Linux on z (Red hat ou SUSE) no emulador z pdt
Instalando um servidor virtual Linux on z (Red hat ou SUSE) no emulador z pdtInstalando um servidor virtual Linux on z (Red hat ou SUSE) no emulador z pdt
Instalando um servidor virtual Linux on z (Red hat ou SUSE) no emulador z pdtAnderson Bassani
 
Curso linux - Especialista Avançado
Curso linux - Especialista AvançadoCurso linux - Especialista Avançado
Curso linux - Especialista AvançadoCurso_ADV
 
O FUTURO DE CLOUD COM IaaS OPEN SOURCE: Construa sua Nuvem Privada com OpenSt...
O FUTURO DE CLOUD COM IaaS OPEN SOURCE: Construa sua Nuvem Privada com OpenSt...O FUTURO DE CLOUD COM IaaS OPEN SOURCE: Construa sua Nuvem Privada com OpenSt...
O FUTURO DE CLOUD COM IaaS OPEN SOURCE: Construa sua Nuvem Privada com OpenSt...Rodrigo Missiaggia
 
Escalando aplicação Python usando Getup OpenShift
Escalando aplicação Python usando Getup OpenShiftEscalando aplicação Python usando Getup OpenShift
Escalando aplicação Python usando Getup OpenShiftGetup Cloud
 

Semelhante a JIT One More Time (20)

Project HA
Project HAProject HA
Project HA
 
Construção e provisionamento de ambientes de desenvolvimento virtualizados
Construção e provisionamento de ambientes  de desenvolvimento virtualizadosConstrução e provisionamento de ambientes  de desenvolvimento virtualizados
Construção e provisionamento de ambientes de desenvolvimento virtualizados
 
TDC2018SP | Trilha Banco de Dados - Transformacao do DBA. O que Agile e DevOp...
TDC2018SP | Trilha Banco de Dados - Transformacao do DBA. O que Agile e DevOp...TDC2018SP | Trilha Banco de Dados - Transformacao do DBA. O que Agile e DevOp...
TDC2018SP | Trilha Banco de Dados - Transformacao do DBA. O que Agile e DevOp...
 
Servidores linux
Servidores linuxServidores linux
Servidores linux
 
Arquitetando Soluções de Dados com PostgreSQL
Arquitetando Soluções de Dados com PostgreSQLArquitetando Soluções de Dados com PostgreSQL
Arquitetando Soluções de Dados com PostgreSQL
 
Tunning PostgreSQL em modo OGRO - 13º Latinoware
Tunning PostgreSQL em modo OGRO - 13º LatinowareTunning PostgreSQL em modo OGRO - 13º Latinoware
Tunning PostgreSQL em modo OGRO - 13º Latinoware
 
Por que PostgreSQL?
Por que PostgreSQL?Por que PostgreSQL?
Por que PostgreSQL?
 
Apache NiFi com postgresql
Apache NiFi com postgresqlApache NiFi com postgresql
Apache NiFi com postgresql
 
Apache NiFi com PostgreSQL - PGConf.Brasil 2018
Apache NiFi com PostgreSQL - PGConf.Brasil 2018Apache NiFi com PostgreSQL - PGConf.Brasil 2018
Apache NiFi com PostgreSQL - PGConf.Brasil 2018
 
IBM Domino 9 cluster - zero to hero
IBM Domino 9 cluster - zero to heroIBM Domino 9 cluster - zero to hero
IBM Domino 9 cluster - zero to hero
 
Segurança em servidores Linux
Segurança em servidores LinuxSegurança em servidores Linux
Segurança em servidores Linux
 
Zabbix
ZabbixZabbix
Zabbix
 
Semana Acadêmica ICET - Feevale - 12/04/2014
Semana Acadêmica ICET - Feevale - 12/04/2014Semana Acadêmica ICET - Feevale - 12/04/2014
Semana Acadêmica ICET - Feevale - 12/04/2014
 
Instalando um servidor virtual Linux on z (Red hat ou SUSE) no emulador z pdt
Instalando um servidor virtual Linux on z (Red hat ou SUSE) no emulador z pdtInstalando um servidor virtual Linux on z (Red hat ou SUSE) no emulador z pdt
Instalando um servidor virtual Linux on z (Red hat ou SUSE) no emulador z pdt
 
IntroduçãO Ao Linux
IntroduçãO Ao LinuxIntroduçãO Ao Linux
IntroduçãO Ao Linux
 
Curso linux - Especialista Avançado
Curso linux - Especialista AvançadoCurso linux - Especialista Avançado
Curso linux - Especialista Avançado
 
O FUTURO DE CLOUD COM IaaS OPEN SOURCE: Construa sua Nuvem Privada com OpenSt...
O FUTURO DE CLOUD COM IaaS OPEN SOURCE: Construa sua Nuvem Privada com OpenSt...O FUTURO DE CLOUD COM IaaS OPEN SOURCE: Construa sua Nuvem Privada com OpenSt...
O FUTURO DE CLOUD COM IaaS OPEN SOURCE: Construa sua Nuvem Privada com OpenSt...
 
Escalando aplicação Python usando Getup OpenShift
Escalando aplicação Python usando Getup OpenShiftEscalando aplicação Python usando Getup OpenShift
Escalando aplicação Python usando Getup OpenShift
 
Webinar RHEV na IT Web
Webinar RHEV na IT WebWebinar RHEV na IT Web
Webinar RHEV na IT Web
 
PHP e Redis
PHP e RedisPHP e Redis
PHP e Redis
 

JIT One More Time

  • 2. PALESTRANTES Gerdan Rezende dos Santos Brasília - DF Tecnisys Tecnologias Inovadoras Especialista em Banco de Dados e Big Data Ativo em várias comunidades de software livre, sendo um apaixonado por tecnologias open source Organizador e palestrante do PGDay Brasília. Já palestrou em eventos da IBM, Latinoware, entre outros https://www.linkedin.com/in/gerdan Davy Alvarenga Machado Brasília - DF Tecnisys Tecnologias Inovadoras Especialista em Banco de Dados e Big Data Ativista open source e curioso por natureza Revisor e contribuidor da comunidade PostgreSQL e Apache Organizador e palestrante do PGDay Brasília https://br.linkedin.com/in/davy-alvarenga-machado
  • 3. TECNISYS Referência nacional em soluções open source atuando no mercado de TI a mais de 25 anos Parceira de empresas líderes internacionalmente, tais como, EnterpriseDB, Hortonworks, Cloudera, Red Hat, SUSE, entre outras Especialistas em Banco de Dados, Big Data, Sistemas Operacionais, Middlewares, entre outras áreas Principal via estratégica de mercado da EnterpriseDB para o território brasileiro Suporte ao PostgreSQL 24x7, com atendimento inicial em menos de 15 min via 0800, site ou e- mail
  • 4. AGENDA ­ O que é o JIT ­ Operações JITed ­ Se liga! ­ Instalando, Configurando e Verificando ­ Benchmark ­ Dúvidas
  • 5. JUST-IN-TIME (JIT) ­ Programa interpretado para liguagem de máquina (bytecode) ­ Expressões SQL para código nativo = Aumento de desempenho (CPU) ­ Tudo isso em tempo de planejamento baby! ­ LLVM (compiler infrastructure) – JIT Provider ­ Avaliação de Expressões e Deformação de Tuplas ­ Thank you so much Andres Freund!
  • 6. OPERAÇÕES JITED ­ Avaliação de Expressões Filtros (WHERE) Agregações (GROUP BY, SUM, COUNT, MAX, MIN, etc) Projeções (SELECT …) ­ Deformação de Tuplas Representação in-memory de tuplas Função própria para o layout data tabela Acesso rápido e fácil ­ No futuro, outras operações poderão ser otimizadas pelo JIT
  • 7. SE LIGA! Não existe almoço grátis! O JIT tem o seu custo! Good Queries longas, como consultas analíticas (OLAP) Good Queries com várias expressões complexas, como agregações Good Queries limitadas pelo CPU Bad Queries rápidas (JIT overhead maior que o tempo ganho na execução)
  • 8. INSTALANDO … ­ Repositório sudo yum install https://download.postgresql.org/pub/repos/... sudo yum install postgresql11-server sudo yum install epel-release (dependências do LLVM) sudo yum install postgresql11-llvmjit ­ Código-fonte sudo yum install centos-release-scl sudo yum install llvm-toolset-7 llvm-toolset-7-llvm-devel.x86_64 PATH=/opt/rh/devtoolset-7/root/usr/bin/:/opt/rh/llvm-toolset-7/root/usr/bin/:$PATH tar -xvf postgresql-11.0.tar.bz2 ./configure --prefix=/home/postgres/pg11 --with-llvm make make install
  • 9. CONFIGURANDO ... ­ Por padrão, o JIT vem desabilitado postgresql.conf jit = on (não requer restart) ALTER SYSTEM SET jit = on; SET jit = on; ­ Acionamento baseado no custo estimado da query jit_above_cost = 100000 (default) jit_inline_above_cost = 500000 (default) jit_optimize_above_cost = 500000 (default)
  • 10. VERIFICANDO ... =# SET jit_above_cost = 10; SET =# EXPLAIN ANALYZE SELECT SUM(relpages) FROM pg_class; QUERY PLAN ------------------------------------------------------------------------------------------------------------- Aggregate (cost=16.27..16.29 rows=1 width=8) (actual time=6.049..6.049 rows=1 loops=1) -> Seq Scan on pg_class (cost=0.00..15.42 rows=342 width=4) (actual time=0.019..0.052 rows=356 loops=1) Planning Time: 0.133 ms JIT: Functions: 3 Options: Inlining false, Optimization false, Expressions true, Deforming true Timing: Generation 1.259 ms, Inlining 0.000 ms, Optimization 0.797 ms, Emission 5.048 ms, Total 7.104 ms Execution Time: 7.416 ms Tip Use a opção BUFFERS do EXPLAIN para analisar o impacto do uso do cache na execução da query: EXPLAIN (ANALYZE, BUFFERS)
  • 11. BENCHMARK ­ TPC-H - Sistemas de suporte à decisão ­ Scale Factor 10 Banco de dados de 22GB, incluindo índices Loop de 10 min AWS c5.4xlarge ­ Paralelização de queries desativada ­ PG 9.6 x PG 10 x PG 11 (JIT)
  • 12. BENCHMARK Pricing Summary Report Query (Q1) 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(*) as count_order from lineitem where l_shipdate <= date '1998-12-01' - interval ':1' day group by l_returnflag, l_linestatus order by l_returnflag, l_linestatus :n -1 ;
  • 13. BENCHMARK PostgreSQL 11 29.31% MAIS RÁPIDO Em 10 minutos, 30 EXECUÇÕES Fonte: https://www.citusdata.com/blog/2018/09/11/postgresql-11-just-in-time/