análise comparativa de desempenho entre mysql e postgresql fábio Ávila [email protected]...

42
Análise comparativa de Análise comparativa de desempenho entre MySQL e desempenho entre MySQL e PostgreSQL PostgreSQL Fábio Ávila Fábio Ávila [email protected] [email protected] http://itautec.cin.ufpe.br/ http://itautec.cin.ufpe.br/ Maio/2006 Maio/2006

Upload: internet

Post on 18-Apr-2015

106 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila avila@itautec.cin.ufpe.br Maio/2006

Análise comparativa de Análise comparativa de desempenho entre MySQL desempenho entre MySQL

e PostgreSQLe PostgreSQL

Fábio ÁvilaFábio Á[email protected]@itautec.cin.ufpe.br

http://itautec.cin.ufpe.br/http://itautec.cin.ufpe.br/

Maio/2006Maio/2006

Page 2: Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila avila@itautec.cin.ufpe.br Maio/2006

22

Agenda

IntroduçãoIntrodução BenchmarksBenchmarks utilizados utilizados

Destaque ao DBT-2Destaque ao DBT-2 ResultadosResultados Conclusões e trabalhos futurosConclusões e trabalhos futuros PerguntasPerguntas

Page 3: Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila avila@itautec.cin.ufpe.br Maio/2006

33

Objetivo Comparativo de desempenho entre MySQL e Comparativo de desempenho entre MySQL e

PostgreSQL no LinuxPostgreSQL no Linux Uso dos benchmarks DBT-2, OSDB e PolePositionUso dos benchmarks DBT-2, OSDB e PolePosition

Estimular melhoria do desempenho de SGBD de Estimular melhoria do desempenho de SGBD de código abertocódigo aberto Não promover vencedores e perdedoresNão promover vencedores e perdedores

Page 4: Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila avila@itautec.cin.ufpe.br Maio/2006

44

Quem Somos Convênio P&D entre Itautec e CIn/UFPEConvênio P&D entre Itautec e CIn/UFPE

Laboratório de Análise de PerformanceLaboratório de Análise de Performance Fundado em Janeiro/2003Fundado em Janeiro/2003

ObjetivosObjetivos Análise de desempenho de servidores de missão críticaAnálise de desempenho de servidores de missão crítica Certificação TPC-C em servidores da ItautecCertificação TPC-C em servidores da Itautec HCT LibrixHCT Librix

ResultadosResultados 8 publicações TPC-C8 publicações TPC-C Apresentações em eventosApresentações em eventos Releases de Releases de white paperswhite papers e HCT e HCT

http://itautec.cin.ufpe.brhttp://itautec.cin.ufpe.br

Page 5: Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila avila@itautec.cin.ufpe.br Maio/2006

55

Equipe TPC

Rilson NascimentoRilson Nascimento

Francisco CarvalhoFrancisco Carvalho

Fábio ÁvilaFábio Ávila

Carlos Eduardo PiresCarlos Eduardo Pires

Marcelo RodriguesMarcelo Rodrigues

Page 6: Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila avila@itautec.cin.ufpe.br Maio/2006

66

Benchmarks DefiniçãoDefinição

Padrão para medida ou avaliaçãoPadrão para medida ou avaliação Gera métricas de desempenhoGera métricas de desempenho Permite comparaçõesPermite comparações Destaca oportunidades de melhoriaDestaca oportunidades de melhoria PerformancePerformance / / FeatureFeature

Características desejáveisCaracterísticas desejáveis Especificação detalhada e abertaEspecificação detalhada e aberta Produzido por órgãos neutrosProduzido por órgãos neutros Escalonável (scalable)Escalonável (scalable) PortátilPortátil ReproduzívelReproduzível

Page 7: Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila avila@itautec.cin.ufpe.br Maio/2006

77

Breve Histórico de Benchmarks Wisconsin Benchmark - David DeWitt (1983)Wisconsin Benchmark - David DeWitt (1983)

Provocou criação da “cláusula DeWitt”Provocou criação da “cláusula DeWitt” Paper Anon et Al - Jim Gray (1985)Paper Anon et Al - Jim Gray (1985) ASAS33AP (1987) - Carolyn TurbyfillAP (1987) - Carolyn Turbyfill

