Vous êtes sur la page 1sur 5

Comparando o Desempenho dos Bancos de Dados MySQL e SQLite

Marcos Rogrio Rocha Ramos Fundao Universidade Federal do Vale do So Francisco (UNIVASF) Juazeiro Ba Brazil
marcosrogerio002@gmail.com

Resumo. Este artigo analisa o desempenho dos bancos de dados MySQL e SQLite. Para tanto, foram executados 500000 operaes (insert, select e update) divididas em 25 blocos de 20000 operaes cada, a fim de medir a durao das operaes acumuladas (DOA) e a durao das operaes unitrias (DOU), avaliando e comparando ao final o desempenho dos respectivos bancos de dados. Palavras-chave: SGBD, velocidade, armazenamento de informaes, Open Source. Abstract. This work analyzes the performance of the databases MySQL and SQLite. For this purpose, 500,000 operations were performed (insert, select and update) divided into 25 blocks of 20 000 operations each, in order to measure the accumulated duration of operations (DOA) and the duration of the operations unit (DOU), evaluating and comparing the end of the performance of their databases. Keywords: SGBD, speed, information storage, Open Source.

1. Introduo
Analisar o desempenho de um determinado sistema de primordial importncia em um mundo tecnolgico. A todo o momento novas tecnologias so desenvolvidas, trazendo novidades de todos os tipos e consequentemente novos desafios. A velocidade com que as informaes so armazenadas e obtidas um dos principais fatores quantitativos e qualitativos de um sistema. Por esta razo, de grande interesse analisar o desempenho do principal componente de armazenamento de informaes em um sistema, o banco de dados. Um banco de dados um conjunto de dados estruturados. Para adicionar, acessar e processar dados armazenados em um banco de dados necessrio um sistema de gerenciamento de bancos de dados (SGBD) que visa facilitar os processos de definio, construo, manipulao e compartilhamento de bancos de dados entre vrios usurios e aplicaes. Vrios tipos de bancos de dados esto disponveis comercialmente, uns com licena Freeware1, outros Shareware2.

Um dos bancos mais utilizados em projetos em todo o mundo o MySQL, isso devido ao seu excelente desempenho e estabilidade. O MySQL um sistema de gerenciamento de bancos de dados relacional Open Source que utiliza a linguagem SQL (Structured Query Language) para acessar o banco de dados. Seu servidor foi desenvolvido originalmente para lidar com bancos de dados muito grandes de maneira muito mais rpida que as solues existentes. Outra ferramenta de banco de dados que vem se tornando cada vez mais popular o SQLite. O SQLite uma biblioteca desenvolvida em linguagem C que implementa um banco de dados SQL embutido. A biblioteca SQLite l e escreve diretamente no arquivo do banco de dados no disco. O SQLite recomendado para aplicaes simples, como por exemplo, aplicaes desktop e sistemas embarcados. Desse modo, este artigo analisa ambos os bancos de dados de forma a comparar o desempenho quando submetidos a uma carga de requisies, sendo ele dividido da seguinte forma: na seo 2 mostrado quais materiais e mtodos foram utilizados; na seo 3 foram descritos os resultados e as discusses; e na seo 4 so apresentadas as concluses obtidas ao analisar o desempenho dessas duas ferramentas de banco de dados.

2. Materiais e Mtodos
Para analisar o desempenho dos bancos de dados foi utilizado o MySQL da verso 5.5.12 e o SQLite da verso 3.7.7.1. Foi criada, em ambos os bancos, uma tabela com campos do tipo INTEGER (chave primria), CHAR(30), VARCHAR(30), FLOAT(4,2), DATE, TIME, INTEGER; e desenvolvido dois programas escritos em Java (um para o MySQL e outro para o SQLite) a fim de executar 500000 operaes insert, select e update divididas em 25 blocos de 20000 operaes. Para a implementao dos programas, utilizou-se o ambiente de desenvolvimento NetBeans IDE verso 6.9. Nos respectivos programas, ilustrados nos Anexos 1 e 2, a classe ConexaoBanco faz a conexo com a base de dados criada, fazendo as operaes de insero, seleo e atualizao do banco, medindo a durao das operaes acumalada de cada bloco e escrevendo em um arquivo texto os resultados obtidos. O computador utilizado para implementao e execuo dos programas possuia processador Intel Core i5, sistema operacional Windows 7 de 64 bits e 6GB de memria RAM.

3. Resultados e Discusses
Primeiramente, o programa referente ao MySQL foi executado sem os comandos que acessam o banco de dados com a finalidade de observar o tempo acumulado de cada bloco vazio. Notou-se que as duraes das operaes eram muito pequenas, visto que nenhuma acessava o bando de dados, e portanto, podem ser desprezveis. _________________________________
1. Freeware: software livre. Softwares livres que possuem cdigo fonte aberto so chamados Open Source. 2. Shareware: software pago.

