A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila Maio/2006.

Apresentações semelhantes


Apresentação em tema: "Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila Maio/2006."— Transcrição da apresentação:

1 Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila Maio/2006

2 2 Agenda Introdução Introdução Benchmarks utilizados Benchmarks utilizados Destaque ao DBT-2 Destaque ao DBT-2 Resultados Resultados Conclusões e trabalhos futuros Conclusões e trabalhos futuros Perguntas Perguntas

3 3 Objetivo Comparativo de desempenho entre MySQL e PostgreSQL no Linux Comparativo de desempenho entre MySQL e PostgreSQL no Linux Uso dos benchmarks DBT-2, OSDB e PolePosition Uso dos benchmarks DBT-2, OSDB e PolePosition Estimular melhoria do desempenho de SGBD de código aberto Estimular melhoria do desempenho de SGBD de código aberto Não promover vencedores e perdedores Não promover vencedores e perdedores

4 4 Quem Somos Convênio P&D entre Itautec e CIn/UFPE Convênio P&D entre Itautec e CIn/UFPE Laboratório de Análise de Performance Laboratório de Análise de Performance Fundado em Janeiro/2003 Fundado em Janeiro/2003 Objetivos Objetivos Análise de desempenho de servidores de missão crítica Análise de desempenho de servidores de missão crítica Certificação TPC-C em servidores da Itautec Certificação TPC-C em servidores da Itautec HCT Librix HCT Librix Resultados Resultados 8 publicações TPC-C 8 publicações TPC-C Apresentações em eventos Apresentações em eventos Releases de white papers e HCT Releases de white papers e HCT

5 5 Equipe TPC Rilson Nascimento Francisco Carvalho Fábio Ávila Carlos Eduardo Pires Marcelo Rodrigues

6 6 Benchmarks Definição Definição Padrão para medida ou avaliação Padrão para medida ou avaliação Gera métricas de desempenho Gera métricas de desempenho Permite comparações Permite comparações Destaca oportunidades de melhoria Destaca oportunidades de melhoria Performance / Feature Performance / Feature Características desejáveis Características desejáveis Especificação detalhada e aberta Especificação detalhada e aberta Produzido por órgãos neutros Produzido por órgãos neutros Escalonável (scalable) Escalonável (scalable) Portátil Portátil Reproduzível Reproduzível

7 7 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) AS 3 AP (1987) - Carolyn Turbyfill AS 3 AP (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)

8 8 Transaction Processing Performance Council (TPC) Fundada em 1988 Fundada em 1988 Realidade parecida com a Fórmula 1 Realidade parecida com a Fórmula 1 Grandes investimentos na tentativa de superar os concorrentes Grandes investimentos na tentativa de superar os concorrentes 18 full members 18 full members HP, IBM, Oracle, Microsoft, Unisys, Sun, Intel, AMD, Dell, Fujitsu, NEC, Teradata, Novell, Sybase, Bull, Netezza HP, IBM, Oracle, Microsoft, Unisys, Sun, Intel, AMD, Dell, Fujitsu, NEC, Teradata, Novell, Sybase, Bull, Netezza 4 associate members 4 associate members OSDL, CIn/UFPE, Ideas, ITOM OSDL, CIn/UFPE, Ideas, ITOM

9 9 Open Source Development Labs (OSDL) Organização sem fins lucrativos, fundada em 2000 Organização sem fins lucrativos, fundada em 2000 Missão Missão Incentivar a utilização do Linux Incentivar a utilização do Linux Reconhecida mundialmente por seus projetos Reconhecida mundialmente por seus projetos IPV6-DHCP, kernel testing, DBT-*, etc. IPV6-DHCP, kernel testing, DBT-*, etc. Recebe investimentos de grandes empresas como Fujitsu, HP, IBM e Intel Recebe investimentos de grandes empresas como Fujitsu, HP, IBM e Intel Associate member da TPC Associate member da TPC

10 10 Benchmarks Utilizados DBT-2 DBT-2 Implementação da OSDL do TPC-C Implementação da OSDL do TPC-C OSDB OSDB Implementação OpenSource do AS 3 AP Implementação OpenSource do AS 3 AP PolePosition PolePosition Instanciando objetos em Java Instanciando objetos em Java