Implementação: OSDB (2001)Implementação: OSDB (2001) TPC (1988)TPC (1988) SPEC (1988)SPEC (1988) BAPCo (1991)BAPCo (1991) TPC-C (1993)TPC-C (1993) SPC (1997)SPC (1997) TPC-App (2004)TPC-App (2004)

Page 8: Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila avila@itautec.cin.ufpe.br Maio/2006

88

Transaction Processing Performance Council (TPC)

Fundada em 1988Fundada em 1988 Realidade parecida com a Realidade parecida com a

Fórmula 1Fórmula 1 Grandes investimentos na Grandes investimentos na

tentativa de superar os tentativa de superar os concorrentesconcorrentes

18 18 full membersfull members HP, IBM, Oracle, Microsoft, Unisys, HP, IBM, Oracle, Microsoft, Unisys,

Sun, Intel, AMD, Dell, Fujitsu, NEC, Sun, Intel, AMD, Dell, Fujitsu, NEC, Teradata, Novell, Sybase, Bull, Teradata, Novell, Sybase, Bull, NetezzaNetezza

4 4 associate membersassociate members OSDL, CIn/UFPE, Ideas, ITOMOSDL, CIn/UFPE, Ideas, ITOM

Page 9: Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila avila@itautec.cin.ufpe.br Maio/2006

99

Open Source Development Labs (OSDL)

Organização sem fins lucrativos, Organização sem fins lucrativos, fundada em 2000fundada em 2000

MissãoMissão Incentivar a utilização do LinuxIncentivar a utilização do Linux

Reconhecida mundialmente por seus Reconhecida mundialmente por seus projetosprojetos IPV6-DHCP, kernel testing, DBT-*, etc.IPV6-DHCP, kernel testing, DBT-*, etc.

Recebe investimentos de grandes Recebe investimentos de grandes empresas como Fujitsu, HP, IBM e Intelempresas como Fujitsu, HP, IBM e Intel

Associate memberAssociate member da TPC da TPC

Page 10: Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila avila@itautec.cin.ufpe.br Maio/2006

1010

Benchmarks Utilizados

DBT-2DBT-2 Implementação da OSDL do TPC-CImplementação da OSDL do TPC-C

OSDBOSDB Implementação OpenSource do ASImplementação OpenSource do AS33APAP

PolePositionPolePosition Instanciando objetos em JavaInstanciando objetos em Java

Page 11: Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila avila@itautec.cin.ufpe.br Maio/2006

1111

Hardware Utilizado

Servidor ItautecServidor Itautec 2 Processadores Pentium III Xeon 1.0 2 Processadores Pentium III Xeon 1.0

GHzGHz 2GB RAM, Cache L2 256KB2GB RAM, Cache L2 256KB 1 Disco Interno SCSI Seagate 10Krpm1 Disco Interno SCSI Seagate 10Krpm

1 Storage com 14 Discos SCSI 1 Storage com 14 Discos SCSI Seagate 15Krpm de 36GB RAID 0Seagate 15Krpm de 36GB RAID 0

1 Placa Controladora 1 Placa Controladora Mylex Mylex Extreme RAID 2000 4CExtreme RAID 2000 4C

1 Switch 1Gbps1 Switch 1Gbps

Page 12: Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila avila@itautec.cin.ufpe.br Maio/2006

1212

Software Utilizado

Linux Fedora Core 4, Kernel 2.6.11-Linux Fedora Core 4, Kernel 2.6.11-1.1369_FC4smp, filesystem ext31.1369_FC4smp, filesystem ext3

PostgreSQL 8.1.3 on i686-pc-linux-PostgreSQL 8.1.3 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) gnu, compiled by GCC gcc (GCC) 4.0.0 20050519 (Red Hat 4.0.0-8)4.0.0 20050519 (Red Hat 4.0.0-8)

MySQL 5.0.12-beta-standard-logMySQL 5.0.12-beta-standard-log dbt2-0.37, Novembro de 2005dbt2-0.37, Novembro de 2005

Page 13: Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila avila@itautec.cin.ufpe.br Maio/2006

1313

Ambiente de Teste

DBT-2 e OSDB: Console VNC

PolePosition: Gerador de Carga

Eclipse

StorageServidor Itautec

Sistema sob Avaliação

Switch

Linux + DBT-2 + SGBD Banco de Dados

