SlideShare uma empresa Scribd logo
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 Programas
guest407a9
 
Drupal + Rex
Drupal + RexDrupal + Rex
Drupal + Rex
paulo_graca
 
Prasix
PrasixPrasix
Prasix
npauleta
 
FreeBsd com Alta Disponibilidade
FreeBsd com Alta DisponibilidadeFreeBsd com Alta Disponibilidade
FreeBsd com Alta Disponibilidade
Boteco 4Linux
 
Squid proxy
Squid proxySquid proxy
Squid proxy
Gabriel Martins
 
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
Luiz Francisco Bozo
 
Hardening Linux
Hardening LinuxHardening Linux
Hardening Linux
hdoria
 
Instalação de um servidor debian
Instalação de um servidor debianInstalação de um servidor debian
Instalação de um servidor debian
Eduardo Mendes
 
Roteiro sshd
Roteiro sshdRoteiro sshd
Roteiro sshd
Leandro Almeida
 
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
Alexandre Almeida
 
Certificação LPI
Certificação LPICertificação LPI
Certificação LPI
Bruna Griebeler
 
Apresentando o FreeBSD
Apresentando o FreeBSDApresentando o FreeBSD
Apresentando o FreeBSD
flisolmaringa
 
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
Luiz Francisco Bozo
 
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
Joubert Guimarães de Assis "RedRat"
 
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
Marcelo Sabadini
 
Administração de servidores Linux
Administração de servidores LinuxAdministração de servidores Linux
Administração de servidores Linux
João Sá
 
Mini-curso de linux básico
Mini-curso de linux básicoMini-curso de linux básico
Mini-curso de linux básico
Adriano Melo
 
Procedimentos de Backup
Procedimentos de BackupProcedimentos de Backup
Procedimentos de Backup
elliando 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 OpenBSD
Viní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 PGConf2019 - JIT ONE MORE TIME

Project HA
Project HAProject HA
Project HA
Karpv
 
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
Thiago 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
 
Servidores linux
Servidores linuxServidores linux
Servidores linux
Marcelo Gomes
 
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
Raul 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º Latinoware
Gerdan Santos
 
Por que PostgreSQL?
Por que PostgreSQL?Por que PostgreSQL?
Por que PostgreSQL?
Juliano Atanazio
 
Apache NiFi com postgresql
Apache NiFi com postgresqlApache NiFi com postgresql
Apache NiFi com postgresql
Gerdan 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 2018
Davy 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 hero
André Luís Cardoso
 
Segurança em servidores Linux
Segurança em servidores LinuxSegurança em servidores Linux
Segurança em servidores Linux
SoftD Abreu
 
Zabbix
ZabbixZabbix
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
Getup 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 pdt
Anderson Bassani
 
IntroduçãO Ao Linux
IntroduçãO Ao LinuxIntroduçãO Ao Linux
IntroduçãO Ao Linux
Rodrigo Piovesana
 
Curso linux - Especialista Avançado
Curso linux - Especialista AvançadoCurso linux - Especialista Avançado
Curso linux - Especialista Avançado
Curso_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 OpenShift
Getup Cloud
 
Webinar RHEV na IT Web
Webinar RHEV na IT WebWebinar RHEV na IT Web
Webinar RHEV na IT Web
Rodrigo Missiaggia
 
PHP e Redis
PHP e RedisPHP e Redis
PHP e Redis
Paulo Victor Gomes
 

Semelhante a PGConf2019 - 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
 

Último

Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
joaovmp3
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
TomasSousa7
 
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
Momento da Informática
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Momento da Informática
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
WELITONNOGUEIRA3
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
Momento da Informática
 

Último (6)

Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
 
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
 

PGConf2019 - 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/