11 11 Hardware Utilizado Servidor Itautec Servidor Itautec 2 Processadores Pentium III Xeon 1.0 GHz 2 Processadores Pentium III Xeon 1.0 GHz 2GB RAM, Cache L2 256KB 2GB RAM, Cache L2 256KB 1 Disco Interno SCSI Seagate 10Krpm 1 Disco Interno SCSI Seagate 10Krpm 1 Storage com 14 Discos SCSI Seagate 15Krpm de 36GB RAID 0 1 Storage com 14 Discos SCSI Seagate 15Krpm de 36GB RAID 0 1 Placa Controladora Mylex Extreme RAID C 1 Placa Controladora Mylex Extreme RAID C 1 Switch 1Gbps 1 Switch 1Gbps

12 12 Software Utilizado Linux Fedora Core 4, Kernel _FC4smp, filesystem ext3 Linux Fedora Core 4, Kernel _FC4smp, filesystem ext3 PostgreSQL on i686-pc-linux- gnu, compiled by GCC gcc (GCC) (Red Hat ) PostgreSQL on i686-pc-linux- gnu, compiled by GCC gcc (GCC) (Red Hat ) MySQL beta-standard-log MySQL beta-standard-log dbt2-0.37, Novembro de 2005 dbt2-0.37, Novembro de 2005

13 13 Ambiente de Teste DBT-2 e OSDB: Console VNC PolePosition: Gerador de Carga Eclipse StorageServidor Itautec Sistema sob Avaliação Switch Linux + DBT-2 + SGBDBanco de Dados

14 14 Database Test 2 (DBT-2) Implementação incompleta do TPC-C Implementação incompleta do TPC-C Não comparável aos resultados oficiais TPC-C Não comparável aos resultados oficiais TPC-C Código Aberto Código Aberto Simula um ambiente OLTP Simula um ambiente OLTP Operações refletem as 5 atividades principais de uma empresa atacadista Operações refletem as 5 atividades principais de uma empresa atacadista Explora consultas, transações curtas e concorrência Explora consultas, transações curtas e concorrência Acesso não-uniforme aos dados Acesso não-uniforme aos dados Ambiente multi-usuário Ambiente multi-usuário

15 15 Modelo Lógico do Banco de Dados Warehouse WDistrict W * 10 Stock W * 100k Item 100k History W * 30k+ New-Order W * 9k+ Order-Line W * 300k+ Customer W * 30k Orders W * 30k+ 100k 10 3k W 1+

16 16 Exemplo: PostgreSQL, 115w Warehouse (115) 24 KBDistrict (1.150) 184 KB Stock ( ) 3.8 GB Item ( ) 10.8 MB History ( ) 290 MB New-Order ( ) 40 MB Order-Line ( ) 3 GB Customer ( ) 2.2 GB Orders ( ) 221 MB Total (incluindo índices): 11.7 GB

17 17 Transações do DBT-2 Escrita e leitura Escrita e leitura New-Order New-Order Entrada de um novo pedido Entrada de um novo pedido Payment Payment Registra um pagamento de cliente Registra um pagamento de cliente Delivery Delivery Processa a entrega de um lote de 10 pedidos Processa a entrega de um lote de 10 pedidos Consulta Consulta Order-Status Order-Status Retorna o status do último pedido de um cliente Retorna o status do último pedido de um cliente Stock-Level Stock-Level Retorna itens que têm nível de estoque abaixo de um limite específico Retorna itens que têm nível de estoque abaixo de um limite específico

18 18 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 45% (restante) New-Order 45% (restante)

19 19 Métricas NOTPM NOTPM Número de Transações New-Order por minuto Número de Transações New-Order por minuto Regra de escalabilidade do TPC-C Regra de escalabilidade do TPC-C 1 warehouse 10 usuários 1 warehouse 10 usuários Exemplo para usuários: Exemplo para usuários: BD: 100 warehouses BD: 100 warehouses Desempenho mínimo: 900 NOTPM Desempenho mínimo: 900 NOTPM Desempenho máximo: 1286 NOTPM Desempenho máximo: 1286 NOTPM

20 20 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)