Page 14: Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila avila@itautec.cin.ufpe.br Maio/2006

1414

Database Test 2 (DBT-2)

Implementação incompleta do TPC-CImplementação incompleta do TPC-C Não comparável aos resultados oficiais TPC-CNão comparável aos resultados oficiais TPC-C Código AbertoCódigo Aberto

Simula um ambiente OLTPSimula um ambiente OLTP Operações refletem as 5 atividades principais Operações refletem as 5 atividades principais

de uma empresa atacadistade uma empresa atacadista Explora consultas, transações curtas e Explora consultas, transações curtas e

concorrênciaconcorrência Acesso não-uniforme aos dadosAcesso não-uniforme aos dados Ambiente multi-usuárioAmbiente multi-usuário

Page 15: Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila avila@itautec.cin.ufpe.br Maio/2006

1515

Modelo Lógico do Banco de Dados

WarehouseWarehouseW

DistrictDistrictW * 10

StockStockW * 100k

ItemItem100k

HistoryHistoryW * 30k+

New-OrderNew-OrderW * 9k+

Order-LineOrder-LineW * 300k+

CustomerCustomerW * 30k

OrdersOrdersW * 30k+

100k

10

3k

1+0-1

5-15

3+W

1+

Page 16: Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila avila@itautec.cin.ufpe.br Maio/2006

1616

Exemplo: PostgreSQL, 115wWarehouseWarehouse

(115)24 KB

DistrictDistrict(1.150)184 KB

StockStock(11.500.000)

3.8 GB

ItemItem(100.000)10.8 MB

HistoryHistory(3.450.000)

290 MB

New-OrderNew-Order(1.035.000)

40 MB

Order-LineOrder-Line(32.767.533)

3 GB

CustomerCustomer(3.450.000)

2.2 GB

OrdersOrders(3.450.000)

221 MB

Total (incluindo índices): 11.7 GB

Page 17: Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila avila@itautec.cin.ufpe.br Maio/2006

1717

Transações do DBT-2 Escrita e leituraEscrita e leitura

New-OrderNew-Order Entrada de um novo pedidoEntrada de um novo pedido

PaymentPayment Registra um pagamento de clienteRegistra um pagamento de cliente

DeliveryDelivery Processa a entrega de um lote de 10 pedidosProcessa a entrega de um lote de 10 pedidos

ConsultaConsulta Order-StatusOrder-Status

Retorna o status do último pedido de um clienteRetorna o status do último pedido de um cliente Stock-LevelStock-Level

Retorna itens que têm nível de estoque abaixo de um limite Retorna itens que têm nível de estoque abaixo de um limite específicoespecífico

Page 18: Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila avila@itautec.cin.ufpe.br Maio/2006

1818

Percentuais de Execução

Payment 43%Payment 43% Order-Status 4%Order-Status 4% Delivery 4%Delivery 4% Stock Level 4%Stock Level 4% New-Order New-Order ≡ ≡ 45% (restante)45% (restante)

Page 19: Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila avila@itautec.cin.ufpe.br Maio/2006

1919

Métricas NOTPMNOTPM

Número de Transações New-Order por minutoNúmero de Transações New-Order por minuto Regra de escalabilidade do TPC-CRegra de escalabilidade do TPC-C

1 warehouse 1 warehouse 10 usuários 10 usuários

Exemplo para 1.000 usuários:Exemplo para 1.000 usuários: BD: 100 warehousesBD: 100 warehouses Desempenho mínimo: 900 NOTPMDesempenho mínimo: 900 NOTPM Desempenho máximo: 1286 NOTPMDesempenho máximo: 1286 NOTPM

286,1#

9,0 Usuários

NOTPM

Page 20: Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila avila@itautec.cin.ufpe.br Maio/2006

2020

Emulação de usuários

1 – Escolhe tipo da transação

2 – Tempo de resposta do menu (após exibição na tela)

3 – Tempo de espera (keying time)

4 – Tempo de processamento (após exibir dados na tela)

5 – Tempo de espera (think time)

Page 21: Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila avila@itautec.cin.ufpe.br Maio/2006

2121

Tuning – DBT-2