Posteriormente, o programa foi executado com os respectivos comandos. Na Tabela 1, tm-se os dados da durao das operaes acumuladas (DOA) de cada nmero de operaes (NOP) das operaes insert, select e update. Pela tabela, nota-se que a operao que resultou maior consumo de tempo foi a do comando insert, 14465,338 s, em mdia 0,029 s por isero. As operaes feitas pelo comando select totalizaram 95,287 s, 0,66% do tempo gasto pelo comando insert, uma mdia de 0,0002 s por seleo. O comando update precisou de 13581,970 s para atualizar 500000 dados no banco, ou seja, 93,9% do tempo gasto pelo insert. Esses resultados podem ser justificados pelo fato do comando insert realizar mais demanda computacional, uma vez que necessrio em cada insero criar e atualizar os ndices da tabela, aumentando desse modo a quantidade de registros. J o comando select tem acesso ao banco de dados, porm no o altera. No caso do comando update, no h aumento no nmero de registros, entretanto preciso atualizar os valores presentes na tabela. O tempo total de execuo do programa foi aproximadamente 8 horas.
Tabela 1. Nmero de operaes (NOP) e a durao das operaes acumuladas (DOA) em segundos dos comandos insert, select e update para o MySQL.
NOP 20000 40000 60000 80000 100000 120000 140000 160000 180000 200000 220000 240000 260000 280000 300000 320000 340000 360000 380000 400000 420000 440000 460000 480000 500000 Insert DOA (s) 568,724 1162,019 1745,629 2353,384 2926,867 3512,971 4079,366 4648,375 5218,974 5800,995 6349,063 6989,069 7625,165 8172,982 8730,281 9321,604 9904,064 10482,958 11047,213 11616,511 12183,413 12745,998 13347,924 13926,710 14465,338 Select DOA (s) 4,913 8,864 12,810 15,970 19,780 23,432 26,870 30,672 34,500 38,112 41,946 45,524 48,924 52,083 55,264 58,770 62,783 66,788 70,884 74,898 78,942 82,953 86,992 91,053 95,287 Update DOA (s) 532,707 1058,616 1592,084 2129,450 2664,817 3213,942 3746,233 4295,969 4854,844 5396,076 5976,172 6515,709 7052,427 7605,948 8148,433 8685,640 9244,557 9778,105 10300,732 10828,115 11363,385 11901,077 12466,332 13014,873 13581,970

Como no caso do MySQL, para analisar o desempenho do SQLite, foi executado o programa referente a sua implementao. Sem acessar os comandos insert, select e update, a durao das operaes foram insignificantes. Posteriormente, acessando o banco de dados atravs dos comandos foi possvel medir DOA de cada comando, como

ilustra a Tabela 2. O tempo total de execuo do programa chegou a aproximadamente 37 horas.


Tabela 2. Nmero de operaes (NOP) e a durao das operaes acumuladas (DOA) em segundos dos comandos insert, select e update para o SQLite.
NOP 20000 40000 60000 80000 100000 120000 140000 160000 180000 200000 220000 240000 260000 280000 300000 320000 340000 360000 380000 400000 420000 440000 460000 480000 500000 Insert DOA (s) 2909,616 5756,885 9162,193 12588,051 15924,789 18781,459 21720,484 24518,314 27370,110 30173,474 33469,903 36367,301 39233,759 42017,791 44804,625 47680,660 51345,396 54432,003 57232,489 60726,513 64354,956 67584,711 70441,253 73260,571 76099,813 Select DOA (s) 65,213 100,409 133,121 166,001 199,367 232,600 265,894 298,121 330,415 362,577 395,549 426,104 456,702 487,797 518,717 549,187 581,616 613,411 645,406 678,214 710,745 741,958 772,735 802,337 832,316 Update DOA (s) 2305,621 4578,364 6829,563 9037,735 11303,965 13542,217 15779,373 17977,252 20164,342 22349,464 24527,641 26726,115 28918,098 31099,377 33272,375 35445,800 37612,169 39813,184 41963,095 44168,437 46304,698 48449,480 50608,736 52857,539 55048,061

Da mesma maneira como aconteceu com o MySQL, para o SQLite percebe-se que o comando insert foi a operao que demandou mais tempo, 76099,813 s, para inserir 500000 registros no banco, em mdia 0,152 s por isero. Para o comando select o tempo de durao foi de 832,316 s, 1,09% do tempo gasto pelo comando insert. J o comando update gastou 55048,061 s para atualizar o banco, ou seja, 72,3% do tempo gasto pelo insert. Atravs da Figura 1 pode-se observar que os dados DOA tanto para o MySQL quanto para o SQLite variaram linearmente com NOP, isso significa que, quanto maior o nmero de dados mais tempo o sistema necessitar para inserir (comando insert) e selecionar (comando select) no banco de dados. Outra coisa a observar o quanto a durao das operaes para o SQLite maior que a durao para o MySQL, ou seja, as operaes atravs dos comandos demandaram mais tempo para o SQLite.

(a)

(b)

Figura 1: Variao dos dados de DOA em funo do nmero de operaes (NOP) insert (a) e select (b) no MySQL e SQLite.

4. Concluso
Diante do que foi mostrado, pde-se perceber uma diferena muito significativa entre os bancos de dados MySQL e SQLite. Na execuo de 500000 operaes, o SQLite cerca de 5 vezes mais lento para as operaes insert, 9 vezes mais lento para as operaes select e cerca de 4 vezes mais lento para as operaes update. As operaes insert, select e update no MySQL utilizaram, respectivamente, cerca de 19,0%, 11,4% e 24,7% do tempo das correspondentes no SQLite. Isso se deve principalmente pelo fato do SQLite armazenar o banco de dados completo em um nico arquivo em disco, enquanto que o MySQL, por ser um banco de dados relacional, armazena dados em tabelas separadas em vez de colocar todos os dados em um s local. A anlise de desempenho realizada mostrou-se o quanto importante a escolha do banco de dados para um determinado projeto. Uma sugesto para trabalhos futuros seria analisar o desempenho do MySQL em relao aos outros tipos de bancos de dados open source.

5. Referncias
[1] Disponvel em:<http://dev.mysql.com/doc/refman/4.1/pt/index.html>. Acesso em 18 ago. 2011. [2] Disponvel em:<http://www.sqlite.org/>. Acesso em 18 ago. 2011.

Vous aimerez peut-être aussi