21 21 Tuning – DBT-2 PostgreSQL (postgresql.conf) fsync = off [on] fsync = off [on] shared_buffers = (156 MB) [1.000] shared_buffers = (156 MB) [1.000] checkpoint_segments = 256 [6] checkpoint_segments = 256 [6] checkpoint_timeout = 1800 s [300] checkpoint_timeout = 1800 s [300] stats_* = off [on] stats_* = off [on] work_mem = 1024K [512] work_mem = 1024K [512] MySQL Beta (my-huge.cnf) innodb_buffer_pool_size = 1228 MB [384] innodb_buffer_pool_size = 1228 MB [384] innodb_log_file_size = 307 MB [100] innodb_log_file_size = 307 MB [100] innodb_flush_log_at_trx_commit = 0 [1] innodb_flush_log_at_trx_commit = 0 [1] thread_concurrency = 4 [8] thread_concurrency = 4 [8]

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

23 23 CPU

24 24 Context Switches

25 25 I/O

26 26 Benchmark AS 3 AP Trabalho acadêmico Trabalho acadêmico Carolyn Turbyfill / Cyril Orji / Dina Bitton Carolyn Turbyfill / Cyril Orji / Dina Bitton Aberto e neutro Aberto e neutro Evolução do famoso Wisconsin Benchmark Evolução do famoso Wisconsin Benchmark Normalização Normalização Tamanho do BD >= memória física Tamanho do BD >= memória física Métrica Métrica Maximum database size (under 12 hours) Maximum database size (under 12 hours) Boa cobertura dos recursos de um SGBD Boa cobertura dos recursos de um SGBD Métodos de acesso, tipos de dados, índices Métodos de acesso, tipos de dados, índices Joins, projections, aggregates Joins, projections, aggregates Updates Updates Bulk load, output mode Bulk load, output mode Testes multi-usuário Testes multi-usuário

27 27 OSDB Open Source Database Benchmark Open Source Database Benchmark Última versão: 0.17, Out/2004 Última versão: 0.17, Out/2004 Código aberto, disponível no SourceForge Código aberto, disponível no SourceForge Problemas de estabilidade Problemas de estabilidade Implementação do AS 3 AP Implementação do AS 3 AP Mais um Feature Benchmark Mais um Feature Benchmark Algumas funcionalidades não muito relevantes Algumas funcionalidades não muito relevantes Apresentamos comparativo no fisl6.0 Apresentamos comparativo no fisl6.0 Versões anteriores, maior detalhamento Versões anteriores, maior detalhamento Métrica Métrica Maximum database size / 12h Maximum database size / 12h

28 28 OSDB Nossos testes Nossos testes Tamanho do banco: 1GB Tamanho do banco: 1GB registros por tabela + índices registros por tabela + índices 4 tabelas: uniques, hundred, tenpct, updates 4 tabelas: uniques, hundred, tenpct, updates Registros de 100 bytes Registros de 100 bytes Não houve tuning Não houve tuning Ideal: mínimo de 2GB Ideal: mínimo de 2GB Problemas para estabilizar o teste Problemas para estabilizar o teste Credibilidade Credibilidade O AS 3 AP é bastante respeitado, mas OSDB é pouco utilizado e referenciado O AS 3 AP é bastante respeitado, mas OSDB é pouco utilizado e referenciado I wish youd stop using it I wish youd stop using it Josh Berkus, PostgreSQL Lead Developer Josh Berkus, PostgreSQL Lead Developer

29 29 Resultados OSDB (1GB) CategoriaPostgreSQLMySQLEmpate Criação e População de Tabelas 1661 Testes mono-usuário 7354 Testes multi-usuário operações realizadas pelo benchmark 93 operações realizadas pelo benchmark 23 etapas de criação e população de tabelas 23 etapas de criação e população de tabelas 46 testes mono-usuário 46 testes mono-usuário 24 testes multi-usuário 24 testes multi-usuário A tabela mostra o número de vezes que cada SGBD teve melhor desempenho em determinada categoria A tabela mostra o número de vezes que cada SGBD teve melhor desempenho em determinada categoria Critério de empate: Diferença inferior a 10% Critério de empate: Diferença inferior a 10%