PostgreSQL 8.1.3 (postgresql.conf)PostgreSQL 8.1.3 (postgresql.conf) fsync = off fsync = off [on][on] shared_buffers = 20.000 (156 MB) shared_buffers = 20.000 (156 MB) [1.000][1.000] checkpoint_segments = 256 checkpoint_segments = 256 [6][6] checkpoint_timeout = 1800 s checkpoint_timeout = 1800 s [300][300] stats_* = off stats_* = off [on][on] work_mem = 1024K work_mem = 1024K [512][512]

MySQL 5.0.12 Beta (my-huge.cnf)MySQL 5.0.12 Beta (my-huge.cnf) innodb_buffer_pool_size = 1228 MBinnodb_buffer_pool_size = 1228 MB [384][384] innodb_log_file_size = 307 MBinnodb_log_file_size = 307 MB [100][100] innodb_flush_log_at_trx_commit = 0innodb_flush_log_at_trx_commit = 0 [1][1] thread_concurrency = 4thread_concurrency = 4 [8][8]

Page 22: Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila avila@itautec.cin.ufpe.br Maio/2006

2222

Número de Transações New-Order por Minuto (NOTPM)

0

200

400

600

800

1000

1200

1400

1600

1800

1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 61 64

PostgreSQLMySQL

Page 23: Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila avila@itautec.cin.ufpe.br Maio/2006

2323

CPU

0

10

20

30

40

50

60

70

80

90

100

1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 61 64

Postgres TOTALMySQL TOTALPostgres UserMySQL UserPostgres SystemMySQL SystemPostgres I/O WaitMySQL I/O wait

Page 24: Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila avila@itautec.cin.ufpe.br Maio/2006

2424

Context Switches

0

2000

4000

6000

8000

10000

12000

MySQL context switches

PostgreSQL context switches

Page 25: Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila avila@itautec.cin.ufpe.br Maio/2006

2525

I/O

0

1000

2000

3000

4000

5000

6000

7000

8000

9000

10000

1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 61 64

MySQL read KB/s

Postgres read KB/s

MySQL write KB/s

Postgres write KB/s

Page 26: Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila avila@itautec.cin.ufpe.br Maio/2006

2626

Benchmark AS3AP Trabalho acadêmicoTrabalho acadêmico

Carolyn Turbyfill / Cyril Orji / Dina BittonCarolyn Turbyfill / Cyril Orji / Dina Bitton Aberto e neutroAberto e neutro Evolução do famoso “Wisconsin Benchmark”Evolução do famoso “Wisconsin Benchmark”

NormalizaçãoNormalização Tamanho do BD >= memória físicaTamanho do BD >= memória física

MétricaMétrica Maximum database size (under 12 hours)Maximum database size (under 12 hours)

Boa cobertura dos recursos de um SGBDBoa cobertura dos recursos de um SGBD Métodos de acesso, tipos de dados, índicesMétodos de acesso, tipos de dados, índices Joins, projections, aggregatesJoins, projections, aggregates UpdatesUpdates Bulk load, output modeBulk load, output mode Testes multi-usuárioTestes multi-usuário

Page 27: Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila avila@itautec.cin.ufpe.br Maio/2006

2727

OSDB

Open Source Database BenchmarkOpen Source Database Benchmark Última versão: 0.17, Out/2004Última versão: 0.17, Out/2004 Código aberto, disponível no SourceForgeCódigo aberto, disponível no SourceForge Problemas de estabilidadeProblemas de estabilidade

Implementação do ASImplementação do AS33APAP Mais um Mais um Feature BenchmarkFeature Benchmark

Algumas funcionalidades não muito relevantesAlgumas funcionalidades não muito relevantes Apresentamos comparativo no fisl6.0Apresentamos comparativo no fisl6.0

Versões anteriores, maior detalhamentoVersões anteriores, maior detalhamento MétricaMétrica

Maximum database size / 12hMaximum database size / 12h

Page 28: Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila avila@itautec.cin.ufpe.br Maio/2006

2828

OSDB Nossos testesNossos testes

Tamanho do banco: 1GBTamanho do banco: 1GB 2.500.000 registros por tabela + índices2.500.000 registros por tabela + índices 4 tabelas: uniques, hundred, tenpct, updates4 tabelas: uniques, hundred, tenpct, updates Registros de 100 bytesRegistros de 100 bytes Não houve Não houve tuningtuning

