450 likes | 577 Views
Maio/2006. Análise comparativa de desempenho entre MySQL e PostgreSQL. Fábio Ávila avila@itautec.cin.ufpe.br http://itautec.cin.ufpe.br/. Agenda. Introdução Benchmarks utilizados Destaque ao DBT-2 Resultados Conclusões e trabalhos futuros Perguntas. Objetivo.
E N D
Maio/2006 Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila avila@itautec.cin.ufpe.br http://itautec.cin.ufpe.br/
Agenda • Introdução • Benchmarks utilizados • Destaque ao DBT-2 • Resultados • Conclusões e trabalhos futuros • Perguntas
Objetivo • Comparativo de desempenho entre MySQL e PostgreSQL no Linux • Uso dos benchmarks DBT-2, OSDB e PolePosition • Estimular melhoria do desempenho de SGBD de código aberto • Não promover vencedores e perdedores
Quem Somos • Convênio P&D entre Itautec e CIn/UFPE • Laboratório de Análise de Performance • Fundado em Janeiro/2003 • Objetivos • Análise de desempenho de servidores de missão crítica • Certificação TPC-C em servidores da Itautec • HCT Librix • Resultados • 8 publicações TPC-C • Apresentações em eventos • Releases de white papers e HCT http://itautec.cin.ufpe.br
Equipe TPC Carlos Eduardo Pires Rilson Nascimento Fábio Ávila Francisco Carvalho Marcelo Rodrigues
Benchmarks • Definição • Padrão para medida ou avaliação • Gera métricas de desempenho • Permite comparações • Destaca oportunidades de melhoria • Performance / Feature • Características desejáveis • Especificação detalhada e aberta • Produzido por órgãos neutros • Escalonável (scalable) • Portátil • Reproduzível
Breve Histórico de Benchmarks • Wisconsin Benchmark - David DeWitt (1983) • Provocou criação da “cláusula DeWitt” • Paper Anon et Al - Jim Gray (1985) • AS3AP (1987) - Carolyn Turbyfill • Implementação: OSDB (2001) • TPC (1988) • SPEC (1988) • BAPCo (1991) • TPC-C (1993) • SPC (1997) • TPC-App (2004)
Transaction Processing Performance Council (TPC) • Fundada em 1988 • Realidade parecida com a Fórmula 1 • Grandes investimentos na tentativa de superar os concorrentes • 18 full members • HP, IBM, Oracle, Microsoft, Unisys, Sun, Intel, AMD, Dell, Fujitsu, NEC, Teradata, Novell, Sybase, Bull, Netezza • 4 associate members • OSDL, CIn/UFPE, Ideas, ITOM
Open Source Development Labs (OSDL) • Organização sem fins lucrativos, fundada em 2000 • Missão • Incentivar a utilização do Linux • Reconhecida mundialmente por seus projetos • IPV6-DHCP, kernel testing, DBT-*, etc. • Recebe investimentos de grandes empresas como Fujitsu, HP, IBM e Intel • Associate member da TPC
Benchmarks Utilizados • DBT-2 • Implementação da OSDL do TPC-C • OSDB • Implementação OpenSource do AS3AP • PolePosition • Instanciando objetos em Java
Hardware Utilizado • Servidor Itautec • 2 Processadores Pentium III Xeon 1.0 GHz • 2GB RAM, Cache L2 256KB • 1 Disco Interno SCSI Seagate 10Krpm • 1 Storage com 14 Discos SCSI Seagate 15Krpm de 36GB RAID 0 • 1 Placa Controladora Mylex Extreme RAID 2000 4C • 1 Switch 1Gbps
Software Utilizado • Linux Fedora Core 4, Kernel 2.6.11-1.1369_FC4smp, filesystem ext3 • PostgreSQL 8.1.3 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 4.0.0 20050519 (Red Hat 4.0.0-8) • MySQL 5.0.12-beta-standard-log • dbt2-0.37, Novembro de 2005
Ambiente de Teste Sistema sob Avaliação Switch DBT-2 e OSDB: Console VNC PolePosition: Gerador de Carga Eclipse Servidor Itautec Storage Linux + DBT-2 + SGBD Banco de Dados
Database Test 2 (DBT-2) • Implementação incompleta do TPC-C • Não comparável aos resultados oficiais TPC-C • Código Aberto • Simula um ambiente OLTP • Operações refletem as 5 atividades principais de uma empresa atacadista • Explora consultas, transações curtas e concorrência • Acesso não-uniforme aos dados • Ambiente multi-usuário
Modelo Lógico do Banco de Dados Warehouse W 10 District W * 10 History W * 30k+ 100k 3k 1+ Stock W * 100k Customer W * 30k New-Order W * 9k+ 1+ 0-1 W 3+ Item 100k Order-Line W * 300k+ Orders W * 30k+ 5-15
Exemplo: PostgreSQL, 115w Warehouse (115) 24 KB District (1.150) 184 KB History (3.450.000) 290 MB Stock (11.500.000) 3.8 GB Customer (3.450.000) 2.2 GB New-Order (1.035.000) 40 MB Item (100.000) 10.8 MB Order-Line (32.767.533) 3 GB Orders (3.450.000) 221 MB Total (incluindo índices): 11.7 GB
Transações do DBT-2 • Escrita e leitura • New-Order • Entrada de um novo pedido • Payment • Registra um pagamento de cliente • Delivery • Processa a entrega de um lote de 10 pedidos • Consulta • Order-Status • Retorna o status do último pedido de um cliente • Stock-Level • Retorna itens que têm nível de estoque abaixo de um limite específico
Percentuais de Execução • Payment 43% • Order-Status 4% • Delivery 4% • Stock Level 4% • New-Order ≡ 45% (restante)
Métricas • NOTPM • Número de Transações New-Order por minuto • Regra de escalabilidade do TPC-C • 1 warehouse 10 usuários • Exemplo para 1.000 usuários: • BD: 100 warehouses • Desempenho mínimo: 900 NOTPM • Desempenho máximo: 1286 NOTPM
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)
PostgreSQL 8.1.3 (postgresql.conf) fsync = off [on] shared_buffers = 20.000 (156 MB) [1.000] checkpoint_segments = 256 [6] checkpoint_timeout = 1800 s [300] stats_* = off [on] work_mem = 1024K [512] MySQL 5.0.12 Beta (my-huge.cnf) innodb_buffer_pool_size = 1228 MB[384] innodb_log_file_size = 307 MB[100] innodb_flush_log_at_trx_commit = 0[1] thread_concurrency = 4[8] Tuning – DBT-2
Benchmark AS3AP • Trabalho acadêmico • Carolyn Turbyfill / Cyril Orji / Dina Bitton • Aberto e neutro • Evolução do famoso “Wisconsin Benchmark” • Normalização • Tamanho do BD >= memória física • Métrica • Maximum database size (under 12 hours) • Boa cobertura dos recursos de um SGBD • Métodos de acesso, tipos de dados, índices • Joins, projections, aggregates • Updates • Bulk load, output mode • Testes multi-usuário
OSDB • Open Source Database Benchmark • Última versão: 0.17, Out/2004 • Código aberto, disponível no SourceForge • Problemas de estabilidade • Implementação do AS3AP • Mais um Feature Benchmark • Algumas funcionalidades não muito relevantes • Apresentamos comparativo no fisl6.0 • Versões anteriores, maior detalhamento • Métrica • Maximum database size / 12h
OSDB • Nossos testes • Tamanho do banco: 1GB • 2.500.000 registros por tabela + índices • 4 tabelas: uniques, hundred, tenpct, updates • Registros de 100 bytes • Não houve tuning • Ideal: mínimo de 2GB • Problemas para estabilizar o teste • Credibilidade • O AS3AP é bastante respeitado, mas OSDB é pouco utilizado e referenciado • “I wish you’d stop using it” • Josh Berkus, PostgreSQL Lead Developer
Resultados OSDB (1GB) • 93 operações realizadas pelo benchmark • 23 etapas de criação e população de tabelas • 46 testes mono-usuário • 24 testes multi-usuário • 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%
OSDB – Anomalias • bulk_modify • update updates set key=key-100000 where key between 5000 and 5999 • Tempo de execução • 33 minutos no PostgreSQL • Menos de 1 segundo no MySQL • bulk_delete • delete updates where key < 0 • Tempo de execução • 34 minutos no PostgreSQL • Menos de 1 segundo no MySQL • Bug, implementação ou tuning?
Benchmark PolePosition • Implementação aberta em Java • Neutra para SGBD • Desempenho da persistência de objetos no SGBD • Mede mapeamento de acesso relacional e objeto-relacional • Leitura, escrita, manipulação de árvore de objetos • Circuitos • Representação de um conjunto de testes • Lap • Teste individual em um circuito • Ex: Melbourne: delete, read, read_hot, write • Número de objetos configurável
Benchmark PolePosition • Bahrain • escreve, lê, atualiza e apaga objetos sem hierarquia individualmente • Barcelona • escreve, lê, consulta e apaga objetos de uma estrutura de cinco níveis • Imola • Lê objetos por chave primária • Melbourne • Escreve, lê e apaga objetos não-estruturados de um tipo em modo bulk • Sepang • Escreve, lê e depois apaga uma árvore de objetos
Benchmark PolePosition • Fácil de rodar, bastante estável e reproduzível • Oportunidades de tuning • No carro • Tecnologia de acesso: db4o, Hibernate, JDBC, etc. • No piloto • SGBD: MySQL, PostgreSQL, HSQLDB, Derby • Nossos testes • Carro único: JDBC • SGBD sem tuning • Número de objetos • Barhain e Barcelona: 1.000, 3.000, 5.000, 7.000, 9.000 • Melbourne: 25.000, 50.000, 75.000, 100.000 • Imola: 10.000, 30.000, 100.000, 300.000 • Sepang: 36, 55, 78, 105
Resultados PolePosition • 86 operações realizadas pelo benchmark • 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%
PolePosition - Anomalias • Barcelona write • MySQL de 5x a 39x mais rápido que o PostgreSQL • Barcelona delete • 1.000 objetos PostgreSQL 5x mais rápido que MySQL • 3.000, 5.000, 7.000, 9.000 objetos MySQL 5x a 40x mais rápido que PostgreSQL • Melbourne 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 • Bugs, implementação ou tuning?
Conclusões • Tuning aumenta significativamente o desempenho. • MySQL no DBT-2: 75% • PostgreSQL no DBT-2: 15% • Para uma boa análise, um só benchmark não basta • Participação fundamental de especialistas • PostgreSQL: Josh Berkus (DBT-2) • MySQL: Peter Zaitsev (DBT-2) • DBT-2: Mark Wong
Conclusões • No DBT-2, o desempenho foiequivalente • PostgreSQL mostrou ligeira vantagem • 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 • No OSDB, o MySQL se mostrousuperior na maioria dos testes • Verificadas anomalias no PostgreSQL • No PolePosition, o MySQL se mostrou superior na maioria dos testes • Verificadas anomalias no PostgreSQL e MySQL
Trabalhos Futuros • Poleposition: circuito Interlagos • Melhor implementação dos benchmarks • Mais tuning • Utilizar um ambiente com 2 ou 3 camadas • Utilizar servidores mais poderosos • Testar outros filesystems • Testar outros SGBD • Usar distro da Itautec: Librix Server
Agradecimentos especiais • Peter Zaitsev, Senior Support Engineer, Lead of Performance Group • Josh Berkus, Lead Developer • Mark Wong • Isabel Cristina Lopes, Maria Antonieta Lucianetti, Edmundo Dotta, Attila Nagy, Ébion Miranda
Maio/2006 Análise comparativa de desempenho entre MySQL e PostgreSQL Fábio Ávila avila@itautec.cin.ufpe.br http://itautec.cin.ufpe.br/
Referências Bibliográficas • Gray, J. Benchmark Handbook: For Database and Transaction Processing Systems, Morgan Kaufmann Publishers Inc. San Francisco, CA, USA, 1992. • OSDL Database Test 2 (DBT-2TM) http://www.osdl.org/lab_activities/kernel_testing/osdl_database_test_suite/osdl_dbt-2/ • OSDL Database Test Suite http://www.osdl.org/ • Sourceforce, 2006, "The Open Source Database Benchmark" - http://osdb.sourceforge.net/ • PolePosition – The Open Source Database Benchmarkhttp://www.polepos.org/
Referências Bibliográficas • Itautec S/A http://www.itautec.com • Fedora Project http://www.fedora.redhat.com • PostgreSQL http://www.postgresql.org • Zaitsev, P., Asplund T. Advanced Innodb Optimization, MySQL Users Conference 2005. http://www.mysqluc.com • Power PostgreSQL http://www.powerpostgresql.com/