30 30 OSDB – Anomalias bulk_modify bulk_modify update updates set key=key where key between 5000 and 5999 update updates set key=key where key between 5000 and 5999 Tempo de execução Tempo de execução 33 minutos no PostgreSQL 33 minutos no PostgreSQL Menos de 1 segundo no MySQL Menos de 1 segundo no MySQL bulk_delete bulk_delete delete updates where key < 0 delete updates where key < 0 Tempo de execução Tempo de execução 34 minutos no PostgreSQL 34 minutos no PostgreSQL Menos de 1 segundo no MySQL Menos de 1 segundo no MySQL Bug, implementação ou tuning? Bug, implementação ou tuning?

31 31 Benchmark PolePosition Implementação aberta em Java Implementação aberta em Java Neutra para SGBD Neutra para SGBD Desempenho da persistência de objetos no SGBD Desempenho da persistência de objetos no SGBD Mede mapeamento de acesso relacional e objeto- relacional Mede mapeamento de acesso relacional e objeto- relacional Leitura, escrita, manipulação de árvore de objetos Leitura, escrita, manipulação de árvore de objetos Circuitos Circuitos Representação de um conjunto de testes Representação de um conjunto de testes Lap Lap Teste individual em um circuito Teste individual em um circuito Ex: Melbourne: delete, read, read_hot, write Ex: Melbourne: delete, read, read_hot, write Número de objetos configurável Número de objetos configurável

32 32 Benchmark PolePosition Bahrain Bahrain escreve, lê, atualiza e apaga objetos sem hierarquia individualmente escreve, lê, atualiza e apaga objetos sem hierarquia individualmente Barcelona Barcelona escreve, lê, consulta e apaga objetos de uma estrutura de cinco níveis escreve, lê, consulta e apaga objetos de uma estrutura de cinco níveis Imola Imola Lê objetos por chave primária Lê objetos por chave primária Melbourne Melbourne Escreve, lê e apaga objetos não-estruturados de um tipo em modo bulk Escreve, lê e apaga objetos não-estruturados de um tipo em modo bulk Sepang Sepang Escreve, lê e depois apaga uma árvore de objetos Escreve, lê e depois apaga uma árvore de objetos

33 33 Benchmark PolePosition Fácil de rodar, bastante estável e reproduzível Fácil de rodar, bastante estável e reproduzível Oportunidades de tuning Oportunidades de tuning No carro No carro Tecnologia de acesso: db4o, Hibernate, JDBC, etc. Tecnologia de acesso: db4o, Hibernate, JDBC, etc. No piloto No piloto SGBD: MySQL, PostgreSQL, HSQLDB, Derby SGBD: MySQL, PostgreSQL, HSQLDB, Derby Nossos testes Nossos testes Carro único: JDBC Carro único: JDBC SGBD sem tuning SGBD sem tuning Número de objetos Número de objetos Barhain e Barcelona: 1.000, 3.000, 5.000, 7.000, Barhain e Barcelona: 1.000, 3.000, 5.000, 7.000, Melbourne: , , , Melbourne: , , , Imola: , , , Imola: , , , Sepang: 36, 55, 78, 105 Sepang: 36, 55, 78, 105

34 34 Resultados PolePosition CircuitoPostgreSQLMySQLEmpate Barhain16113 Barcelona7121 Imola400 Melbourne4111 Sepang operações realizadas pelo benchmark 86 operações realizadas pelo benchmark A tabela mostra o número de vezes que cada SGBD teve melhor desempenho em determinado circuito A tabela mostra o número de vezes que cada SGBD teve melhor desempenho em determinado circuito Critério de empate: Diferença inferior a 10% Critério de empate: Diferença inferior a 10%

35 35 PolePosition - Anomalias Barcelona write Barcelona write MySQL de 5x a 39x mais rápido que o PostgreSQL MySQL de 5x a 39x mais rápido que o PostgreSQL Barcelona delete Barcelona delete objetos PostgreSQL 5x mais rápido que MySQL objetos PostgreSQL 5x mais rápido que MySQL 3.000, 5.000, 7.000, objetos MySQL 5x a 40x mais rápido que PostgreSQL 3.000, 5.000, 7.000, objetos MySQL 5x a 40x mais rápido que PostgreSQL Melbourne read_hot Melbourne read_hot PostgreSQL ganha no read, mas mostra anomalia de desempenho no read_hot PostgreSQL ganha no read, mas mostra anomalia de desempenho no read_hot JDBC caching is a known issue with the current JDBC driver. JDBC lead Dave Cramer is currently working on a fix, sponsored by Sun Microsystems – Josh Berkus JDBC caching is a known issue with the current JDBC driver. JDBC lead Dave Cramer is currently working on a fix, sponsored by Sun Microsystems – Josh Berkus Bugs, implementação ou tuning? Bugs, implementação ou tuning?