Ideal: mínimo de 2GBIdeal: mínimo de 2GB Problemas para estabilizar o testeProblemas para estabilizar o teste

CredibilidadeCredibilidade O ASO AS33AP é bastante respeitado, mas OSDB é pouco AP é bastante respeitado, mas OSDB é pouco

utilizado e referenciadoutilizado e referenciado ““I wish you’d stop using it”I wish you’d stop using it”

Josh Berkus, PostgreSQL Lead DeveloperJosh Berkus, PostgreSQL Lead Developer

Page 29: Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila avila@itautec.cin.ufpe.br Maio/2006

2929

Resultados OSDB (1GB)

CategoriaCategoria PostgreSQLPostgreSQL MySQLMySQL EmpateEmpate

Criação e População de TabelasCriação e População de Tabelas 1616 66 11

Testes mono-usuárioTestes mono-usuário 77 3535 44

Testes multi-usuárioTestes multi-usuário 77 1717 00

93 operações realizadas pelo benchmark93 operações realizadas pelo benchmark 23 etapas de criação e população de tabelas23 etapas de criação e população de tabelas 46 testes mono-usuário46 testes mono-usuário 24 testes multi-usuário24 testes multi-usuário

A tabela mostra o número de vezes que cada SGBD teve melhor A tabela mostra o número de vezes que cada SGBD teve melhor desempenho em determinada categoriadesempenho em determinada categoria Critério de empate: Diferença inferior a 10%Critério de empate: Diferença inferior a 10%

Page 30: Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila avila@itautec.cin.ufpe.br Maio/2006

3030

OSDB – Anomalias bulk_modifybulk_modify

update updatesupdate updatesset key=key-100000set key=key-100000where key between 5000 and 5999where key between 5000 and 5999

Tempo de execuçãoTempo de execução 33 minutos33 minutos no PostgreSQL no PostgreSQL Menos de Menos de 1 segundo1 segundo no MySQL no MySQL

bulk_deletebulk_delete delete updates where key < 0delete updates where key < 0 Tempo de execuçãoTempo de execução

34 minutos34 minutos no PostgreSQL no PostgreSQL Menos de Menos de 1 segundo1 segundo no MySQL no MySQL

Bug, implementação ou Bug, implementação ou tuningtuning??

Page 31: Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila avila@itautec.cin.ufpe.br Maio/2006

3131

Benchmark PolePosition Implementação aberta em JavaImplementação aberta em Java

Neutra para SGBDNeutra para SGBD Desempenho da persistência de objetos no SGBDDesempenho da persistência de objetos no SGBD

Mede mapeamento de acesso relacional e objeto-Mede mapeamento de acesso relacional e objeto-relacionalrelacional

Leitura, escrita, manipulação de árvore de objetosLeitura, escrita, manipulação de árvore de objetos CircuitosCircuitos

Representação de um conjunto de testesRepresentação de um conjunto de testes LapLap

Teste individual em um circuitoTeste individual em um circuito Ex: Melbourne: delete, read, read_hot, writeEx: Melbourne: delete, read, read_hot, write Número de objetos configurávelNúmero de objetos configurável

Page 32: Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila avila@itautec.cin.ufpe.br Maio/2006

3232

Benchmark PolePosition BahrainBahrain

escreve, lê, atualiza e apaga objetos sem hierarquia escreve, lê, atualiza e apaga objetos sem hierarquia individualmenteindividualmente

BarcelonaBarcelona escreve, lê, consulta e apaga objetos de uma estrutura escreve, lê, consulta e apaga objetos de uma estrutura

de cinco níveisde cinco níveis ImolaImola

Lê objetos por chave primáriaLê objetos por chave primária MelbourneMelbourne

Escreve, lê e apaga objetos não-estruturados de um tipo Escreve, lê e apaga objetos não-estruturados de um tipo em modo em modo bulkbulk

SepangSepang Escreve, lê e depois apaga uma árvore de objetosEscreve, lê e depois apaga uma árvore de objetos

Page 33: Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila avila@itautec.cin.ufpe.br Maio/2006

3333

Benchmark PolePosition Fácil de rodar, bastante estável e reproduzívelFácil de rodar, bastante estável e reproduzível Oportunidades de Oportunidades de tuningtuning

No No carrocarro Tecnologia de acesso: db4o, Hibernate, JDBC, etc.Tecnologia de acesso: db4o, Hibernate, JDBC, etc.

No No pilotopiloto SGBD: MySQL, PostgreSQL, HSQLDB, DerbySGBD: MySQL, PostgreSQL, HSQLDB, Derby

Nossos testesNossos testes Carro único: JDBCCarro único: JDBC SGBD sem SGBD sem tuningtuning Número de objetosNúmero de objetos

Barhain e Barcelona: 1.000, 3.000, 5.000, 7.000, 9.000Barhain e Barcelona: 1.000, 3.000, 5.000, 7.000, 9.000 Melbourne: 25.000, 50.000, 75.000, 100.000Melbourne: 25.000, 50.000, 75.000, 100.000 Imola: 10.000, 30.000, 100.000, 300.000Imola: 10.000, 30.000, 100.000, 300.000 Sepang: 36, 55, 78, 105Sepang: 36, 55, 78, 105

Page 34: Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila avila@itautec.cin.ufpe.br Maio/2006

3434

Resultados PolePosition

CircuitoCircuito PostgreSQLPostgreSQL MySQLMySQL EmpateEmpate

BarhainBarhain 1616 1111 33

BarcelonaBarcelona 77 1212 11

ImolaImola 44 00 00

MelbourneMelbourne 44 1111 11

SepangSepang 00 1616 00

86 operações realizadas pelo benchmark86 operações realizadas pelo benchmark A tabela mostra o número de vezes que cada SGBD teve A tabela mostra o número de vezes que cada SGBD teve

melhor desempenho em determinado circuitomelhor desempenho em determinado circuito Critério de empate: Diferença inferior a 10%Critério de empate: Diferença inferior a 10%

Page 35: Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila avila@itautec.cin.ufpe.br Maio/2006

3535

PolePosition - Anomalias Barcelona writeBarcelona write

MySQL de 5x a 39x mais rápido que o PostgreSQLMySQL de 5x a 39x mais rápido que o PostgreSQL Barcelona deleteBarcelona delete

1.000 objetos 1.000 objetos PostgreSQL 5x mais rápido que MySQL PostgreSQL 5x mais rápido que MySQL 3.000, 5.000, 7.000, 9.000 objetos 3.000, 5.000, 7.000, 9.000 objetos MySQL 5x a 40x MySQL 5x a 40x

mais rápido que PostgreSQLmais rápido que PostgreSQL Melbourne read_hotMelbourne read_hot

PostgreSQL ganha no read, mas mostra anomalia de PostgreSQL ganha no read, mas mostra anomalia de desempenho no read_hotdesempenho no read_hot

““JDBC caching is a known issue with the current JDBC JDBC caching is a known issue with the current JDBC driver. JDBC lead Dave Cramer is currently working on a driver. JDBC lead Dave Cramer is currently working on a fix, sponsored by Sun Microsystems” – Josh Berkusfix, sponsored by Sun Microsystems” – Josh Berkus

Bugs, implementação ou Bugs, implementação ou tuningtuning??

Page 36: Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila avila@itautec.cin.ufpe.br Maio/2006

3636

Conclusões

TuningTuning aumenta significativamente o aumenta significativamente o desempenho.desempenho. MySQL no DBT-2: 75%MySQL no DBT-2: 75% PostgreSQL no DBT-2: 15%PostgreSQL no DBT-2: 15%

Para uma boa análise, um só Para uma boa análise, um só benchmarkbenchmark não bastanão basta

Participação fundamental de especialistasParticipação fundamental de especialistas PostgreSQL: Josh Berkus (DBT-2)PostgreSQL: Josh Berkus (DBT-2) MySQL: Peter MySQL: Peter Zaitsev (DBT-2)Zaitsev (DBT-2) DBT-2: Mark WongDBT-2: Mark Wong

Page 37: Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila avila@itautec.cin.ufpe.br Maio/2006

3737

Conclusões

No DBT-2, o No DBT-2, o desempenho foidesempenho foi equivalenteequivalente PostgreSQL mostrou ligeira vantagemPostgreSQL mostrou ligeira vantagem MySQL mostrou espaço para melhoria via tuningMySQL mostrou espaço para melhoria via tuning

““The difference between the procedure and plain The difference between the procedure and plain statements version is some 30% in our tests” – Peter statements version is some 30% in our tests” – Peter ZaitsevZaitsev