36 36 Conclusões Tuning aumenta significativamente o desempenho. Tuning aumenta significativamente o 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ó benchmark não basta Para uma boa análise, um só benchmark não basta Participação fundamental de especialistas Participação fundamental de especialistas PostgreSQL: Josh Berkus (DBT-2) PostgreSQL: Josh Berkus (DBT-2) MySQL: Peter Zaitsev (DBT-2) MySQL: Peter Zaitsev (DBT-2) DBT-2: Mark Wong DBT-2: Mark Wong

37 37 Conclusões No DBT-2, o desempenho foi equivalente No DBT-2, o desempenho foi equivalente PostgreSQL mostrou ligeira vantagem PostgreSQL mostrou ligeira vantagem MySQL mostrou espaço para melhoria via tuning MySQL mostrou espaço para melhoria via tuning The difference between the procedure and plain statements version is some 30% in our tests – Peter Zaitsev The difference between the procedure and plain statements version is some 30% in our tests – Peter Zaitsev No OSDB, o MySQL se mostrou superior na maioria dos testes No OSDB, o MySQL se mostrou superior na maioria dos testes Verificadas anomalias no PostgreSQL Verificadas anomalias no PostgreSQL No PolePosition, o MySQL se mostrou superior na maioria dos testes No PolePosition, o MySQL se mostrou superior na maioria dos testes Verificadas anomalias no PostgreSQL e MySQL Verificadas anomalias no PostgreSQL e MySQL

38 38 Trabalhos Futuros Poleposition: circuito Interlagos Poleposition: circuito Interlagos Melhor implementação dos benchmarks Melhor implementação dos benchmarks Mais tuning Mais tuning Utilizar um ambiente com 2 ou 3 camadas Utilizar um ambiente com 2 ou 3 camadas Utilizar servidores mais poderosos Utilizar servidores mais poderosos Testar outros filesystems Testar outros filesystems Testar outros SGBD Testar outros SGBD Usar distro da Itautec: Librix Server Usar distro da Itautec: Librix Server

39 39 Agradecimentos especiais Peter Zaitsev, Senior Support Engineer, Lead of Performance Group Peter Zaitsev, Senior Support Engineer, Lead of Performance Group Josh Berkus, Lead Developer Josh Berkus, Lead Developer Mark Wong Mark Wong Isabel Cristina Lopes, Maria Antonieta Lucianetti, Edmundo Dotta, Attila Nagy, Ébion Miranda Isabel Cristina Lopes, Maria Antonieta Lucianetti, Edmundo Dotta, Attila Nagy, Ébion Miranda

40 Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila Maio/2006

41 41 Referências Bibliográficas Gray, J. Benchmark Handbook: For Database and Transaction Processing Systems, Morgan Kaufmann Publishers Inc. San Francisco, CA, USA, Gray, J. Benchmark Handbook: For Database and Transaction Processing Systems, Morgan Kaufmann Publishers Inc. San Francisco, CA, USA, OSDL Database Test 2 (DBT-2 TM ) OSDL Database Test 2 (DBT-2 TM ) base_test_suite/osdl_dbt-2/ base_test_suite/osdl_dbt-2/ OSDL Database Test Suite OSDL Database Test Suite Sourceforce, 2006, "The Open Source Database Benchmark" - Sourceforce, 2006, "The Open Source Database Benchmark" - PolePosition – The Open Source Database Benchmark PolePosition – The Open Source Database Benchmark

42 42 Referências Bibliográficas Itautec S/A Itautec S/A Fedora Project Fedora Project PostgreSQL PostgreSQL Zaitsev, P., Asplund T. Advanced Innodb Optimization, MySQL Users Conference Zaitsev, P., Asplund T. Advanced Innodb Optimization, MySQL Users Conference Power PostgreSQL Power PostgreSQL


Carregar ppt "Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila Maio/2006."

Apresentações semelhantes


Anúncios Google