No OSDB, o No OSDB, o MySQL se mostrouMySQL se mostrou superiorsuperior na na maioria dos testesmaioria dos testes Verificadas anomalias no PostgreSQLVerificadas anomalias no PostgreSQL

No PolePosition, o No PolePosition, o MySQL se mostrou superiorMySQL se mostrou superior na na maioria dos testesmaioria dos testes Verificadas anomalias no PostgreSQL e MySQLVerificadas anomalias no PostgreSQL e MySQL

Page 38: Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila avila@itautec.cin.ufpe.br Maio/2006

3838

Trabalhos Futuros

Poleposition: circuito Poleposition: circuito InterlagosInterlagos Melhor implementação dos benchmarksMelhor implementação dos benchmarks Mais tuningMais tuning Utilizar um ambiente com 2 ou 3 camadasUtilizar um ambiente com 2 ou 3 camadas Utilizar servidores mais poderososUtilizar servidores mais poderosos Testar outros Testar outros filesystemsfilesystems Testar outros SGBDTestar outros SGBD

Usar distro da Itautec: Librix ServerUsar distro da Itautec: Librix Server

Page 39: Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila avila@itautec.cin.ufpe.br Maio/2006

3939

Agradecimentos especiais

Peter Zaitsev, Senior Support Engineer, Peter Zaitsev, Senior Support Engineer, Lead of Performance GroupLead of Performance Group

Josh Berkus, Lead DeveloperJosh Berkus, Lead Developer

Mark WongMark Wong

Isabel Cristina Lopes, Maria Antonieta Isabel Cristina Lopes, Maria Antonieta Lucianetti, Edmundo Dotta, Attila Nagy, Lucianetti, Edmundo Dotta, Attila Nagy, Ébion MirandaÉbion Miranda

Page 40: Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila avila@itautec.cin.ufpe.br Maio/2006

Análise comparativa de Análise comparativa de desempenho entre MySQL desempenho entre MySQL

e PostgreSQLe PostgreSQL

Fábio ÁvilaFábio Á[email protected]@itautec.cin.ufpe.br

http://itautec.cin.ufpe.br/http://itautec.cin.ufpe.br/

Maio/2006Maio/2006

Page 41: Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila avila@itautec.cin.ufpe.br Maio/2006

4141

Referências Bibliográficas Gray, J. Benchmark Handbook: For Database and Gray, J. Benchmark Handbook: For Database and

Transaction Processing Systems, Morgan Kaufmann Transaction Processing Systems, Morgan Kaufmann Publishers Inc. San Francisco, CA, USA, 1992.Publishers Inc. San Francisco, CA, USA, 1992.

OSDL Database Test 2 (DBT-2OSDL Database Test 2 (DBT-2TMTM))

http://www.osdl.org/lab_activities/kernel_testing/osdl_databhttp://www.osdl.org/lab_activities/kernel_testing/osdl_database_test_suite/osdl_dbt-2/ase_test_suite/osdl_dbt-2/

OSDL Database Test SuiteOSDL Database Test Suitehttp://www.osdl.org/http://www.osdl.org/

Sourceforce, 2006, "The Open Source Database Sourceforce, 2006, "The Open Source Database Benchmark" - http://osdb.sourceforge.net/Benchmark" - http://osdb.sourceforge.net/

PolePosition – The Open Source Database BenchmarkPolePosition – The Open Source Database Benchmarkhttp://www.polepos.org/http://www.polepos.org/

Page 42: Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila avila@itautec.cin.ufpe.br Maio/2006

4242

Referências Bibliográficas

Itautec S/AItautec S/Ahttp://www.itautec.comhttp://www.itautec.com

Fedora ProjectFedora Project

http://www.fedora.redhat.comhttp://www.fedora.redhat.com PostgreSQLPostgreSQL

http://www.postgresql.orghttp://www.postgresql.org Zaitsev, P., Asplund T. Advanced Innodb Zaitsev, P., Asplund T. Advanced Innodb

Optimization, MySQL Users Conference 2005.Optimization, MySQL Users Conference 2005.http://www.mysqluc.comhttp://www.mysqluc.com

Power PostgreSQLPower PostgreSQLhttp://www.powerpostgresql.com/http://www.powerpostgresql.com/