FACULDADE FORTIUM
SISTEMAS DE INFORMAÇÃO
MAGDIEL DOS SANTOS PEREIRA
UMA ANÁLISE COMPARATIVA DE DESEMPENHO ENTRE O SGBD MYSQL E
POSTGRESQL
Brasília-DF
2013
FACULDADE FORTIUM
SISTEMAS DE INFORMAÇÃO
MAGDIEL DOS SANTOS PEREIRA
UMA ANÁLISE COMPARATIVA DE DESEMPENHO ENTRE O SGBD MYSQL E
POSTGRESQL
Monografia apresentada à Faculdade Fortium
como requisito parcial para obtenção do grau
de Bacharel em Sistemas de Informação.
Orientador: Prof. José Wellington Cunha da
Silva
FICHA CATALOGRAFICA AKI NO VERSO
Brasília-DF
2013
MAGDIEL DOS SANTOS PEREIRA
UMA ANÁLISE COMPARATIVA DE DESEMPENHO ENTRE O SGBD MYSQL E
POSTGRESQL
Esta monografia foi julgada adequada para
obtenção do Grau de Bacharel no Curso de
Sistemas de Informação da Faculdade Fortium e
aprovada em sua forma final em 18 de Maio de
2013.
___________________________________________________________________________
Prof. Msc. José Wellington Cunha da Silva (Orientador)
___________________________________________________________________________
Prof. Wellington Moreira
___________________________________________________________________________
Prof. Edeuzane de Fátima Pereira da Silva Steinmetz
Brasília-DF
2013
Dedicatória
Dedico esse trabalho a minha família que me concedeu um alicerce forte o bastante para
superar mais uma etapa de minha vida.
Em especial a minha esposa Eliete e ao nosso presente de Deus, Maria Clara.
AGRADECIMENTOS
A Deus, por ter me concedido saúde para concluir esse trabalho com êxito.
Aos meus amigos de faculdade que de forma direta ou indireta me auxiliaram nessa
caminhada.
Aos meus pais, por terem me ensinado os caminhos da vida.
A minha esposa por ter compreendido minhas ausências nas madrugadas para que eu pudesse
concluir essa etapa importante de minha vida.
Aos amigos Diego, Helyedo e Marquinho que também contribuíram de alguma maneira para
o desenvolvimento desse trabalho.
"Se você conta com alguém que tem menos qualidades que você, isso levará à sua
degeneração. Se você conta com alguém com qualidades iguais às suas, você permanece onde
está.
Somente quando conta com alguém cujas qualidades são superiores às suas é que você atinge
uma condição sublime."
Dalai Lama
RESUMO
Esse trabalho de conclusão apresenta algumas características dos SGBDs MySQL e
PostgreSQL, além de realizar uma análise comparativa de desempenho entre eles, utilizando
os comandos de Linguagem de Manipulação de dados (DML), (insert, update, delete, select).
Para isso partiu-se da hipótese de que o SGBD MySQL possui melhor desempenho na
execução desses comandos. Os registros utilizados para alimentar as bases de dados foram
gerado com a utilização da ferramenta datagenerator, um script de código aberto escrito em
Java Script, PHP e MySQL utilizado para gerar grande massa de dados personalizados. O
teste de desempenho foi realizado em máquina virtualizada, sendo uma para cada SGBD, com
Windows 7 Home Premium 32 bits, logo após foi instalado o SGBD MySQL em uma
máquina e o PostgreSQL na outra, onde foram realizados os testes de laboratório. O
desempenho dos SGBDs foi analisado através da coleta de tempo que cada SGBD, atingiu
para concluir os testes de DML, aplicado em ambos, esses testes foram realizados 3 vezes
seguidas e logo após tirado uma média, as telas desses testes encontram nos apêndices B, C, D
e E desse trabalho, com intuito de torna-lo mais fidedigno. Esses testes foram aplicados em
uma modelagem de dados retirados de um projeto de sistema gerenciador de demandas
recebidas via email, que tem o objetivo de armazenar e distribuir demandas recebidas via
email no âmbito de uma secretaria. Ressaltando ainda que esses testes foram realizados em
ambiente controlado, e aplicados a uma modelagem de dados específica, podendo sofrer
alterações se aplicados, por exemplo, em outro sistema operacional ou mesmo em uma
máquina não virtualizada. Após a análise dos devidos testes de DML chegou-se a conclusão
de que o Banco de dados PostgreSQL é o que possui um melhor desempenho em relação ao
MySQL, levando com isso a refutação da hipótese inicialmente levantada.
Palavras-chave: MySQL. PostgreSQL. SGBD. DML. Análise. Comparativa. Desempenho.
ABSTRACT
This report presents some characteristics of the SGBDs MySQL and PostgreSQL software,
and compares their performance, utilizing the data manipulation language commands (DML),
such as insert, update, delete, select. To do this, the hypothesis that the SGBD MySQL has
better performance than the PostgreSQL in the execution of these commands was
assumed.The records used to feed the data bases were generated by using the datagenerator
tool, an open-code script written by Java Script, PHP and MySQL that generate a great mass
of personalized date.The performance test was accomplished by a virtualized machine, having
one for each SGBD, with Windows 7 Home Premium 32 Bits. Later, the SGBD MySQL was
installed in a machine and the PostgreSQL in the other and the lab tests took place. The
SGBD’s performance was analyzed by measuring the time period in which each SGBD took
to conclude the DML test. For both softwares, the average of the time periods of three
consecutive trials was taken. The screen of the trials are attached to the appendices B, C, D,
and E with the intent to make the report more complete. The data models for these tests were
taken from a project of system management of the demands received via email, with the goal
in to store and distribute on a secretary environment.It is important to emphasize that the
tests mentioned were done in a controlled environment, and applied to a specific data model,
and may change, for example, in other operational systems or even in non-virtual machines.
After the analysis of the DML tests, the conclusion reached was that the PostgreSQL’s data
base has a better performance when compared to MySQL’s data base, denying the initial
hypothesis.
Key Words: MySQL. PostgreSQL. SGBD. DML. Analysis. Comparative. Performance.
LISTA DE ABREVIATURAS E SIGLAS
ACID – Atomicity, Consistency, Isolation, Durability - Atomicidade, Consistência e
Durabilidade.
ANSI – American National Standards Institute – Organização Nacional Americana de
Padrões.
API – Application Programming Interface – Interface de Programação de Aplicativos.
DBA – Database Administrator – Administrador de Banco de Dados.
DCL – Data Control Language – Linguagem de Controle de Dados.
DDL – Data Definition Language – Linguagem de Definição de Dados.
DER – Diagrama de Entidade Relacional.
DML – Data Manipulation Language – Linguagem de Manipulação de Dados.
IPC - Interprocess communication – Comunicação Entre Processos.
MER – Modelo de Entidade – Relacionamento.
MR – Modelo Relacional.
SBD – Sistema de Banco de Dados.
SGBD – Sistema Gerenciador de Banco de Dados.
SGBDR – Sistema de Gerenciador de Banco de Dados Relacional.
SQL – Structured Query Language – Linguagem Estruturada de Consultas.
.
LISTA DE FIGURAS
Figura 1 - Arquitetura de três Esquemas ............................................................................... 21
Figura 2 - Componentes do Sistema de Banco de Dados ...................................................... 22
Figura 3 - Modelo de Entidade Relacionamento (MER) ....................................................... 24
Figura 4 - Exemplo de Relacionamento................................................................................ 25
Figura 5 - Relacionamento 1:1 ............................................................................................. 26
Figura 6 - Relacionamento 1:N ............................................................................................ 26
Figura 7 - Relacionamento N:N............................................................................................ 26
Figura 8 - Exemplo Chave Primária ..................................................................................... 27
Figura 9 - Exemplo Chave Estrangeira ................................................................................. 28
Figura 10 - Tabela Funcionário ............................................................................................ 31
Figura 11 - Tabela Terceira Forma Normal .......................................................................... 31
Figura 12 - Create Table ...................................................................................................... 34
Figura 13 - Drop Table......................................................................................................... 34
Figura 14 - Alter Table......................................................................................................... 34
Figura 15 - Select ................................................................................................................. 35
Figura 16 - Update ............................................................................................................... 36
Figura 17 - Insert ................................................................................................................. 36
Figura 18 - Delete ................................................................................................................ 36
Figura 19 - Grant ................................................................................................................. 37
Figura 20 - Revoke .............................................................................................................. 37
Figura 21 - Arquitetura MySQL ........................................................................................... 41
Figura 22 - Arquitetura PostgreSQL ..................................................................................... 45
Figura 23 - Quadro Comparativo com algumas características do MySQL e PostgreSQL .... 46
Figura 24 - Configuração do ambiente de teste ..................................................................... 51
Figura 25 - Ambiente de teste virtualizado com dois Sistemas Operacionais Windows 7 ...... 51
Figura 26 - Configuração máquina virtual com o SGBD MYSQL ........................................ 52
Figura 27 - Configuração máquina virtual com o SGBD POSTGRESQL ............................. 52
Figura 28 - Modelo Lógico .................................................................................................. 53
Figura 29 - Script de Criação das Tabelas............................................................................. 54
Figura 30 - Códigos SQL utilizados nos testes de Select....................................................... 56
Figura 31 - Códigos SQL utilizados nos testes de Update..................................................... 57
Figura 32 - Códigos SQL utilizados nos testes de Delete ...................................................... 58
Figura 33 – Fórmula para calcular a diferença percentual entre dois valores ......................... 60
LISTA DE TABELAS
Tabela 1 - Quantidade de registros inseridos na tabela TB_PERFIL_USUARIO, no SGBD
MySQL ................................................................................................................................ 60
Tabela 2 - Quantidade de registros inseridos na tabela TB_PERFIL_USUARIO, no SGBD
PostgreSQL ......................................................................................................................... 60
Tabela 3 - Diferença percentual no quesito inserção na TB_PERFIL_USUARIO, nos SGBDS
MySQL e PostgreSQL ......................................................................................................... 61
Tabela 4 - Quantidade de registros inseridos na tabela TB_SETOR, no SGBD MySQL ....... 61
Tabela 5 - Quantidade de registros inseridos na tabela TB_SETOR, no SGBD PostgreSQL . 61
Tabela 6 - Diferença percentual no quesito inserção na TB_SETOR, nos SGBDS MySQL e
PostgreSQL ......................................................................................................................... 61
Tabela 7 - Quantidade de registros inseridos na tabela TB_PRIORIDADE_DEMANDA, no
SGBD MySQL .................................................................................................................... 62
Tabela 8 - Quantidade de registros inseridos na tabela TB_PRIORIDADE_DEMANDA, no
SGBD PostgreSQL .............................................................................................................. 62
Tabela 9 - Diferença percentual no quesito inserção na TB_PRIORIDADE_DEMANDA, nos
SGBDS MySQL e PostgreSQL ............................................................................................ 62
Tabela 10 - Quantidade de registros inseridos na tabela TB_STATUS_DEMANDA, no
SGBD MySQL .................................................................................................................... 62
Tabela 11 - Quantidade de registros inseridos na tabela TB_STATUS_DEMANDA, no
SGBD PostgreSQL .............................................................................................................. 63
Tabela 12 - Diferença percentual no quesito inserção na TB_STATUS_DEMANDA, nos
SGBDS MySQL e PostgreSQL ............................................................................................ 63
Tabela 13 - Quantidade de registros inseridos na tabela TB_UF, nos SGBD MySQL ........... 63
Tabela 14 - Quantidade de registros inseridos na tabela TB_UF, nos SGBD PostgreSQL ..... 63
Tabela 15 - Diferença percentual no quesito inserção na TB_UF, nos SGBDS MySQL e
PostgreSQL ......................................................................................................................... 64
Tabela 16 - Quantidade de registros inseridos na tabela TB_USUARIO, no SGBD MySQL 64
Tabela 17 - Quantidade de registros inseridos na tabela TB_USUARIO, no SGBD
PostgreSQL ......................................................................................................................... 64
Tabela 18 - Diferença percentual no quesito inserção na TB_USUARIO, nos SGBDS MySQL
e PostgreSQL ....................................................................................................................... 65
Tabela 19 - Quantidade de registros inseridos na tabela TB_DEMANDA, no SGBD MySQL
............................................................................................................................................ 66
Tabela 20 - Quantidade de registros inseridos por lote na tabela TB_DEMANDA, no SGBD
PostgreSQL ......................................................................................................................... 67
Tabela 21 - Diferença em percentual de cada lote da tabela tb_demanda por SGBD ............. 68
Tabela 22 - Quantidade de registros inseridos na tabela TB_RESPONSAVEL, no SGBD
MySQL ................................................................................................................................ 70
Tabela 23 - Quantidade de registros inseridos na tabela TB_RESPONSAVEL, no SGBD
PostgreSQL ......................................................................................................................... 70
Tabela 24 - Diferença percentual no quesito inserção na TB_RESPONSAVEL, no SGBD
MySQL ................................................................................................................................ 70
Tabela 25 - Quantidade de registros inseridos na tabela TB_HISTORICO_DEMANDA no
SGBD MySQL .................................................................................................................... 71
Tabela 26 - Quantidade de registros inseridos na tabela TB_HISTORICO_DEMANDA, no
SGBD PostgreSQL .............................................................................................................. 71
Tabela 27 - Diferença percentual de cada lote da TB_HISTORICO_DEMANDA, por SGBD
............................................................................................................................................ 71
Tabela 28 - Quantidade de registros pertencentes a cada tabela nos SGBDs ......................... 73
Tabela 29 - Tempo total de Inserção dos dados nos SGBDS, por tabela .............................. 73
Tabela 30 – Tempo dos testes de Updates no SGBD MySQL .............................................. 76
Tabela 31 - Tempo dos testes de Updates no SGBD PostgreSQL ......................................... 76
Tabela 32 – Diferença percentual nos teste de Update .......................................................... 76
Tabela 33 – Tempo dos testes de Deletes no SGBD MySQL ................................................ 78
Tabela 34 - Tempo dos testes de Deletes no SGBD PostgreSQL .......................................... 78
Tabela 35 – Diferença percentual nos testes de Delete.......................................................... 79
Tabela 36 - Tempo dos testes de Select no SGBD MySQL ................................................... 80
Tabela 37 - Tempo dos testes de Select no SGBD PostgreSQL............................................. 81
Tabela 38 – Diferença percentual nos testes de Select .......................................................... 81
Tabela 39 - Tabela com resultado de todos os testes realizados ............................................ 85
LISTA DE GRÁFICOS
Gráfico 1- Inserção de Registros na Tabela TB_USUARIO por lotes nos SGBDS MySQL e
PostgreSQL ......................................................................................................................... 65
Gráfico 2 - Inserção de Registros na Tabela TB_DEMANDA por lotes nos SGBDS MySQL e
PostgreSQL ......................................................................................................................... 69
Gráfico 3 - Inserção de Registros na Tabela TB_HISTORICO_DEMANDA por lotes nos
SGBDS MySQL e PostgreSQL ............................................................................................ 72
Gráfico 4 - Resultado dos testes de Insert nos SGBDS MySQL e PostgreSQL ..................... 74
Gráfico 5 - Gráfico de Inserts nos SGBDS, em menor escala. .............................................. 75
Gráfico 6 - Resultado dos testes de Update .......................................................................... 77
Gráfico 7 - Resultado dos testes de Delete ............................................................................ 79
Gráfico 8 - Resultado dos testes de Consultas ...................................................................... 82
Gráfico 9 - Resultado geral dos testes realizados .................................................................. 85
SUMÁRIO
1.
INTRODUÇÃO ....................................................................................................... 15
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
TEMA ..................................................................................................................... 16
OBJETIVO GERAL............................................................................................... 16
OBJETIVOS ESPECIFICOS ................................................................................ 16
PROBLEMA ........................................................................................................... 16
HIPÓTESE ............................................................................................................. 17
JUSTIFICATIVAS ................................................................................................. 17
CONTEXTUALIZAÇÃO DA PESQUISA ............................................................ 18
ESTRUTURA DO TRABALHO ............................................................................ 18
2.
REFERENCIAL TEÓRICO................................................................................... 19
2.1
BANCO DE DADOS .................................................................................................... 19
2.1.1 Arquitetura de Banco de Dados ............................................................................... 20
2.1.2 Sistema de banco de dados....................................................................................... 21
2.1.3 Sistema gerenciador de Banco de dados - SGBD..................................................... 22
2.2
MODELO ENTIDADE-RELACIONAMENTO ................................................... 23
2.3
MODELO RELACIONAL..................................................................................... 25
2.3.1 Chaves Primárias e Chaves Estrangeiras ................................................................ 27
2.3.2 Restrições do Modelo Relacional ............................................................................. 28
2.3.3 Gerenciamento de Transações ................................................................................. 29
2.4
NORMALIZAÇÃO ................................................................................................ 29
2.4.1 Primeira Forma Normal .......................................................................................... 30
2.4.2 Segunda Forma Normal .......................................................................................... 30
2.4.3 Terceira Forma Normal .......................................................................................... 30
2.5
PADRÃO SQL ........................................................................................................ 31
2.5.1 Descrição ................................................................................................................. 32
2.5.2 Histórico SQL .......................................................................................................... 32
2.5.3 Comandos DDL ....................................................................................................... 33
2.5.3.1 Create Table ............................................................................................................ 33
2.5.3.2 Drop Table ............................................................................................................... 34
2.5.3.3 Alter table ................................................................................................................ 34
2.5.4 Comandos DML....................................................................................................... 35
2.5.4.1 Select ....................................................................................................................... 35
2.5.4.2 Update ..................................................................................................................... 35
2.5.4.3 Insert ....................................................................................................................... 36
2.5.4.4 Delete ....................................................................................................................... 36
2.5.5 Comandos DCL .......................................................................................................... 37
2.6
BANCO DE DADOS MYSQL ................................................................................ 37
2.6.1 Histórico ..................................................................................................................... 38
2.6.2 Descrição .................................................................................................................... 39
2.6.3 Características ............................................................................................................ 40
2.6.4 Arquitetura .............................................................................................................. 40
2.7
2.7.1
2.7.2
2.7.3
2.7.4
BANCO DE DADOS POSTGRESQL .................................................................... 42
Histórico .................................................................................................................. 42
Descrição ................................................................................................................. 43
Características ......................................................................................................... 44
Arquitetura .............................................................................................................. 45
3.
MATERIAL E MÉTODOS .................................................................................... 48
3.1
3.2
3.3
3.4
3.5
CLASSIFICAÇÃO DA PESQUISA ................................................................................. 48
PRINCIPAIS FONTES DE PESQUISA ............................................................................ 49
ETAPAS DA PESQUISA ............................................................................................... 49
DIFICULDADES ENCONTRADAS NA PESQUISA ........................................................... 49
AMBIENTE DE TESTE ................................................................................................ 50
4.
RESULTADOS E ANÁLISES ................................................................................ 59
4.1
4.1.1
4.1.2
4.1.3
4.1.4
4.2
4.2.1
4.2.2
4.2.3
4.2.4
4.2.5
RESULTADO ......................................................................................................... 59
RESULTADOS DOS TESTES DE INSERÇÃO ..................................................... 59
RESULTADOS DOS TESTES DE UPDATE.......................................................... 75
RESULTADOS DOS TESTES DE DELETE .......................................................... 77
RESULTADOS DOS TESTES DE SELECT .......................................................... 80
ANÁLISE ................................................................................................................ 82
ANÁLISE TESTES DE INSERÇÃO ....................................................................... 83
ANÁLISE TESTES DE UPDATE ........................................................................... 83
ANÁLISE TESTES DE DELETE ........................................................................... 84
ANÁLISE TESTE DE SELECT .............................................................................. 84
ANÁLISE GERAL................................................................................................... 84
5.
CONCLUSÃO ......................................................................................................... 87
REFERÊNCIAS ................................................................................................................. 89
APÊNDICE A – AMOSTRA DOS SCRIPTS UTILIZADOS PARA INSERÇÃO DE
DADOS NOS SGBDS ........................................................................................................ 93
APÊNDICE B – PRINT DOS INSERTS DAS TELAS DOS SGBDS MYSQL E
POSTGRESQL .................................................................................................................. 98
APÊNDICE C - PRINT DOS TESTES DE UPDATES REALIZADOS NOS SGBDS
MYSQL E POSTGRESQL.............................................................................................. 175
APÊNDICE D – PRINT DOS TESTES DE DELETE NOS SGBDS MYSQL E
POSTGRESQL ................................................................................................................ 187
APÊNDICE E – PRINT DOS TESTES DE SELECT NOS SGBDS MYSQL E
POSTGRESQL ................................................................................................................ 196
APÊNDICE F – CD COM OS REGISTROS UTILIZADOS PARA INSERÇÃO DE
DADOS NAS TABELAS ................................................................................................. 208
15
1.
INTRODUÇÃO
O tema apresentado neste trabalho é: Uma análise comparativa de desempenho entre
os bancos de dados MySQL e PostgreSQL .
Com o mercado de trabalho cada vez mais competitivo, as empresas estão sempre à
procura de inovações tecnológicas, principalmente quando se deparam com um crescimento
razoável de informações, quantidade de funcionários, clientes, entre outras atividades que
possa vir a se desenvolver na empresa. Diante desse fato, se torna indispensável à escolha de
um SGBD, que lhe forneça segurança e, principalmente, rapidez na captura dessas
informações quando necessário.
O escopo desse trabalho apresenta dois sistemas gerenciadores de banco de dados: o
MySQL, da empresa Oracle Corporation; e o PostgreSQL que diferente do MySQL não
pertence a nenhuma empresa, sendo mantido por instituições nacionais e internacionais, e
administrado pelo Grupo Global do PostgreSQL.
A análise tem como objetivo identificar alguns conceitos inerentes destes SGBDs, e
principalmente realizar o teste de desempenho, utilizando os comandos DML, através da
linguagem SQL (Structured Query Language), em um ambiente virtualizado, utilizando o
Sistema Operacional Windows 7 Home Premium 32 bits.
Aqui, o objetivo geral não é mostrar qual sistema de banco de dados é melhor em
termos absoluto, mas sim realizar um teste de desempenho entre eles, utilizando diferentes
cargas de dados, nos comandos de DML, verificando seus tempos de resposta para aferir qual
banco obteve o menor tempo na execução dos testes.
Assim, esta pesquisa partirá do seguinte problema: Qual SGBD possui melhor
desempenho na execução dos comandos DML?
A solução do problema supracitado partirá da seguinte hipótese: O SGBD MySQL
possui melhor desempenho em relação ao PostgreSQL.
O trabalho visa almejar 03 (três) objetivos específicos:
- Identificar algumas características dos bancos de dados MySQL e PostgreSQL;
- Realizar um teste de desempenho em laboratório utilizando a linguagem SQL,
quanto à execução de comandos DML (inserção, inclusão, alteração e Exclusão);
- Analisar o tempo de resposta desses comandos.
16
1.1
TEMA
O tema abordado é: Uma análise comparativa de desempenho entre os bancos de
dados MySQL e PostgreSQL, quanto à execução de comandos DML (inserção, atualização
exclusão e consultas).
1.2
OBJETIVO GERAL
Esse trabalho de conclusão tem como objetivo realizar uma análise comparativa de
desempenho entre os bancos de dados PostgreSQL e MySQL, utilizando diferentes cargas de
dados, no que diz respeito à execução dos comandos de exclusão, alteração e inserção, e
consultas, aplicados em uma modelagem de dados padronizada e utilizada em ambos SGBDs,
elaborada para controlar o fluxo de demandas recebidas vias e-mail no âmbito de uma
secretaria.
1.3
OBJETIVOS ESPECIFICOS
Os objetivos específicos são:
- Identificar algumas características dos bancos de dados MySQL e PostgreSQL;
- Realizar um teste de desempenho em laboratório utilizando a linguagem SQL,
quanto à execução de comandos DML (inserção, inclusão, alteração e Exclusão)
- Analisar o tempo de resposta desses comandos.
1.4
PROBLEMA
Quando se é elaborado um estudo com o intuito de realizar uma escolha entre dois
SGBD como MYSQL E POSTGRESQL, surge o problema: saber qual deles possui melhor
17
desempenho na realização dos comandos delete, update, insert e select, quando aplicados a
esse modelo lógico de um Sistema Gerenciador de Demandas?
Com o intuito de sanar o problema, se fez necessária à realização de uma pesquisa
que permitisse avaliar qual SGBD, possui melhor desempenho na execução dos testes de
DML.
1.5
HIPÓTESE
Para que pudesse oferecer uma solução ao problema citado no tópico anterior, de
acordo com artigo divulgado pela DEVMEDIA 2013, a vantagem do MYSQL em relação ao
PostgreSQL é a velocidade de acesso que nem sempre é perceptível, pois está na escala de
milésimos de segundos.
Este trabalho de conclusão apresenta a hipótese de que o MySQL possui melhor
desempenho em relação ao PostgreSQL, de acordo com o site divulgado no Devmedia, citado
no parágrafo anterior.
1.6
JUSTIFICATIVAS
À medida que o volume de dados e informações cresce em uma empresa, percebe-se
o quanto é importante à escolha de como armazená-las e gerenciá-las, principalmente quando
a demora de coleta dessas informações geram prejuízos ou são realizadas de maneira
incorreta, nota-se a necessidade da existência de banco de dados na empresa. (GULUTZAN,
PELZER, 2002).
Este estudo tem o intuito de auxiliar na escolha de um SGBD capaz de suprir as
necessidades do software, e que atenda um dos principais quesitos em um SGBD: o
desempenho. Surgiu-se, então, a necessidade de desenvolver esse trabalho acadêmico para
auxiliar na escolha do SGBDs (MySQL, PostgreSQL), no que diz respeito ao modelo lógico
18
utilizado, que tem a finalidade de controlar demandas recebidas via email e distribuir aquém
lhe for de direito, além de armazena-las para futuras consultas caso seja necessário.
1.7
CONTEXTUALIZAÇÃO DA PESQUISA
A pesquisa é realizada em laboratório utilizando um Notebook com sistema
operacional Windows7 Ultimate 64 bits e mais dois sistemas Operacional Windows 7 Home
Premium 32 bits, virtualizado com a utilização da ferramenta VirtualBox (versão 4.2.4) e
instalados os bancos de dados MySQL (versão 5.5) e PostgreSQL (versão 8.3.3), um em cada
máquina virtual.
1.8
ESTRUTURA DO TRABALHO
O trabalho de conclusão de curso apresenta-se divido em cinco capítulos.
No segundo capítulo será abordado o material de pesquisa utilizado na elaboração
do trabalho, onde serão apresentadas algumas características dos SGBDS MySQL e
PostgreSQL, bem como conceitos da linguagem SQL, Modelo Relacional, Normalizações,
Comandos SQL.
São descritos no terceiro capítulo, as ferramentas utilizadas para realização da
comparação entre os banco de dados MySQL e PostgreSQL.
No quarto capítulo são deparados os resultados e análises da pesquisa realizada, e
uma análise separada desses resultados, para facilitar a compreensão e por fim, uma análise
detalhada para cada teste realizado e uma geral, com o objetivo de identificar qual SGBD
obteve melhor desempenho nos testes aplicados.
O quinto capítulo por sua vez, apresenta a conclusão do trabalho realizado,
discorrendo se os objetivos relatados foram alcançados e se as hipóteses foram aceitas ou
refutadas.
19
Neste primeiro capítulo, foram listados a introdução, tema, objetivos, problemas,
hipóteses, temas, e estrutura do trabalho.
No próximo capítulo, trataremos do referencial teórico, uma parte importante da
monografia aonde será apresenta o embasamento do trabalho acadêmico.
2.
REFERENCIAL TEÓRICO
Esse capítulo apresentará os métodos utilizados para o embasamento da comparação
de desempenho realizada com os SGBDs MySQL e PostgreSQL, com consultas realizadas em
base de dados utilizando os mesmos mecanismos de consulta para ambos os SGBDS.
2.1
Banco de Dados
De acordo com Navathe e Elmasri (2005) banco de dados é uma coleção de dados
relacionados, ou seja, informações que possuem algum significado possam ser registradas e
por fim manipulados.
“De modo geral, os dados de um banco de dados – pelo menos, em um sistema de
grande porte – estarão integrados e também compartilhados. Integrados porque o
banco de dados pode ser considerado como uma unificação de vários arquivos, de
outro modo, seriam distintos, com a eliminação de qualquer redundância parcial ou
total entre esses arquivos; e compartilhados porque pode ser compartilhado entre
diferentes usuários, no sentido de que diferentes usuários podem ter acesso aos
mesmos dados, possivelmente ao mesmo tempo” (DATE, 2004).
Já para Melo (2004) banco de dados é uma coleção de dados inter-relacionados,
coerentes e com significado inerente. Segundo o mesmo autor, um banco de dados deve ser
projetado, construído, alimentados com informações que atendam as necessidades de certo
20
grupo de usuários, lhes fornecendo um resultado único, não redundante e de acordo com sua
necessidade.
2.1.1 Arquitetura de Banco de Dados
De acordo com Date (2004) a arquitetura de um sistema de banco de dados (SBD), é
dividida em três níveis:
Nível Interno ou Nível de Armazenamento é o mais próximo do modo de
armazenamento físico, e aquele que se ocupa de que maneira os dados serão armazenados
fisicamente dentro do sistema. (DATE, 2004).
Nível Externo ou Nível Lógico é o mais próximo dos usuários e se ocupa de que
maneira os dados serão vistos por usuários individuais. Abrange os esquemas externos, ou
seja, a visão do usuário, cada esquema externo é responsável pela descrição de uma parte do
banco de dados que um determinado grupo tem interesse e ocultar o restante do banco,
facilitando a visão do usuário. (DATE, 2004).
Nível Conceitual ou nível Lógico de Comunidade é o nível de simulação entre os
dois níveis, ou seja, é o nível intermediário. “Um registro conceitual não e necessariamente o
mesmo que um registro externo e nem o mesmo que um registro de armazenamento.” (DATE
2004).
Segundo Tsichritzis e Klug (1978) a arquitetura de três esquemas também conhecida
como arquitetura (ANSI) American Nacional Standards Organization – Organização
Americana de Padrões tem o objetivo de facilitar a realização e visualização das três
características importantes de abordagem no uso de banco de dados, a separação de
programas e dados (independência de dados e operação de programas), o suporte a múltiplas
visões de usuários e o uso de catálogo para armazenar a descrição de banco de dados
(esquema). A figura 1 apresenta a arquitetura de três esquemas.
21
Figura 1 - Arquitetura de três Esquemas
Fonte: (DEVMEDIA, 2012)
2.1.2 Sistema de banco de dados
De acordo com Tanenbaum (2000), um Sistema de Banco de Dados (SBD), é uma
maneira de armazenar dados e absorver informações que posteriormente poderão ser
recuperadas ou atualizadas por alguns usuários do SBD.
Segundo Date (2004) os dados de um banco de dados permanecerão integrados ou
compartilhados, integrados porque o banco de dados pode ser considerado a junção de vários
arquivos, distintos, pois elimina qualquer tipo de redundância dos arquivos, e compartilhado,
porque pode ser partilhado entre diferentes usuários de modo que permita que esses usuários
possam acessar os mesmo dados simultaneamente. “Sistema de banco de dados é um sistema
computadorizado cuja finalidade geral é armazenar informações e permitir que os usuários
busquem e atualizem essas informações quando as solicitar”. (DATE, 2004).
Conforme Cantu (2005) banco de dados pode ser definido como um conjunto de
dados relacionados, armazenados juntos sem redundância desnecessária que modela um
sistema do mundo real e pode convir para diferentes aplicações.
O SDB também deve evitar perda de dados, falhas do sistema, acesso de usuários
não autorizado e anomalia de dados. (TANENBAUM, 2000).
Os componentes de banco de dados se dividem e quatro partes, dados, hardware,
softwares e usuários, conforme figura 2. (METROPÓLE DIGITAL, 2013).
22
Figura 2 - Componentes do Sistema de Banco de Dados
Fonte: (DEVMEDIA, 2012)
Dados que devem ser integrados, ou seja, permitir que vários usuários possam
acessa-los simultaneamente; (METROPÓLE DIGITAL, 2013).
Hardware composto pela memória, dispositivos de armazenamentos (discos), ou
seja, parte física do computador na qual vai funcionar o SGBD; (METROPÓLE DIGITAL,
2013).
Software são os Sistemas Gerenciamento de Banco de Dados (SGBD), responsáveis
por atender as necessidades dos usuários e fornecer segurança e gerenciamento das atividades
em um SDB, serão instalados no hardware; (METROPÓLE DIGITAL, 2013).
Usuários são aqueles que gerenciam o banco de dados através do SGBD.
(METROPÓLE DIGITAL, 2013).
2.1.3 Sistema gerenciador de Banco de dados - SGBD
Segundo Ricarte (2008), uma das principais contribuições com o surgimento do
SGBD foi o início da separação entre os dados armazenados e a descrição da estrutura que é
feita através de esquemas, onde as restrições sobre os dados formam o modelo de dados de
um sistema.
De acordo com Navathe e Elmasri (2005), um SGBD pode ser conceituado da
seguinte forma:
23
“Um sistema gerenciador de banco de dados (SGBD) é uma coleção de programas
que permite aos usuários criar e manter um banco de dados, ou seja, um sistema de
software de propósito geral que facilita os processos de definição, construção,
manipulação e compartilhamento de banco de dados entre vários usuários e
aplicações.” (NAVATHE e ELMASRI, 2005).
Conforme Laudon e Laudon (2004), um SGBD è um software que permite que os
dados sejam controlados em um único local porem disponíveis para diversas aplicações.
Para Date (2004), SGBD pode ser considerado como um software responsável pelo
gerenciamento dos acessos realizados em um banco de dados, acesso esses que podem ser
divididos em quatro etapas:
“1. Um usuário faz um pedido de acesso usando uma determinada sublinguagem de
dados (geralmente, SQL)”.
2. O SGBD intercepta o pedido e o analisa.
3. O SGBD, por sua vez, inspeciona o esquema externo (ou as versões objeto desse
esquema) para esse usuário, o mapeamento externo/conceitual correspondente, o
esquema conceitual, o mapeamento conceitual/interno e a definição do banco de
dados armazenado.
4. O SGBD executa as operações necessárias sobre o banco de dados armazenado”
(DATE 2004).
De acordo com Date (2000), o Sistema Gerenciador de Demandas (SGBD), possui
uma dupla visão sendo a primeira de banco de dados físico onde os dados são armazenados no
banco de maneira organizada. Fazendo com que todas as requisições de acesso ao banco de
dados e manipulações de dados sejam fornecidas pelo SGBD.
Já a segunda visão, interpreta o SGDB como uma ferramenta de alto nível que está
acima da camada de hardware, e permite operações de fácil interpretação para os usuários em
uma linguagem de nível próxima a linguagem humana.
2.2
MODELO ENTIDADE-RELACIONAMENTO
Segundo (TAKAI, ITALIANO e FERREIRA, 2005), um Modelo de Entidade
Relacionamento (MER) pode ser considerado como um modelo de dados conceitual de alto
nível que é independente do SGBD, que é responsável pela representação do problema a ser
tratado.
O Modelo Entidade-Relacionamento foi fundamentado na teoria relacional de Cood
e serve para representar estruturas de dados de forma que fique mais próximo do mundo real
24
dos negócios, esse modelo é composto por três conceitos: entidades, atributos e
relacionamentos. (SILBERSCHATZ E SUDARSHAN, 2006). A figura 3 apresenta um
Modelo de Entidade Relacionamento.
Figura 3 - Modelo de Entidade Relacionamento (MER)
Fonte: (e-KNOWLEDGE, 2012).
Entidades são os objetos, as características desses objetos são os atributos e as
relações entre esses objetos são denominado de relacionamentos. (DEVMEDIA, 2012).
Ainda segundo Devmedia (2012), a evolução do MER foi aprimorada em
mecanismos de abstração, onde o conceito permite estabelecer que partes da realidade fossem
importantes para que o sistema de informações seja desenvolvido, além de determinar que
fatos relacionados à modelagem sejam importantes para realização da modelagem.
O modelo relacional foi criado em 1976 pelo Dr. Pin-Shan (Petter) Chen, sendo
determinado como uma representação conceitual abstrata de dados gerando um diagrama
denominado de Diagrama de Entidade Relacionamento DER que deve ser notórios por todos
aqueles que participaram do processo de criação do banco de dados.
O modelo relacional é uma ideia que existe na mente humana mais que não pode ser
implementado por um computador, pode ser representado através de um diagrama de entidade
relacionamento (DER) ou exposto em forma de texto através de uma linguagem formal.
(SETZER, 2005).
25
2.3
MODELO RELACIONAL
O modelo Relacional (MR) surgiu em 1970 para suprir o modelo hierárquico e de
rede. Segundo Navalhe (2005):
“O Modelo Relacional (MR) foi introduzido por Ted Codd, da IBM Research, em
1970, em um artigo clássico (Codd, 1970) que imediatamente atraiu a atenção em
virtude de sua simplicidade e base matemática. O modelo usa o conceito de relação
matemática – algo como uma tabela de valores – como seu bloco de construção
básica e tem sua base teórica na teoria dos conjuntos e na lógica de predicados de
primeira ordem.”(NAVATHE e ELMASRI, 2005).
De acordo com Neves (2002) o modelo relacional é matematicamente conciso,
completo, anti-redudante e consistente internamente além de ser mais aproveitado no mercado
comercial, pode também ser utilizado para resolver problemas diários.
Segundo Tanenbaum (2000) a tabela è considerado uma relação, as colunas de
atributo e a quantidade total desses atributos são denominadas de grau enquanto os conjuntos
de valores válidos para um determinado atributo será denominado de domínio, já as linhas
serão denominadas de tuplas e os conjuntos dessas serão as cardinalidade. A figura 4 mostra
um exemplo de um relacionamento.
Figura 4 - Exemplo de Relacionamento
ID
1
2
Cliente
Nome
Pedro
Paulo
CPF
123456
655421
ID
1
2
Hotel
Quarto Classe
Simples
2
Casal
1
O exemplo acima nota-se que o cliente Pedro ocupa o quarto simples, uma vez que
sua chave primária (1) torna-se sua chave estrangeira na tabela hotel, essa mesma lógica pode
ser aplicada para o cliente Paulo que ocupa o quarto de casal na tabela hotel.
Conforme Machado e Abreu (1995) existem quatro formas de relacionamentos:
Relacionamento 1:1 é uma relação de um campo chave de um registro de uma
determinada tabela com o campo chave de um registro de outra determinada tabela, por
exemplo, um casamento, onde um marido pode ter apenas uma esposa e uma esposa apenas
um marido. (MACHADO e ABREU 1995). A figura 5 mostra um exemplo de relacionamento
1 para 1.
26
Figura 5 - Relacionamento 1:1
Homem 1
1
Mulher
Relacionamento 1: N é um relação de um campo chave de um registro de uma
determinada tabela com o campo chave de muitos registros de outra determinada tabela, por
exemplo, um condutor pode ser dono de muitos veículos, porém um veículo pode pertencer
apenas á um condutor. (MACHADO e ABREU 1995). A figura 6 mostra um exemplo de um
relacionamento 1 para n.
Figura 6 - Relacionamento 1:N
Condutor 1
N
Veículo
Relacionamento N: N é uma relação de um campo chave de muitos registros de uma
determinada tabela com o campo chave de muitos registros de outra determinada tabela, por
exemplo, um aluno pode cursar muitas disciplinas e uma disciplina pode ser cursada por
vários alunos. (MACHADO e ABREU 1995). A figura 7 mostra um exemplo de um
relacionamento n para n.
Figura 7 - Relacionamento N:N
Aluno
N
N Disciplina
27
2.3.1 Chaves Primárias e Chaves Estrangeiras
Para estabelecer as restrições de integridade e estabelecer os relacionamentos entre as
tabelas usa- se um campo denominado chave que podem ser primárias ou estrangeiras.
O termo integridade refere-se à precisão ou correção de dados armazenados em um
banco de dados, as restrições de integridades concebem o significado dos dados. (DATE
2000).
A restrição de integridade é uma relação única e declara que nem um valor da chave
primária deverá ser nulo, para que não impossibilite na identificação das tuplas. (NAVATHE
e ELMASRI, 2005).
As chaves primárias são utilizadas para identificar uma ou mais colunas que não
possuem valores repetidos em uma determinada tabela e é definida através das chaves
candidatas, toda chave primária representa um valor e não pode ser nulo. (DATE, 2000). A
figura 8 é apresentada um exemplo de chave primária.
Figura 8 - Exemplo Chave Primária
Fonte: (E-KNOWLEDGE,
2013)
As chaves estrangeiras formam um conjunto de atributos que servem para referenciar
a chave primária de outra tabela, definir os relacionamentos em um banco de dados
relacionais, além de serem utilizadas para manter a integridade referencial do banco de dados.
Na figura 9 é apresentado um exemplo de chave estrangeira.
28
Figura 9 - Exemplo Chave Estrangeira
Fonte: (E-KNOWLEDGE,
2012)
2.3.2 Restrições do Modelo Relacional
Em um banco de dados relacional, sucedem diferentes tipos de relações, contendo
várias tuplas que se relacionam entre si de maneiras qualificadas. A relação existente entre
essa tupla em um determinado momento implicará na resposta proporcionada por um banco
de dados, normalmente ocorrem restrições ou bloqueios para os valores reais em um estado de
banco dados.
Navalhe e Elmasri (2005) trata essas restrições dividindo-as em três categorias:
Restrições baseadas em esquema, que são expressas diretamente no esquema do
modelo, geralmente por suas especificações em DDL (Data Definition Linguage);
Restrições Baseadas em Aplicações são expressas diretamente no esquema do
modelo de dados, portanto devem ser expressa e imposta pelos programas de aplicação;
Restrições Baseadas em Modelo são inerentes ao modelo de dados. (NAVATHE e
ELMASRI, 2005).
29
2.3.3 Gerenciamento de Transações
De acordo com Silberschatz e Sudarshan (2006) um SGBD deve ser capaz de
implementar mecanismos adequados para gerenciar transações e controle de concorrências e
recuperação de dados quando requisitadas pelo usuário com o objetivo de evitar que ocorram
anomalias de dados e falhas de inconsistências.
Para que a integridade de dados de um SGBD seja segura é necessária que sigas as
regras do (ACID) Atomicidade, Consistência, Isolamento e Durabilidade, essas propriedades
estão descritas abaixo: (SILBERCHATZ e SUDARSHAM, 2006).
Atomicidade todas as transações deverão ser iniciadas e finalizadas com sucesso, por
exemplo, ao sacar dinheiro em um caixa eletrônico e durante essa transação ocorre uma queda
de energia antes que você consiga sacar o dinheiro, então à atomicidade dos dados faz com
que essa transação retorne ao início, sem prejuízos ao usuário. (SILBERCHATZ e
SUDARSHAM, 2006).
Consistência é quando uma transação for concluída, todos os dados devem
permanecer em um estado consistente, acompanhando o exemplo dado em atomicidade se o
saque for concluído com o sucesso a consistência garante que somente a quantidade solicitada
pelo usuário seja debitada de sua conta. (SILBERCHATZ e SUDARSHAM, 2006).
Isolamento são modificações realizadas por transações simultâneas e devem ser
isoladas e não podem interferir em nenhuma outra transação simultânea. (SILBERCHATZ e
SUDARSHAM, 2006).
Durabilidade depois que uma transação for concluída com sucesso, as mudanças
realizadas no banco de dados persistem mesmo no caso de uma queda do sistema.
(SILBERCHATZ e SUDARSHAN, 2006).
2.4
NORMALIZAÇÃO
De acordo com Date (2004) normalização pode ser definido como um conjunto de
regras que leva à elaboração de modelos mais robustos, com menos redundância de
informação e menos dependência de elementos. Normalização é uma atividade que realiza a
verificação do modelo lógico.
30
2.4.1 Primeira Forma Normal
1ª Forma Normal (1FN) onde toda tabela possui uma chave primária e garantir que
todo atributo seja atômico, e que os atributos compostos sejam separados. Por exemplo, um
atributo endereço deve ser subdividido em seus componentes; bairro, cidade, estado, CEP
entre outros. DATE (2004).
Ainda segundo Date (2004) os atributos multivalorados devem ser separados em
outra relação. Por exemplo, o atributo telefone pode ser separado em residencial, fixo, celular,
ou podem ser criados em outra relação para que fosse possível representar um número
indeterminado de telefones.
2.4.2 Segunda Forma Normal
2ª Forma Normal (2FN) para que uma relação esteja na segunda forma normal ela
obrigatoriamente deve está na primeira Forma normal e extinguir dependências parciais e
funcionais, ou seja, todo atributo não chave da relação deverá depender por completo da
chave primária. Por exemplo, uma relação que contenha os atributos código do fornecedor,
nome do fornecedor e preço de venda e considerando que a chave primária é composta pelos
atributos código do fornecedor e código da obra. DATE (2004).
Essa relação não estará na segunda forma normal já que o nome do fornecedor
depende exclusivamente do código do fornecedor e não do código da obra, passando para
segunda forma é necessário que crie uma nova relação (fornecedor) com os campos código do
fornecedor como chave primária e nome do fornecedor, com intuito de diminuir a
redundância de informações criadas de formas indevidas. DATE (2004).
2.4.3 Terceira Forma Normal
3ª Forma Normal (3FN) para que uma relação esteja na terceira forma normal ela
obrigatoriamente deve está na segunda forma normal e extinguir dependências funcionais
31
transitivas, ou seja, todo atributo não chave deve ser mutuamente independente. Por exemplo,
uma relação que contenha os atributos matrícula do funcionário como chave primária, nome
funcionário, código do departamento e nome do departamento não estaria na terceira forma.
DATE (2004). A figura 10 mostra um exemplo de uma tabela que ainda não se encontra na
terceira forma normal.
Figura 10 - Tabela Funcionário
FUNCIONÁRIO
Matrícula _funcionário int chave primária
Nome _funcionário char (50)
Codigo_departamento int
Nome_departamento char (70)
O nome do departamento é dependente do código departamento, e não da matrícula
funcionário, se houvesse uma mudança no nome do departamento, influenciaria nas alterações
de todos os funcionários, para sanar esse problema é necessário a criação de uma relação
(departamento) contendo nome do departamento e código do departamento como chave
primária que será chave estrangeira na relação original. A figura 11 mostra o
desmembramento dos atributos e a criação da nova tabela departamento.
Figura 11 - Tabela Terceira Forma Normal
Funcionário
Codigo_funcionário int
Chave Primária
Nome_funcionário char (50)
Departamento
Codigo_departmamento int
Chave Primária
Nome_departamento char
(70)
Codigo_departamento Chave
Estrangeira
2.5
PADRÃO SQL
Foi criado em 1970 pela IBM, como parte Sistema R, quando os bancos de dados
relacionais
eram
desenvolvidos
(RAMAKRISHNAN, 2008).
e
linguagens
foram
criadas
para
manipulá-los.
32
2.5.1 Descrição
A Structured Query Language, ou Linguagem de Consulta Estrutura - SQL é tida como
“uma linguagem orientada a transformações que aceita uma ou mais relações como entrada e
produz uma relação única como saída”, Significa que a linguagem SQL e capaz de transforma em
resultado qualquer operação envolvendo tabelas em um banco de dados, e cada resultado gera um
a nova tabela com linhas e colunas de acordo com as definições estabelecidas pelo modelo
relacional. (KROENKE, 1999).
De acordo com Battisti (2006) o SQL é uma linguagem padrão de consulta criada
para realizar operações em um banco de dados e foi desenvolvida para ser independente de
hardware e software.
“Ao usar o SQL, não e necessário saber a respeito do software banco de dados ou do
hardware envolvido em uma operação. Tudo o que você precisa conhecer são os
comandos/instruções SQL padrão para solicitar informações que obrigatoriamente é
o mesmo em todos os sistemas que utilizam o SQL.” (BATITISTI 2006).
Segundo Garcia-Molina (2001) SQL é uma linguagem que surgiu para acessar um
banco de dados de forma simples baseada nos conceito do modelo relacional proposto pelo
Dr.Codd em 1970.
Conforme Oliveira (2002) a linguagem SQL tem sido um padrão tomado para
utilização em banco de dados relacionais, existem várias versões de SQL, porém sua versão
original foi desenvolvida pela International Business Machines (IBM) no laboratório de são
José na Califórnia com o nome de sequel.
2.5.2 Histórico SQL
De acordo com (NAVATHE e ELMASRI, 2005) a SQL é uma linguagem padrão de
bancos de dados relacionais, que possui comandos para realizar manipulações no banco de
dados, tais como alterações, inserções entre outros, por ser uma linguagem padrão, faz com
que o usuário não encontre dificuldades caso necessite mudar suas aplicações de um banco
para outro desde que siga os padrões e que ambos os bancos o suportem, já que os SGBD
possuem características diferentes, além de possuir funcionalidades para inserir seus
comandos disponíveis em linguagem de programação com Java,COBOL ou C++.
33
Em 1986 surgiu o primeiro padrão de linguagem SQL (Structured Query Language),
com o objetivo de padronizar a utilização, acesso e manipulação das informações no banco de
dados. (CANTU, 2005).
Esse padrão foi desenvolvido pela ANSI e ficou conhecido como SQL 86, e que
depois passaram por algumas evoluções, em 1989 tornou-se SQL 89, e em 1992 o modelo foi
definido como SQL 92.
A última versão surgiu em 1999, conhecida com versão SQL 99 trazendo uma
mudança significativa, que era a definição de padrões para banco de dados objeto relacionais.
Diante do surgimento dessas versões tornou-se necessário a criação do instituto
ANSI (American Standarts Institute), com a finalidade de estabelecer uma padronização para
linguagem SQL (MANZANO, 2008).
2.5.3 Comandos DDL
Uma DDL (Linguagem de Definição de Dados) permite ao usuário definir tabelas
novas e elementos associados. A maioria dos bancos de dados de SQL comerciais tem
extensões proprietárias no DDL. Um esquema de dado é definido por um conjunto de
definições expressas em uma linguagem de definição de dados. (NAVATHE e ELMASRI,
2005).
2.5.3.1 Create Table
O comando create table é utilizado para criar uma nova relação ou objeto (view),
com nome e especificando seus atributos e restrições iniciais, sendo que as restrições (chave
primária, estrangeira), podem ser acrescentadas posteriormente após a criação da tabela.
(NAVATHE e ELMASRI, 2011). A sintaxe deste comando é descrita a seguir na figura 12.
34
Figura 12 - Create Table
CREATE TABLE nome da tabela (
campo 1 INT,
campo 2 VARCHAR (50),
campo 3 DATE NOT NULL,
PRIMARY KEY (campo da tabela que será
definido como chave primária));
2.5.3.2 Drop Table
Esse comando serve para remover a definição da tabela ou remover um objeto (view)
do banco de dados. (NAVATHE e ELMASRI, 2011). A sintaxe deste comando é descrita a
seguir na figura 13.
Figura 13 - Drop Table
DROP (nome do objeto) =TABLE nome da tabela;
2.5.3.3 Alter table
Esse comando tem como objetivo alterar a estrutura de uma tabela, sendo possível
adicionar, remover os campos, os nomes e os formatos da coluna. Além de integridade
referencial definidas em uma tabela. (NAVATHE e ELMASRI, 2011). A sintaxe deste
comando é descrita na figura 14.
Figura 14 - Alter Table
ALTER TABLE <nome-tabela>
DROP <nome-coluna>
ADD <nome-coluna> <tipo-do-dado>
35
2.5.4 Comandos DML
São comandos de manipulação de dados designados para realizar as consultas,
inserções, exclusões e alterações em registros das tabelas através dos respectivos comandos:
Select, Insert, delete e Update.(LINHA DE CÓDIGO,2013).
De acordo com o site Diário de um DBA (2013), em algumas obras literárias o
comando select não é considerado como uma DML, e sim uma DQL Data Query Linguagem
ou linguagem de consulta de dados.
2.5.4.1 Select
É o comando mais utilizado pelo usuário, permite listar os atributos e funções a ser
recuperada, a cláusula from especifica as tabelas que serão consultadas, a cláusula where
especifica as condições para selecionar as tuplas dessas relações. (NAVATHE e ELMASRI,
2011). A sintaxe deste comando é descrita na figura 15.
Figura 15 - Select
SELECT CAMPOS (nome, login) FROM NOME DA
TABELA (aluno) WHERE CONDIÇÃO (idade =18);
2.5.4.2 Update
O comando update é empregado para alterar valores do atributo de uma ou mais
tuplas selecionados e inclui também a cláusula where para especificar quais tuplas serão
modificadas, na cláusula set são determinados quais os atributos a serem modificados e seus
novos valores. (NAVATHE e ELMASRI, 2011). A sintaxe deste comando é descrita na figura
16.
36
Figura 16 - Update
UPDATE (nome da tabela)
SET campo = (valor a ser alterado)
WHERE (campo = Valor atual);
2.5.4.3 Insert
Segundo Nvathe e Elmasri, (2011) o comando insert é utilizado para inserir uma
única tupla a uma relação, onde deve ser especificado o nome da relação e os valores a serem
atribuídos na mesma ordem em que foram especificados no comando de criação da tabela. A
sintaxe deste comando é descrita a na figura 17.
Figura 17 - Insert
INSERT INTO (nome da tabela)
VALUES (valores de cada campo, prédefinidos na criação da tabela);
2.5.4.4 Delete
O comando delete remove tuplas de uma relação, esse comando pode ser utilizado
com a cláusula where para especificar que quais tuplas devem ser deletadas. (NAVATHE e
ELMASRI, 2011). A sintaxe deste comando é descrita a seguir na figura 18.
Figura 18 - Delete
DELETE FROM (nome da tabela)
WHERE campo = (valor a ser deletado);
37
2.5.5 Comandos DCL
São comandos que permitem ao administrador de banco de dados controlarem as
autorizações de dados e as permissões dos usuários com a finalidade de definir quem tem
acesso para manipular dados dentro de um banco de dados. (ROCHA, 2013).
Grant concede permissões aos usuários para executar determinadas operações em um
banco de dados. (NAVATHE e ELMASRI, 2011). A sintaxe deste comando é descrita na
figura 19.
Figura 19 - Grant
GRANT (permissão) = SELECT, UPADATE
ON nome da tabela TO usuário;
Revoke remove ou restringe permissões concedidas aos usuários para executar
determinadas operações em um banco de dados. (NAVATHE e ELMASRI, 2011). A sintaxe
deste comando é descrita na figura 20.
Figura 20 - Revoke
REVOKE permissão SELECT,
UPDATE ON nome da tabela TO
usuário;
2.6
BANCO DE DADOS MYSQL
De acordo com Gilfillan (2003) o MySQL é um sistema de gerenciamento de banco
de dados relacional (SGBDR) com a capacidade de armazenar grande quantidade de dados de
diferentes tipos e distribuí-los, suprindo assim as necessidades de um modelo de organização.
38
2.6.1 Histórico
Conforme Infowester (2012) o MySQL foi desenvolvido na Suécia por Allan
Larsson, David Axmark e Michael widenius, que perceberam a necessidade de realizar
conexões entre tabelas já que o mSQL utilizado não atendiam suas demandas surgindo então a
primeira versão em 1996.
Já segundo Cremades (2009) o MySQL surgiu no inícios dos anos 1990 com o
objetivo de gerenciar uma base dados, no começo seu software era oferecido com uma licença
open source e vendia também seus pacotes com serviços de manutenção e suporte.
De acordo com Milani (2006) O MySQL surgiu na década de 90, desenvolvido por
Axmark, Allan Larsson e Michael Widenius, devido à necessidade de uma interface SQL
compatível com as rotinas ISAM (Indexed Sequential Access Method) – Método de
armazenamento que permite uma rápida recuperação de dados para leitura). ”o MySQL é um
servidor e gerenciador de banco de dados relacional, de licença dupla (sendo uma delas de
software livres), projetado inicialmente para ser usado com aplicações de pequeno porte”.
(MILANI, 2006).
De acordo com Oliveira o MySQL foi criado por Michael na companhia suíça
conforme descrição abaixo:
“O MySQL foi criado por Michael Widenius na companhia suíça TcX. Por volta de
1979 Michael desenvolveu um banco de dados chamado UNIREG, “sendo rescritos
em várias linguagens desde então" [YAR 99]. Em 1994, a empresa TcX começou o
desenvolvimento de aplicações baseadas na Web, tendo como base o banco
UNIREG, porém esse banco possuía muito "overhead" para obter sucesso em uma
aplicação para geração de páginas dinâmicas na Web. Então a empresa TcX
começou a procurar por outro banco o mSQL, uma ferramenta baseada em SQL mas
com características pobres não possuindo por exemplo suporte a índices, e com
desempenho inferior ao UNIREG.”(OLIVEIRA, 2013).
A aquisição do MySQL pode ser feita através do site oficial para aplicações sob
licença GPL (General Public Licence) estando disponíveis para sistemas open source (Linux,
MAC OS.) e para softwares proprietários (Microssoftware Windows.), para aplicações não
GPL, poderá ser cobrado uma pequena taxa, porém sem limite de usuários (ANDERSON,
2004).
Pertencia a empresa MySQL AB em 1995, depois foi comprada pela SUN em 2008,
e em 2009 foi vendida Para a ORACLE, que consequentemente assumiu o MySQL com a
39
condição de manter as duas licenças (open source e Comercial) até 2015. (BORBA ON
SOFTWARE, 2012).
Em 2012 a ORACLE lançou a versão 5.6 com maior desempenho e escalabilidade,
com capacidade de replicação aprimorada, segue abaixo algumas características dessa nova
versão.
“A primeira versão de desenvolvimento também traz um processo de replicação
aprimorada, fornecendo um novo crash-safe e replicação checksums, para melhorar
a integridade dos dados e detectar erros que poderiam causar danos (slave);
replicação row-based otimizada, para melhorar o desempenho de replicação e
reduzir o consumo de recursos do sistema, e tempo de atraso de replicação,
proporcionando aos DBAs mais flexibilidade e Remote Binary Log Backup,
permitindo-lhes criar backups em tempo real a partir do log binário.”
(iMasters,2013).
2.6.2 Descrição
Segundo Willians e Tahaghoghi (2007) o MYSQL é um banco de dados relacional
que utiliza a linguagem SQL como interface, e um software livre com grande facilidade de
uso e pouca exigência quanto ao uso do hardware.
O MYSQL é um banco de dados que não está disponível somente para sistemas
operacionais open source como Linux, MACos entre outros mas também para softwares
proprietário como a Microsoft Windows, já para aplicações GPl poderá ser cobrado uma
pequena Taxa, porém não há limites de usuários, upgrades e processadores. (ANDERSON,
2004).
De acordo com Wellington e Thomson (2004) o MYSQL possui um conjunto de
Application Programming Interface (API), ou Interface de programação de aplicativos, e pode
ser escrita para qualquer tipo de servidor ou sistema operacional essa API faz com o MYSQL
suporte várias linguagens de programação entre elas o C, C++ e oferece uma lista de rotinas
que podem ser chamadas de dentro de um programa para interagir com o banco de dados.
40
2.6.3 Características
O MySQL possui alguma características significativas para sua boa utilização no
cotidiano, segundo o site do PORTAL DA EDUCAÇÃO (2012) segue abaixo algumas dessas
características:
“Portabilidade;
Multithreads (maior integração com máquina com mais de um processador);
Formas de armazenamento (MyISAM, InnoDB);
Velocidade (utilização de cache em consultas indexação);
Segurança (criptografia, conexão limitada);
Armazenamento de procedimentos;
Replicação de dados entre servidores MySQL;
Capacidade (utilizando tabelas InnoDB, onde o armazenamento é feito por 1 ou mais
arquivos, é possível armazenar 65.536TB)”.(PORTAL DA EDUCAÇÃO ,2012).
Segundo o site MySQL (2005), o MySQL ainda possui suporte a integridade
referencial, transações, views, treinamento e consultoria oficial no Brasil, ferramentas gráficas
de administração, extração de dados e atualizações constantes, suporte a cluster, subselect e
stored procedure.
Possui licença GNU General Public License (Licença Pública Geral), GNU GPL ou
simplesmente GPL, significa licença livre. (DEVMEDIA, 2013).
Pode ser instalado em múltiplas plataformas entre as principais podemos citar
Windows e Linux, além de possuir uma ferramenta chamada Workbench que torna a mais
fácil e intuitivo o uso do SGBD e outra denominada Shell, que serve para receber os
comandos SQL.
2.6.4
Arquitetura
Segundo Gaudêncio (2013) a arquitetura do MySQL é dividida em três níveis, conforme
figura 21.
41
Figura 21 - Arquitetura MySQL
Fonte: (GAUDENCIO,
2013).
O primeiro nível de conexões corresponde a camada que não é exclusivamente do
MySQL, onde é baseado na arquitetura cliente servidor, por exemplo em uma linguagem de
programação é realizada a conexão com o SGBD, necessitando assim de uma autenticação.
(GAUDENCIO, 2013).
O MySQL trabalha com threads, ele entende que cada conexão corresponde a uma
thread, oferecendo suporte ao SGBD para que trabalhe com várias conexões simultâneas num
mesmo BD, através da utilização de múltiplos processos que se comunicam por meio de
memórias compartilhadas.(GAUDENCIO, 2013).
Já o segundo nível query cache ou cache de consultas e parsing é onde se localiza a
parte principal do MySQL, onde estão localizadas os códigos para interpretação de consultas,
análises, cache, otimização e todas as funções embutidas como data,hora entre outros. É
também nesse nível que fica armazenado todas as funcionalidades disponíveis pelas
ferramentas de armazenamento como views, stored procedure e triggers. (GAUDENCIO,
2013).
E por ultimo o terceiro nível onde fica localizado os motores de armazenamentos,
que são responsáveis pelo feedback das informações armazenadas no MySQL, ressaltando
que cada motor de armazenamento possui suas vantagens e desvantagens e que também não
se comunicam entre si, simplesmente respondem a pedidos do servidor. (GAUDENCIO,
2013).
42
Esses motores se comunicam com o servidor de base de dados por meio de uma API
(Application
Programming
Interface ou Interface
de
Programação
de
Aplicativos)
denominada storage engine, essa api fica incumbida de ocultar as diferenças dos motores de
pesquisa, tornando-as transparente para os níveis superiores do MySQL.(GAUDENCIO,
2013).
Na API contém funções de baixo nível para processar operações como begin
transaction” ou “fletch the row that has primary key” .(GAUDENCIO, 2013).
2.7
BANCO DE DADOS POSTGRESQL
De acordo com o POSTGRESQL GLOBAL DEVELOPMENT GROUP (2005) o
PostgreSQL pode ser considerado um Sistema Gerenciador de Banco de Dados ObjetoRelacional, pelo fato de possuir características de um SGBD relacional e por contar com
funcionalidades de orientação a objetos.
2.7.1
Histórico
O PostgreSQL é um Sistema de Gerenciamento de Banco de Dados Objeto
Relacional (SGBDOR), elaborado a partir do gerenciador de banco de dados POSTGRES, um
projeto iniciado em 1986 na Universidade da Califórnia, em Berkeley, sob a liderança do
professor Michael Stonebraker, foi patrocinado por alguns órgãos Norte-americanos dentre
eles o DARPA (Defense Advanced Research Project Agency), o ARO (Army Research
Oficce) e distribuído na versão open source. (MANZANO, 2008).
Em 1987 foi liberada a versão 1.0 disponível apenas para um pequeno grupo de
usuários, já em 1990 foi lançada a versão 2.0, com algumas melhorias e dessa maneira a
equipe do professor Stonebraker trabalhou no projeto até a versão 4.2, quando em 1994
Andrew Yu e Jolly Chen adicionaram ao programa um interpretador de linguagem SQL e
lançando em 1995 o Postgres95. (MANZANO, 2008).
43
De acordo com Manzano (2008), o programa Postgres95 na sua primeira versão foi
considerado pelo Wisconsin Benchmark de 30% 50% mais rápido que a versão anterior (4.2),
segue abaixo algumas mudanças significativas da versão Postgres95:
“inclusão de um programa de terminal interativo chamado psql;
sistema de arquivos Inversão e o sistema de regras no nível de instância
foram removidos;
foi acrescentado ao código fonte um tutorial introduzindo as funcionalidades da
linguagem SQL e do Postgres95;
subconsultas podiam ser simuladas por meio de funções SQL definidas
pelo usuário;
funções de agregação foram reimplementadas;
foi adicionado suporte à cláusula GROUP BY nas consultas;
acrescentado uma nova biblioteca cliente, a libpgtcl, para suporte a clientes baseados
no Tcl, e novos comandos Tcl ao interpretador pgtclsh para interfacear programas
GLOBAL
Tcl
com
o
servidor
Postgres95.”
(POSTGRESQL
DEVELOPMENT GROUP (2005).
Pelo fato do nome Postgres95 está associado ao ano de 1995 e com o incremento do
interpretador de linguagem SQL, em 1996 passou a ser chamado de PostgreSQL, com
algumas melhorias como: “os tipos usuais foram aperfeiçoados; flexibilidade através da
inclusão de funções como: restrição, gatilho, subconsulta e padrão no servidor”.
(POSTGRESQL GLOBAL
DEVELOPMENT GROUP, 2005).
O Grupo Global do PostgreSQL lançou a versão 9.2 maior desempenho,
escalabilidade e flexibilidade. (PostgreSQL,2013). Com caracteristísticas descritas abaixo:
“Com o PostgreSQL 9.2, os resultados da consulta podem ser devolvidos como tipos
de dados JSON. Combinado com as novas extensões do banco de dados PL/V8
Javascript e PL/Coffee, e o armazenamento opcional de chave-valor HStore, os
usuários podem agora utilizar o PostgreSQL como um banco de dados "NoSQL" de
documentos, mantendo a confiabilidade, flexibilidade e performance do
PostgreSQL.
"Suporte nativo a JSON no PostgreSQL fornece um mecanismo eficiente para
criação e armazenamento de documentos para APIs web. Nós usamos bibliotecas
cliente como jQuery para solicitar dados tabulares e em forma de árvore; e as novas
funcionalidades o tornam conveniente e fornecem vantagens de desempenho na
recuperação daqueles dados como JSON,” disse Taras Mitran, Arquiteto Sênior,
IVC Inc.”(PostgreSQL,2013)
2.7.2
Descrição
O SGBD PostgreSQL, é um sistema de gerência de banco de dados relacional
estendido a objetos ou objeto-relacional, ou seja essa sua extensão nos permiti utilizar alguns
conceitos de um banco orientado a objetos.
44
“Agora falando do PostgreSQL. Ao contrário do que lemos muitas vezes por ai, o
PostgreSQL não é um SGBD (Sistema de Gerência de Banco de Dados) Orientado a
Objetos. Ele é o que chamamos de Sistema de Gerência de Banco de Dados
Relacional Estendido ou Objeto-Relacional. Essa sua Extensão nos permite utilizar
alguns conceitos próprios de um Banco Orientado a Objetos, como por exemplo
tipos de dados definidos pelo usuário e herança. No caso da herança no PostgreSQL,
uma tabela pode herdar de nenhuma, uma, ou várias tabelas.”(DEVMEDIA,2013).
O PostgreSQL é um sistema de banco de dados, desenvolvido pelo departamento de
ciências da universidade da Califórnia, e foi pioneiro em alguns conceitos, que somente foram
disponíveis para outros bancos posteriormente.Oferece suporte a várias plataformas entre as
principais podemos destacar: Windows,Linux.
Diferente do Mysql, não pertence a uma empresa, é mantido por instituições
nacionais e internacionais, porém é administrado pela comunidade PostgreSQL Global
Development Group.
Possui a técnica avançada chamada MVCC (Multi-version Concurrency Control),
que resolve o problema de ambiente multiusuário, os locks, que fazem os usuários fiquem
aguardando a finalização de uma transação para acessa-la.
“PostgreSQL mantém a consistência dos dados usando um modelo multiversão.
Neste modelo, cada transação terá sua versão do banco de dados, estando protegidas
de acessar dados inconsistentes que poderiam ser gerados por outras transações.
Portanto, o MVCC oferece o isolamento de transações, alem de garantir que leituras
nunca aguardarão escritas e vice-versa.” (DEVMEDIA,2013).
2.7.3
Características
Segundo Neto (2003), o PostgreSQL segue o padrão SQL, uma linguagem de
interface para banco de dados, possui uma ferramenta chamada PGAdmin que torna a mais
fácil e intuitivo o uso do SGBD e outra denominada Psql que serve para receber os comandos
SQL, alem de possibilitar a manipulação de dados armazenados através de camadas OBDC
(Open Database Connectivity) e JBDC (Java Database Connectivity) ou através do acesso
nativo na linguagem C.
O PostgreSQL é um sistema gerenciador de banco de dados Objeto-Relacional
(SGBDOR), baseado no PostgreSQL, foi o precursor em vários conceitos que só se tornaram
disponível depois por outros SGBDs comerciais. (DEVMEDIA, 2012).
45
Segundo a Infowester (2012) o SGBD PostgreSQL possui recursos comum a banco
de dados de grande porte, além de ser um banco versátil gratuito e de código aberto disponível
sob uma licença BSD, possui características importantes como:
“Compatibilidade multi-plataforma, ou seja, executa em vários sistema operacionais,
como Windows, Mac OS X, Linux e outras variantes de Unix;
Compatibilidade com várias linguagens, entre elas, Java, PHP, Python, Ruby, e
C/C++;
Base de dados de tamanho ilimitado;
Tabelas com tamanho de até 32 TB;
Quantidade de linhas de até 1.6 TB ilimitada;
Campos de até 1 GB;
Suporte a recursos como triggers, views, stored procedures, SSL, MVCC, schemas,
transactions, savepoints, referential integrity e expressões regulares;
“Instruções em SQL, como indica o nome”. (INFOWESTER, 2012).
2.7.4
Arquitetura
O PostgreSQL utiliza o modelo cliente-servidor, onde o programa servidor é
denominado postgres que atende um único cliente que possuem processos do tipo pgaccess
(um cliente gráfico)e psql (um cliente em modo texto).
O processo postmaster é responsável pela implementação de um novo servidor para
cada cliente solicitando uma conexão, Os clientes podem ser executados no mesmo local ou
em computadores remotos conectados por TCP / IP. (DATAPRIX, 2012). A arquitetura do
PostgreSQL é Apresentada na figura 22.
Figura 22 - Arquitetura PostgreSQL
Fonte: (DATAPRIX, 2012)
46
O servidor PostgreSQL pode tratar várias conexões simultâneas de clientes, sendo
iniciado um processo filho para cada conexão, ou seja, a thread independente do postmaster a
partir desse o ponto o processo filho se comunica com o processo postmaster, que se
comunica com os processos filho por meio de IPC (Inter-Process communication) utilizando
variáveis globais para gerenciar ao acesso aos recursos do sistema e sem interferência do
processo original, enquanto o postmaster permanece sempre em execução por espera de novas
conexões dos clientes. (POSTGRESQL GLOBAL DEVELOPMENT GROUP, 2005).
Para finalizar esse capitulo é apresentado na figura 23 um quadro comparativo e
algumas características dos os SGBDs Mysql E PostgreSQL.
Figura 23 - Quadro Comparativo com algumas características do MySQL e PostgreSQL
Quadro Comparativo de Funcionalidades entre os SGBDs MySQL e PostgreSQL
MySQL
PostgreSQL
- Sua primeira surgiu em versão em 1995;
- Desenvolvido por Allan Larsson, David
Axmark e Michael Monty Widenius
Michael Widenius na companhia Suíça
TcX;(INFOWEST,2012);
- Pode ser instalado em múltiplas
plataformas entre as principais podemos
citar: Linux, Windows, Unix;
- Código fonte escrito em C e C++
- Compatibilidades com várias linguagens
de programação entre as principais podem
citar: PHP, Java, Python, C#, Ruby e
C/C++
- possui licença GNU General Public
License (Licença Pública Geral), GNU
GPL ou simplesmente GPL, significa
licença livre.(DEVMEDIA,2013)
- Pertencia a empresa MySQL AB em
1995, depois foi comprada pela SUN que
em 2009 foi vendida Para a ORACLE,
com a condição de manter as duas
licenças(open source,e Comercial )até
2015.(BORBA ON SOFTWARE, 2012);
- Focado na agilidade, segundo site
DEVMEDIA, atualmente é o banco mais
rápido do mercado;
-Sua última versão 5.6 foi lançada pela
ORACLE com maior desempenho e
- Sua primeira versão surgiu em 1996 6.0;
(B2BR.2013);
Desenvolvido por comunidades do mundo
inteiro, porém o projeto gerenciado pela
comunidade PostgreSQL Global Development
Group; (B2BR.2013);
- Pode ser instalado em múltiplas plataformas
entre as principais podemos citar: Linux,
Windows, Unixware,MacOSX,Solaris AIX,;
(B2BR.2013);
- É derivado do pacote POSTGRES escrito na
Universidade da Califórnia em Berkeley na
Califórnia; (B2BR.2013);
- Compatibilidades com várias linguagens de
programação entre as priincipais podem citar:
Java, PHP, Pyton, Perl; (B2BR.2013);
- Possui licença BSD (Berkeley Software
Distribution),
pode
ser
alterado,modificar,copiar ou redistribuir sem
custo de licença; (B2BR.2013);
- Não possui dono e nem empresa, é mantido
por empresas Internacionais e Nacionais como
IBM,SUN,EnterpriseBD,Grenplum,Fujitsu
entre outras,que patrocinam financeiramente
os desenvolvedores; (B2BR.2013);
Robusto: Criado para suportar grande volume;
de dados; (B2BR, 2013);
O Grupo Global do PostgreSQL lançou a
versão 9.2 maior desempenho,escalabilidade e
47
escalabilidade, com capacidade de
replicação
aprimorada
(iMASTERS,2013).
Possui
uma
ferramenta
chamada
Workbench que torna a mais fácil e
intuitivo o uso do SGBD e outra
denominada Shell, que serve para receber
os comandos SQL.
flexibilidade. (PostgreSQL,2013).
Possui uma ferramenta chamada PGAdmin
que torna a mais fácil e intuitivo o uso do
SGBD e outra denominada Psql , que serve
para receber os comandos SQL
Nesse capítulo foram tratados assuntos referentes aos Bancos de dados (MySQL e
PostgreSQL),bem como seus conceitos, características,arquiteturas e um breve histórico de
cada um deles.
Foram abordados também modelos entidade-relacionamento, modelo relacional,
chaves primárias e estrangeiras, processo de Normalizações primeira, segunda e terceira
forma normal.
Linguagem SQL, que segundo Battisti (2006), é uma linguagem padrão de consulta
criada para realizar operações em um banco de dados e foi desenvolvida para ser
independente de hardware e software.
No próximo capítulo será abordado o material e método, onde apresenta a
metodologia utilizada para desenvolvimento desse trabalho de conclusão.
48
3.
MATERIAL E MÉTODOS
Neste capítulo será tratada a classificação da pesquisa, a fundamentação das
informações, a forma como se deu a pesquisa, a coletas dos dados e a informações retiradas
dos dados coletados.
3.1
Classificação da Pesquisa
Quanto aos objetivos esse trabalho, apresenta uma pesquisa qualitativa e objetiva,
tendo em vista que tem com objetivo realizar uma análise dos resultados obtidos na pesquisa
para compreender que fatores possam influenciar na escolha de um SGBD em relação ao
outro. (PRODANOV E FREITAS,2013).
Sendo assim quanto à natureza se enquadra em uma pesquisa aplicada, porque gera
produtos ou processos com finalidade imediata, e utiliza conceitos da pesquisa básicas mais as
tecnologias existentes neste caso os SGBDs, MySQL e PostgreSQL.(PRODANOV E
FREITAS,2013)
Esse trabalho de conclusão se enquadra na categoria de pesquisa explicativa, uma
vez que tem a finalidade de apresentar fundamentos que venha a influenciar na escolha do
SGBDs MySQL ou PostgreSQL.
Já em relação aos procedimentos este trabalho se enquadra na categoria de pesquisa
bibliográfica e de laboratório, bibliográfica porque foi desenvolvido com base em materiais de
livre acesso, como livros, artigos, e de laboratório, porque foi realizado um teste de
desempenho em laboratório.
49
3.2
Principais Fontes de Pesquisa
Foram utilizados diferentes tipos de informações para realização deste trabalho
acadêmico, dentre eles destacam-se Sistema de Banco de dados escrito por Navathe e Elmasri,
PostgreSQL 8.3.0, escrito por Manzano.
Silberschatz e Sudarsham tratando do gerenciamento de transações ACID,
Introdução ao Sistema de Banco de Dados escrito por Date utilizados para as Normalizações,
Cantu falando sobre o histórico da linguagem SQL, MySQL Guia do programador escrito por
Milani e vários sites relacionados ao conteúdo do trabalho.
3.3
Etapas da Pesquisa
Primeiramente foi realizado um estudo bibliográfico, com intuito de coletar
informações sobre as ferramentas utilizadas para realização desse trabalho acadêmico, estudo
esse que se encontra no capítulo anterior.
Logo após foi utilizado um modelo de dados retirado de um sistema gerenciador de
demandas recebidas via email, constituído por 9 tabelas, e a partir dessas tabelas foram
gerados seus scripts de criação e replicados em ambos os bancos.
Para por fim realizar os testes de DML (insert, delete,update,select)nos bancos
MySQL e PostgreSQL, coletando seus tempos de resposta para depois realizar uma análise
com o objetivo de identificar qual banco obteve melhor desempenho, quando aplicado a este
modelo, com ambiente monitorado, podendo sofrer alterações se realizado em outro ambiente,
por exemplo se realizado em um sistema operacional Linux,ou em uma máquina local não
virtualizada.
3.4
Dificuldades Encontradas na Pesquisa
Ao tentar realizar a inserção dos registro foi encontrado uma dificuldade, tendo em
vista que devido ao estouro de tamanho do buffer dos SGBDs , não foi possível realizar a
50
inserção dos registros de uma só vez nas tabelas TB_DEMANDA, TB_USUÁRIO e
TB_HISTÓRICO_DEMANDA, onde foram inseridos 450, 54 e 72 mil registros
respectivamente. Sendo assim tiveram seus registros inseridos em lotes de 18.000. (XOOPS
Brasil,2013).
Apresentou o erro : “Server has gone way”, que segundo o site XOOPS BRASIL,
ocorre quando um usuário tenta inserir registro que não condizem com o banco de dados, que
não foi esse o caso.
O outro motivo é quando ao tentar inserir uma quantidade de registros superior a
capacidade do buffer do SGBD. Então ele entende que alguma coisa está errado e encerra a
conexão. Esse foi o tipo de erro encontrado nesse trabalho.(XOOPS Brasil,2013),
“Você também pode obter estes erros se você enviar uma consulta incorreta ou
muito grande ao servidor. Se mysqld recebe um pacote muito grande ou fora de
ordem. ele assume que alguma coisa saiu errado com o cliente e fecha a conexão. Se
você precisa de grandes consultas (por exemplo, se você está trabalhando com
grandes colunas BLOB), você pode aumentar o limite da consulta iniciando
o mysqld com a opção -O max_allowed_packet=# (padrão 1M). A memória extra é
alocada sobre demanda, assim o mysqld alocará mais memória apenas quando você
executar uma grande consulta ou quando o mysqld deve retornar um grande registro
de resultado!” .(XOOPS Brasil,2013).
Essa possibilidade foi comprovada, através do teste realizado em um SGBD,
instalada na máquina local do ambiente de testes da pesquisa.
Por tanto a solução aplicada para resolução desse problema foi a inserção em lotes de
18.000, que foi o tamanho máximo aceito pelo SGBD.
3.5
Ambiente de Teste
Para que fosse possível concluir uns dos objetivos específicos desse trabalho que é
realizar um teste de desempenho em laboratório utilizando os comandos DML, foi necessário
a criação de um ambiente de teste utilizando um Notebook Intel Core i3, CPU 2.40 GHz,
memória RAM de 3 GB, sistema operacional Windows 7 Professional de 64 Bits. Na figura 24
é apresentada a configuração do ambiente de teste local.
51
Figura 24 - Configuração do ambiente de teste
Então foi criado nesse notebook uma máquina virtual com 1 GB de memória RAM e
25 GB de espaço em disco e sistema operacional Windows 7 Home Premium de 32 bits,
utilizando o software VirtualBox versão 4.1.22.0 e criado um clone dessa máquina, ficando
assim com duas maquinas virtuais com as mesmas configurações. Conforme apresentado na
figura 25.
Figura 25 - Ambiente de teste virtualizado com dois Sistemas Operacionais Windows 7
A figura 26 apresenta a configuração da máquina virtual com o banco de dados
MySQL versão 5.5 já instalado.
52
Figura 26 - Configuração máquina virtual com o SGBD MYSQL
Já a figura 27 apresenta as configurações da máquina virtual clonada já com o SGBD
PostgreSQL versão 8.3 já instalado.
Figura 27 - Configuração máquina virtual com o SGBD POSTGRESQL
Logo após a criação das máquinas virtuais e instalação dos SGBD MySQL e
PostgreSQL, o próximo passo foi à utilização do modelo Lógico composto por 9
tabelas,modelo esse retirado de um projeto de sistema que tem como objetivo armazenar e
tramitar demandas recebidas via email no âmbito de uma empresa, este modelo foi
desenvolvido utilizando a ferramenta Workbench versão 5.2.43 ce . A figura 28 apresenta o
modelo lógico desenvolvido no workbench.
53
Figura 28 - Modelo Lógico
Ainda com a utilização da ferramenta workbench foi gerado um arquivo. sql com os
scripts de create table a serem utilizados na criação das tabelas nos bancos MySQL e
PostgreSQL. A figura 29 apresenta o script de criação das tabelas.
54
Figura 29 - Script de Criação das Tabelas
TB_UF
CREATE TABLE TB_UF(
ID_UF INT NOT NULL,
NOME_UF VARCHAR (45) NOT NULL,
PRIMARY KEY (ID_UF));
TB_STATUS_DEMANDA
CREATE TABLE TB_STATUS_DEMANDA(
ID_STATUS INT NOT NULL,
STATUS VARCHAR (45) NOT NULL,
PRIMARY KEY (ID_STATUS));
TB_SETOR
CREATE TABLE TB_SETOR(
ID_SETOR INT NOT NULL,
ID_UF INT NOT NULL,
NOME_SETOR VARCHAR (45) NOT NULL,
PRIMARY KEY (ID_SETOR),
CONSTRAINT FK_TB_UF FOREING KEY (ID_UF)
REFERENCES TB_UF (ID_UF));
TB_USUARIO
CREATE TABLE TB_USUARIO(
CPF_USUARIO VARCHAR (45),
ID_USUARIO INT NOT NULL,
ID_PERFIL INT NOT NULL,
ID_SETOR INT NOT NULL,
LOGIN_USUARIO VARCHAR (45) NOT NULL,
NOME_USUARIO VARCHAR (45) NOT NULL,
SENHA_USUARIO VARCHAR (45) NOT NULL,
RAMAL VARCHAR (45) NOT NULL,
PRIMARY KEY (ID_USUARIO),
CONSTRAINT FK_TB_PERFIL_USUARIO FOREING KEY
(ID_PERFIL) REFERENCES TB_PERFIL_USUARIO
(ID_PERFIL),
CONSTRAINT FK_TB_SETOR FOREING KEY
(ID_SEOR)REFERENCES TB_SETOR (ID_SETOR));
TB_PRIORIDADE_DEMANDA
CREATE TABLE
TB_PRIORIDADE_DEMANDA(
ID_PRIORIDADE_DEMANDA INT NOT
NULL,
TIPO_PRIORIDADE VARCHAR (45) NOT
NULL,
PRIMARY KEY
(ID_PRIORIDADE_DEMANDA));
TB_PERFIL_USUARIO
CREATE TABLE TB_PERFIL_USUARIO(
ID_PERFIL INT NOT NULL,
TIPO_PERFIL VARCHAR (45) NOT NULL,
PRIMARY KEY (ID_PERFIL));
TB_RESPONSAVEL
CREATE TABLE TB_RESPONSAVEL(
ID_RESPONSAVEL INT NOT NULL,
ID_USUARIO INT NOT NULL,
PRIMARY KEY (ID_RESPONSAVEL),
CONSTRAINT FK_TB_USUARIO FOREING
KEY (ID_USUARIO)
REFERENCES TB_USUARIO (ID_USUARIO));
TB_DEMANDA
CREATE TABLE TB_DEMANDA(
ID_DEMANDA INT NOT NULL,
ID_USUARIO INT NOT NULL,
ID_PRIORIDADE_DEMANDA INT NOT
NULL,
ID_RESPONSAVEL INT NOT NULL,
ID_STATUS INT NOT NUL,
DATA_HORA_CRIACAO DATETIME NOT
NULL,
DATA_HORA_CONCLUSAO DATETIME NOT
NULL,
OBSERVACAO VARCHAR (500) NOT NULL,
ASSUNTO VARCHAR (300) NOT NULL,
PRIMARY KEY (ID_DEMANDA)
,CONSTRAINT
FK_TB_PRIORIDADE_DEMANDA1 FOREING
KEY (ID_PRIORIDADE_DEMANDA)
REFERENCES TB_PRIORIDADE_DEMANDA
(ID_PRIORIDADE_DEMANDA),CONSTRAINT
FK_TB_USUARIO1 FOREING KEY
(ID_USUARIO)REFERENCES TB_USUARIO
(ID_USUARIO), CONSTRAINT
FK_RESPONSAVEL1 FOREING
KEY(ID_RESPONSAVEL) REFERENCES
TB_ID_RESPONSAVEL
(ID_RESPONSAVEL),CONSTRAINT
FK_TB_STATUS_DEMANDA1 FOREING KEY
(ID_STATUS)REFERENCES
TB_STATUS_DEMANDA(ID_STATUS));
TB_HISTORICO_DEMANDA
55
CREATE TABLE TB_HISTORICO_DEMANDA(
ID_HISTORICO INT NOT NULL,
ID_DEMANDA INT NOT NULL,
ID_RESPONSAVEL INT NOT NULL,
ID_STATUS INT NOT NUL,
NOME_HISTORICO VARCHAR NOT NULL,
DATA_HORA_CRIACAO DATETIME NOT NULL,
DATA_HORA_CONCLUSAO DATETIME NOT NULL,
OBSERVACAO VARCHAR (500) NOT NULL,
PRIMARY KEY (ID_HISTORICO) ,
CONSTRAINT FK_TB_DEMANDA2 FOREING KEY (ID_DEMANDA) REFERENCES TB_DEMANDA
(ID_DEMANDA),
CONSTRAINT FK_TB_RESPONSAVEL2 FOREING KEY (ID_RESPONSAVEL)
REFERENCES TB_RESPONSAVEL(ID_RESPONSAVEL),
CONSTRAINT FK_TB_STATUS_DEMANDA2 FOREING KEY (ID_STATUS)REFERENCES
TB_STATUS_DEMANDA(ID_STATUS));
Logo após ter criado os SGBDS em ambos os bancos, com a utilização do script
acima, a próxima etapa foi gerar uma base de dados utilizando a ferramenta datagenerator,
um script de código aberto escrito em Java Script, PHP e MySQL utilizado para gerar grande
massa de dados personalizados em vários formatos inclusive arquivo. Sql,utilizados para
inserir dados nos SGBDS.
Os dados gerados foram replicados nos dois bancos, para a inserção dos dados no
MySQL foi utilizado o workbench, já no PostgreSQL, foi utilizado o PGAdmin, formando
assim um base de dados com a mesma quantidade de registros e tipo de dados em ambos os
bancos.
Nas figuras 30, 31, 32 apresentam os comandos utilizados para realização dos testes
nos SGBDS,com os quesitos utilizados para o teste de desempenho, assim como o percentual
de diferença dos resultados obtidos entre os SGBDS MySQL e PostgreSQL.
Ressaltando que pelo fato de que os comandos de insert são de grande volume, uma
vez que a tabela TB_DEMANDA possui 450.000 mil registros, a tabela TB_USUARIO
72.000 mil e a tabela TB_HISTORICO_DEMANDA 54.000 mil, se fez necessário armazenar
esses inserts em um CD, que se encontrão no apêndice F, desse trabalho, e no apêndice A,
encontra-se apenas uma amostra dos comandos de inserção utilizados para alimentar os
SGBD.
Com o objetivo de não favorecer nem um banco de dados durante a realização dos
testes, forma tomadas algumas precações:
- Durante a realização dos testes no SGBD MySQL em uma máquina virtual, a outra
será desligada e vice versa, para que não haja interferência nos resultados.
56
-As tabelas de ambos os SGBDS, possuem índex em suas tabelas, que apesar de
consumirem muito espaço em disco, sua criação é muito útil para desempenho dos bancos de
dados.
“Os índices são criados para direcionar o otimizador de consultas na hora de
localizar os registros desejados, de acordo com o filtro informado no momento da
consulta sql para evitar um seq scan e funcionam exatamente como um índice de um
livro: diz em que página está cada conteúdo”.(BAUdeDEV.COM, 2013).
- Os comandos dos testes serão realizados 3 vezes seguidas, retirando uma Média
Aritmética Simples.
- Para cada teste realizado o computador será reiniciado;
A figura 30 apresenta os 8 comandos de select utilizados para teste consultas nos
SBGDS.
Figura 30 - Códigos SQL utilizados nos testes de Select
N°
SELECT
SELECT
U.ID_USUARIO,
H.NOME_HISTORICO,
D.DATA_HORA_CRIACAO,
D.ID_DEMANDA,
H.ID_HISTORICO,
S.ID_STATUS,
D.ID_DEMANDA
H.OBSERVACAO
FROM TB_USUARIO U
FROM TB_HISTORICO_DEMANDA H
1 INNER JOIN TB_DEMANDA D
2 INNER JOIN TB_DEMANDA D
ON U.ID_USUARIO = D.ID_DEMANDA
ON D.ID_DEMANDA = H.ID_DEMANDA
INNER JOIN TB_HISTORICO_DEMANDA H
INNER JOIN TB_STATUS_DEMANDA S
ON H.ID_HISTORICO = D.ID_DEMANDA
ON S.ID_STATUS = H.ID_STATUS
WHERE U.ID_USUARIO BETWEEN 1 AND
WHERE H.NOME_HISTORICO LIKE
56200 ORDER BY DATA_HORA_CRIACAO
'%E%' ORDER BY NOME_HISTORICO
SELECT
SELECT
3
SELECT
D.ID_DEMANDA,
S.NOME_SETOR,
D.ASSUNTO,
S.ID_SETOR,
D.DATA_HORA_CRIACAO,
U.LOGIN_USUARIO,
D.DATA_HORA_CONCLUSAO,
UF.NOME_UF,
U.NOME_USUARIO,
UF.ID_UF
CPF_USUARIO,
FROM TB_SETOR S
4 INNER JOIN TB_USUARIO U
R.ID_RESPONSAVEL
FROM TB_DEMANDA D
ON S.ID_SETOR = U.ID_USUARIO
INNER JOIN TB_USUARIO U
INNER JOIN TB_UF UF
ON D.ID_DEMANDA = U.ID_USUARIO
ON S.ID_SETOR = UF.ID_UF
INNER JOIN TB_RESPONSAVEL R
WHERE UF.ID_UF BETWEEN 1 AND 700
ON U.ID_USUARIO = R.ID_RESPONSAVEl
ORDER BY SETOR
WHERE D.ID_DEMANDA BETWEEN 50 AND
150000 ORDER BY DATA_HORA_CRIACAO
57
SELECT
SELECT
D.ID_DEMANDA,
D.DATA_HORA_CRIACAO,
U.NOME_USUARIO,
U.CPF_USUARIO,U.RAMAL,
R.ID_RESPONSAVEL,P.
ID_PERFIL,P.TIPO_PERFIL
FROM TB_DEMANDA D
5
INNER JOIN TB_USUARIO U
ON D.ID_DEMANDA = U.ID_USUARIO
INNER JOIN TB_RESPONSAVEL R
ON D.ID_DEMANDA = R.ID_RESPONSAVEL
INNER JOIN TB_PERFIL_USUARIO P
ON D.ID_DEMANDA = P.ID_PERFIL
WHERE U.ID_USUARIO <= 8000
AND U.NOME_USUARIO LIKE '%a'
ORDER BY DATA_HORA_CRIACAO
D.ID_DEMANDA,
D.DATA_HORA_CRIACAO,
D.ASSUNTO,
S.STATUS,
P.TIPO_PRIORIDADE
FROM TB_DEMANDA D
INNER JOIN TB_STATUS_DEMANDA S
6
ON S.ID_STATUS = D.ID_STATUS
INNER JOIN TB_PRIORIDADE_DEMANDA
P
ON P.ID_PRIORIDADE_DEMANDA =
D.ID_PRIORIDADE_DEMANDA
WHERE D.DATA_HORA_CRIACAO <
'2019-01-04 12:24:54'
ORDER BY TIPO_PRIORIDADE
SELECT
SELECT
F.NOME_USUARIO,
F.LOGIN_USUARIO,
F.CPF_USUARIO,
C.TIPO_PERFIL,
C.TIPO_PERFIL,
D.NOME_SETOR
7 FROM TB_USUARIO F INNER JOIN
TB_PERFIL_USUARIO CON C.ID_PERFIL =
F.ID_PERFIL INNER JOIN TB_SETOR D
ON D.ID_SETOR = F.ID_SETOR
WHERE F.ID_USUARIO BETWEEN 1879
AND 59781
D.ID_DEMANDA,D.DATA_HORA_
CRIACAO,
U.ID_USUARIO,U.CPF_USUARIO,
P.TIPO_PRIORIDADE
FROM TB_DEMANDA D INNER JOIN
TB_USUARIO U ON D.ID_DEMANDA =
8 U.ID_USUARIO INNER JOIN
TB_PRIORIDADE_DEMANDA P
ON D.ID_DEMANDA =
P.ID_PRIORIDADE_DEMANDA
AND ID_DEMANDA < 250000
ORDER BY TIPO_PRIORIDADE
A figura 31 apresenta os 6 comandos de updates utilizados para teste de alterações
nas tabelas nos SBGDS.
Figura 31 - Códigos SQL utilizados nos testes de Update
UPDATE
N°
1
UPDATE TB_USUARIO
SET NOME_USUARIO = 'MAGDIEL PEREIRA'
WHERE ID_USUARIO BETWEEN 1 AND
2
40000 AND ID_PERFIL>700
UPDATE TB_DEMANDA
SET OBSERVACAO = 'ESTOU
CONSEGUINDO'
WHERE ID_DEMANDA BETWEEN 1587
AND 2543;
58
3
5
UPDATE TB_DEMANDA
SET DATA_HORA_CRIACAO = '2013-05-04
12:15:09',ASSUNTO = 'TESTE UPDATE'
WHERE ID_DEMANDA > 400000 AND
ID_USUARIO >71500
UPDATE
UPDATE TB_USUARIO
SET SENHA_USUARIO = 'SENHA
FRACA',LOGIN_USUARIO = 'MIKE
SMITH',NOME_USUARIO
='MAGDIEL',RAMAL ='0000'
WHERE ID_USUARIO BETWEEN 1 AND
70000 AND ID_SETOR < 400
UPDATE TB_HISTORICO_DEMANDA
SET NOME_HISTORICO ='CHAMADO
ABERTO JUNTO AO SERPRO',
OBSERVACAO = 'CHAMADO ATENDIDO
4 '
WHERE ID_HISTORICO BETWEEN 38000
AND 52487
UPDATE TB_DEMANDA
SET ASSUNTO = 'SETAR SENHA HOD
',OBSERVACAO = 'PARA USUARIO MIKE'
6 WHERE ID_DEMANDA >420000 AND
ID_PRIORIDADE_DEMANDA > 590
A figura 32 apresenta os 6 comandos de Deletes para apagar dados nas tabelas nos
SBGDS.
Figura 32 - Códigos SQL utilizados nos testes de Delete
DELETE
N°
DELETE FROM TB_DEMANDA
WHERE ID_DEMANDA BETWEEN 158700
1 AND 254300 AND DATA_HORA_CRIACAO > 2
'2019-01-05 13:34:00'
AND ASSUNTO LIKE '%A'
DELETE
DELETE FROM TB_HISTORICO_DEMANDA
WHERE ID_HISTORICO_DEMANDA > =
3 35500
4
AND DATA_HORA_CONCLUSA <= '2020-0103 02:30:56'
DELETE
DELETE FROM TB_PERFIL_USUARIO
WHERE ID_PERFIL >= 1 AND TIPO_PERFIL
5 LIKE’%i’
6
DELETE FROM TB_UF
WHERE ID_UF > = 500
AND NOME_UF LIKE '%D'
DELETE FROM TB_USUARIO
WHERE NOME_USUARIO LIKE '%M'
AND ID_USUARIO BETWEEN 15087
AND 67543;
DELETE FROM
TB_HISTORICO_DEMANDA WHERE
ID_HISTORICO <= 53990 ANDA
DATA_HORA_CRIACAO <= ‘2020-01-01
03:02:40’
Neste Capítulo foi apresentada a classificação da pesquisa, principais fontes da
pesquisa, as etapas utilizadas para realização da pesquisa, bem como o ambiente de teste
utilizado para realização da pesquisa laboratorial.
59
4.
RESULTADOS E ANÁLISES
Neste capítulo estão apresentados os resultados obtidos nos testes realizados em
laboratórios com os SGBDS MySQL e PostgreSQL, bem como uma análise desses resultados
de formas individuais e uma análise geral, visando facilitar a compreensão.
4.1
RESULTADO
Nesse capítulo estão apresentados os resultados separados por comandos DML, com
o objetivo de identificar os tempos utilizados para realização de cada comando.
Vale apena ressaltar que os SGBDS, fornecem tempos em unidades de medidas de
tempo diferentes, o SGBD MySQL, em segundos e o PostgreSQL em milissegundos, que
corresponde a um milésimo de segundo. (CONVERTWORD.COM, 2013).
Surgindo a necessidade de padronizar as medidas de tempo para facilitar na análise
dos resultados. Neste trabalhou os resultados de milissegundos oferecidos pelo PostgreSQL
foram convertidos para segundo através do site CONVERTWORD.COM.
4.1.1 RESULTADOS DOS TESTES DE INSERÇÃO
Nesse capítulo será apresentado apenas às tabelas com as quantidades de registros
inseridos em cada tabela em ambos os SGBDS, lembrando que os print de inserções dos
registros das tabelas se encontram no Apêndice B desse trabalho, localizado na página 94.
Vale apena ressaltar que devido ao estouro do buffer de memória nos SGBDS, não
foi possível realizar a inserção por total dos registros, nas tabelas TB_DEMANDA,
TB_HISTORICO_DEMANDA e TB_USUÁRIO sendo assim concluída em lotes de 18.000
registros cada, gerando assim vários prints de tela dessas tabelas, surgindo à necessidade de
incluí-las no apêndice B e não no corpo do trabalho.
60
Para essas tabelas que tiveram seus registros inseridos em lotes, foi criado um
gráfico, com o intuito de visualizar as diferenças entre as inserções dos lotes, bem como uma
analise no tempo geral de inserção.
As diferenças percentuais entre os tempos de um SGBD e outro foram calculados
com a utilização da fórmula do Excel com função ABS conforme exemplo da figura 33.
Figura 33 – Fórmula para calcular a diferença percentual entre dois valores
Diferença percentual = (A2-A1)/ABS (A1) * 100
Fonte (OFFICE, 2013)
As tabelas que apresenta informações sobre a diferença percentual entre os SGBDS
foi calculada tendo como base o MySQL, então as diferenças percentuais apresentadas são do
MySQL em relação ao PostgreSQL, que teria outro resultado se calculado tendo como base o
PostgreSQL.
A tabela 1 abaixo apresenta o tempo em segundos, utilizado para inserção de dados
na tabela TB_PERFIL_USUARIO, no SGBD MySQL.
Tabela 1 - Quantidade de registros inseridos na tabela TB_PERFIL_USUARIO, no SGBD MySQL
TB_PERFIL_USUARIO
Lotes
1
Total
Banco de dados MySQL
Tempo de Inserção em
Quantidade Registros
Segundos
1010
0,561
1010
0,561
A tabela 2 apresenta o tempo em segundos, utilizado para inserção de dados na tabela
TB_PERFIL_USUARIO, no SGBD PostgreSQL.
Tabela 2 - Quantidade de registros inseridos na tabela TB_PERFIL_USUARIO, no SGBD PostgreSQL
TB_PERFIL_USUARIO
Lotes
1
Total
Banco de dados PostgreSQL
Tempo de Inserção em
Quantidade Registros
Segundos
1010
0,120
1010
0,120
A tabela 3 apresenta a diferença percentual na inserção de dados da tabela
TB_PERFIL_USUARIO, nos SGBDS MySQL e PostgreSQL.
61
Tabela 3 - Diferença percentual no quesito inserção na TB_PERFIL_USUARIO, nos SGBDS MySQL e
PostgreSQL
TB_PERFIL_USUARIO
Lotes
MySQL
PostgreSQL
Diferença Percentual
1
0,561
0,120
PostgreSQL 367,50% + rápido
A tabela 4 apresenta o tempo em segundos, utilizado para inserção de dados na tabela
TB_SETOR, no SGBD MySQL.
Tabela 4 - Quantidade de registros inseridos na tabela TB_SETOR, no SGBD MySQL
TB_SETOR
Lotes
1
Banco de dados MySQL
Tempo de Inserção em
Quantidade Registros
Segundos
927
0,351
Total
927
0,351
A tabela 5 apresenta o tempo em segundos, utilizado para inserção de dados na tabela
TB_SETOR, no SGBD PostgreSQL.
Tabela 5 - Quantidade de registros inseridos na tabela TB_SETOR, no SGBD PostgreSQL
TB_SETOR
Lotes
1
Banco de dados PostgreSQL
Tempo de Inserção em
Quantidade Registros
Segundos
927
0,081
Total
927
0,081
A tabela 6 apresenta a diferença percentual na inserção de dados da tabela
TB_SETOR, nos SGBDS MySQL e PostgreSQL.
Tabela 6 - Diferença percentual no quesito inserção na TB_SETOR, nos SGBDS MySQL e PostgreSQL
TB_SETOR
Lotes
MySQL
PostgreSQL
Diferença Percentual
1
0,351
0,081
PostgreSQL 333,33% + rápido
A tabela 7 apresenta o tempo em segundos, utilizado para inserção de dados na tabela
TB_PRIORIDADE_DEMANDA, no SGBD MySQL.
62
Tabela 7 - Quantidade de registros inseridos na tabela TB_PRIORIDADE_DEMANDA, no SGBD
MySQL
TB_PRIORIDADE_DEMANDA
Lotes
1
Banco de dados MySQL
Tempo de Inserção em
Quantidade Registros
Segundos
1015
0,401
Total
1015
0,401
A tabela 8 apresenta o tempo em segundos, utilizado para inserção de dados na tabela
TB_PRIORIDADE_DEMANDA, no SGBD PostgreSQL.
Tabela 8 - Quantidade de registros inseridos na tabela TB_PRIORIDADE_DEMANDA, no SGBD
PostgreSQL
TB_PRIORIDADE_DEMANDA
Lotes
1
Banco de dados PostgreSQL
Tempo de Inserção em
Quantidade Registros
Segundos
1015
0,120
Total
1015
0,120
A tabela 9 apresenta a diferença percentual na inserção de dados da tabela
TB_PRIORIDADE_DEMANDA, nos SGBDS MySQL e PostgreSQL.
Tabela 9 - Diferença percentual no quesito inserção na TB_PRIORIDADE_DEMANDA, nos SGBDS
MySQL e PostgreSQL
TB_PRIORIDADE_DEMANDA
Lotes
MySQL
PostgreSQL
Diferença Percentual
1
0,401
0,120
PostgreSQL 234,17% + rápido
A tabela 10 apresenta o tempo em segundos, utilizado para inserção de dados na
tabela TB_STATUS_DEMANDA, no SGBD MySQL.
Tabela 10 - Quantidade de registros inseridos na tabela TB_STATUS_DEMANDA, no SGBD MySQL
TB_STATUS_DEMANDA
Lotes
1
Total
Banco de dados MySQL
Tempo de Inserção em
Quantidade Registros
Segundos
1008
0,180
1008
0,180
A tabela 11 apresenta o tempo em segundos, utilizado para inserção de dados na
tabela TB_STATUS_DEMANDA, no SGBD PostgreSQL.
63
Tabela 11 - Quantidade de registros inseridos na tabela TB_STATUS_DEMANDA, no SGBD PostgreSQL
TB_STATUS_DEMANDA
Lotes
1
Banco de dados PostgreSQL
Tempo de Inserção em
Quantidade Registros
Segundos
1008
0,060
Total
1008
0,060
A tabela 12 apresenta a diferença percentual na inserção de dados da tabela
TB_STATUS_DEMANDA, nos SGBDS MySQL e PostgreSQL.
Tabela 12 - Diferença percentual no quesito inserção na TB_STATUS_DEMANDA, nos SGBDS MySQL e
PostgreSQL
TB_STATUS_DEMANDA
Lotes
MySQL
PostgreSQL
Diferença Percentual
1
0,180
0,060
PostgreSQL 200,00% + rápido
A tabela 13 apresenta o tempo em segundos, utilizado para inserção de dados na
tabela TB_UF, no SGBD MySQL.
Tabela 13 - Quantidade de registros inseridos na tabela TB_UF, nos SGBD MySQL
TB_UF
Lotes
1
Banco de dados MySQL
Tempo de Inserção em
Quantidade Registros
Segundos
827
0,270
Total
827
0,270
A tabela 14 apresenta o tempo em segundos, utilizado para inserção de dados na
tabela TB_UF, no SGBD PostgreSQL.
Tabela 14 - Quantidade de registros inseridos na tabela TB_UF, nos SGBD PostgreSQL
TB_UF
Lotes
1
Banco de dados PostgreSQL
Tempo de Inserção em
Quantidade Registros
Segundos
827
0,050
Total
827
0,050
A tabela 15 apresenta a diferença percentual na inserção de dados da tabela TB_UF,
nos SGBDS MySQL e PostgreSQL.
64
Tabela 15 - Diferença percentual no quesito inserção na TB_UF, nos SGBDS MySQL e PostgreSQL
TB_UF
Lotes
MySQL
PostgreSQL
Diferença Percentual
1
0,270
0,050
PostgreSQL 440,00% + rápido
A tabela 16 apresenta o tempo em segundos, utilizado para inserção de dados na
tabela TB_USUARIO, no SGBD MySQL.
Tabela 16 - Quantidade de registros inseridos na tabela TB_USUARIO, no SGBD MySQL
TB__USUARIO
Lotes
1
Banco de dados MySQL
Tempo de Inserção em
Quantidade Registros
Segundos
18.000
1,953
2
18.000
2,864
3
18.000
1,833
4
18.000
Total
72.000
1,973
8,623
A tabela 17 apresenta o tempo em segundos, utilizado para inserção de dados na
tabela TB_USUARIO, no SGBD PostgreSQL.
Tabela 17 - Quantidade de registros inseridos na tabela TB_USUARIO, no SGBD PostgreSQL
TB_USUARIO
Lotes
1
Banco de dados PostgreSQL
Tempo de Inserção em
Quantidade Registros
Segundos
18.000
2,804
2
18.000
2,313
3
18.000
2,734
4
18.000
Total
72.000
2,754
10,605
A tabela 18 apresenta a diferença percentual na inserção de dados da tabela
TB_USUARIO, nos SGBDS MySQL e PostgreSQL.
65
Tabela 18 - Diferença percentual no quesito inserção na TB_USUARIO, nos SGBDS MySQL e
PostgreSQL
TB_USUARIO
Lotes
PostgreSQL
Diferença Percentual
1,953
2,804
MySQL 30,35% + rápido
2,864
2,313
PostgreSQL 23,82% + rápido
3
1,833
2,734
MySQL 32,96% + rápido
4
1,973
8,623
2,754
10,605
MySQL 28,36% + rápido
1
2
Total
MySQL
MySQL 18,69% + rápido
O Gráfico 1 abaixo apresenta detalhes da tabela 18, onde ocorreu a inserção dos
registros na tabela TB_USUARIO,realizadas com os 4 lotes, nos SGBDS MySQL e
PostgreSQL.
Gráfico 1- Inserção de Registros na Tabela TB_USUARIO por lotes nos SGBDS MySQL e PostgreSQL
No que diz respeito à inserção dos dados na tabela TB_USUARIO, percebesse que o
MySQL obteve um melhor desempenho diante do PostgreSQL, tendo perdido apenas na
inserção do segundo lote, onde o PostgreSQL obteve um melhor resultado com um percentual
de 23,82% mais rápido que o MySQL, sendo que na soma geral dos tempos de inserção, o
MySQL obteve um melhor resultado com um percentual de 18,69% mais rápido que o
PostgreSQL.
66
A tabela 19 apresenta o tempo em segundos, utilizado para inserção de dados na
tabela TB_DEMANDA, no SGBD MySQL.
Tabela 19 - Quantidade de registros inseridos na tabela TB_DEMANDA, no SGBD MySQL
TB_DEMANDA
Lotes
1
Banco de dados MySQL
Tempo de Inserção em
Quantidade Registros
Segundos
18.000
5,117
2
18.000
5,458
3
18.000
4
18.000
3,025
2,263
5
18.000
2,594
6
18.000
4,437
7
18.000
6,810
8
18.000
5,417
9
18.000
21,641
10
18.000
15,712
11
18.000
15,792
12
18.000
15,983
13
18.000
18,176
14
18.000
17,024
15
18.000
15,983
16
18.000
18,267
17
18.000
27,490
18
18.000
35,681
19
18.000
17,155
20
18.000
15,722
21
18.000
17,765
22
18.000
16,454
23
18.000
16,914
24
18.000
16,414
25
18.000
15,973
Total
450.000
353,267
A tabela 20 apresenta o tempo em segundos, utilizado para inserção de dados na
tabela TB_DEMANDA, no SGBD PostgreSQL.
67
Tabela 20 - Quantidade de registros inseridos por lote na tabela TB_DEMANDA, no SGBD PostgreSQL
TB_DEMANDA
Lotes
1
Banco de dados PostgreSQL
Tempo de Inserção em
Quantidade Registros
Segundos
18.000
3,946
2
18.000
3,785
3
18.000
4
18.000
24,135
9,093
5
18.000
7,409
6
18.000
7,152
7
18.000
4,410
8
18.000
7,445
9
18.000
10,873
10
18.000
6,078
11
18.000
4,437
12
18.000
8,843
13
18.000
15,102
14
18.000
10,205
15
18.000
13,058
16
18.000
7,751
17
18.000
12,518
18
18.000
8,122
19
18.000
13,552
20
18.000
13,198
21
18.000
14,891
22
18.000
10,577
23
18.000
11,369
24
18.000
17,515
25
18.000
12,277
Total
450.000
257,741
A tabela 21 apresenta a diferença percentual na inserção de dados da tabela
TB_DEMANDA, nos SGBDS MySQL e PostgreSQL.
68
Tabela 21 - Diferença em percentual de cada lote da tabela tb_demanda por SGBD
TB_DEMANDA
Lotes
PostgreSQL
Diferença Percentual
5,117
3,946
PostgreSQL 29,68% + rápido
5,458
3,785
PostgreSQL 44,20% + rápido
3,025
2,263
24,135
9,093
MySQL 87,47% + rápido
4
5
2,594
7,409
MySQL 64,99% + rápido
6
4,437
7,152
MySQL 37,96% + rápido
7
6,810
4,410
PostgreSQL 54,42% + rápido
8
5,417
7,445
MySQL 27,24% + rápido
1
2
3
MySQL
MySQL 75,11% + rápido
9
21,641
10,873
PostgreSQL 99,03% + rápido
10
15,712
6,078
PostgreSQL 158,51% + rápido
11
15,792
4,437
PostgreSQL 255,92% + rápido
12
15,983
8,843
PostgreSQL 80,74% + rápido
13
18,176
15,102
PostgreSQL 20,35% + rápido
14
17,024
10,205
PostgreSQL 66,82% + rápido
15
15,983
13,058
PostgreSQL 22,40% + rápido
16
18,267
7,751
PostgreSQL 135,67% + rápido
17
27,490
12,518
PostgreSQL 119,60% + rápido
18
35,681
8,122
PostgreSQL 339,31% + rápido
19
17,155
13,552
PostgreSQL 26,59% + rápido
20
15,722
13,198
PostgreSQL 19,12% + rápido
21
17,765
14,891
PostgreSQL 19,30% + rápido
22
16,454
10,577
PostgreSQL 55,56% + rápido
23
16,914
11,369
PostgreSQL 48,77% + rápido
24
16,414
17,515
MySQL 6,29% + rápido
25
15,973
12,277
PostgreSQL 30,11% + rápido
Total
353,267
257,741
PostgreSQL 37,06% + rápido
O Gráfico 2 apresenta detalhes da tabela 21, onde ocorreu a inserção dos registros na
tabela demanda realizadas em 25 lotes de 18.000 mil registros, nos SGBDS MySQL e
PostgreSQL,
69
Gráfico 2 - Inserção de Registros na Tabela TB_DEMANDA por lotes nos SGBDS MySQL e PostgreSQL
70
No gráfico 2 é plausível verificar que o MySQL foi superior
em relação ao
PostgreSQL em apenas 6 dos 25 lotes, no 3º,4º,5º,6º,8º e 24º, sendo que seu maior percentual
foi no 3º lote onde foi superior em 87,47%
e obteve menor percentual no 24° lote sendo
superior em apenas 6,29% em relação ao PostgreSQL
Já o PostgreSQL foi superior em relação ao MySQL nos outros 19 lotes sendo que
seu maior percentual foi no 18º lote onde foi superior em 339,31%
e obteve seu menor
percentual no 20° lote, sendo superior em apenas 19,12% em relação ao MySQL.
Na análise geral de inserção de dados na tabela TB_DEMANDA, foi verificado que
na soma total dos tempos de inserções, que o PostgreSQL foi superior em relação ao MySQL
em 37,06%.
Tabela 22 - Quantidade de registros inseridos na tabela TB_RESPONSAVEL, no SGBD MySQL
TB_RESPONSAVEL
Lotes
1
Banco de dados MySQL
Tempo de Inserção em
Quantidade Registros
Segundos
710
0,230
Total
710
0,230
A tabela 23 apresenta o tempo em segundos, utilizado para inserção de dados na
tabela TB_RESPONSAVEL, no SGBD PostgreSQL.
Tabela 23 - Quantidade de registros inseridos na tabela TB_RESPONSAVEL, no SGBD PostgreSQL
TB_RESPONSAVEL
Lotes
1
Banco de dados PostgreSQL
Tempo de Inserção em
Quantidade Registros
Segundos
710
0,570
Total
710
0,570
A tabela 24 apresenta a diferença percentual na inserção de dados da tabela
TB_RESPONSAVEL, nos SGBDS MySQL e PostgreSQL.
Tabela 24 - Diferença percentual no quesito inserção na TB_RESPONSAVEL, no SGBD MySQL
TB_RESPONSAVEL
Lotes
MySQL
PostgreSQL
Diferença Percentual
1
0,230
0,570
MySQL 59,65% + rápido
71
A tabela 25 apresenta o tempo em segundos, utilizado para inserção de dados na
tabela TB_HISTORICO_DEMANDA, no SGBD MySQL.
Tabela 25 - Quantidade de registros inseridos na tabela TB_HISTORICO_DEMANDA no SGBD MySQL
TB_HISTORICO_DEMANDA
Lotes
1
Banco de dados MySQL
Tempo de Inserção
Quantidade Registros
em Segundos
18.000
324,026
2
18.000
142,615
3
18.000
Total
54.000
359,587
826,228
A tabela 26 apresenta o tempo em segundos, utilizado para inserção de dados na
tabela TB_HISTORICO_DEMANDA, no SGBD PostgreSQL.
Tabela 26 - Quantidade de registros inseridos na tabela TB_HISTORICO_DEMANDA, no SGBD
PostgreSQL
TB_HISTORICO_DEMANDA
Lotes
1
Banco de dados PostgreSQL
Tempo de Inserção
Quantidade Registros
em Segundos
18.000
27,800
2
18.000
17,205
3
18.000
Total
54.000
30,013
75,018
A tabela 27 apresenta a diferença percentual na inserção de dados da tabela
TB_HISTORICO_DEMANDA, nos SGBDS MySQL e PostgreSQL.
Tabela 27 - Diferença percentual de cada lote da TB_HISTORICO_DEMANDA, por SGBD
TB_HISTORICO_DEMANDA
Lotes
MySQL
PostgreSQL
Diferença Percentual
1
324,026
27,800
PostgreSQL 10655,61% + rápido
2
142,615
17,205
PostgreSQL 7289,16% + rápido
3
359,587
826,228
30,013
75,018
PostgreSQL 10981,04% + rápido
Total
PostgreSQL 10013,73% + rápido
O Gráfico 3 apresenta detalhes da tabela 27, onde ocorreu a inserção dos registros na
tabela TB_HISTORICO_DEMANDA realizadas em 3 lotes de 18.000 mil registros, nos
SGBDS MySQL e PostgreSQL.
72
Gráfico 3 - Inserção de Registros na Tabela TB_HISTORICO_DEMANDA por lotes nos SGBDS MySQL
e PostgreSQL
No gráfico 3 é plausível verificar que o MySQL foi inferior em todos os 3 lotes em
relação ao PostgreSQL,chegando a ser inferior em mais de 10.981% no 3º lote, em relação ao
PostgreSQL.
Na análise geral de inserção de dados na tabela TB_HISTORICO_DEMANDA, foi
verificado que na soma total dos tempos de inserções, o PostgreSQL foi superior em relação
ao MySQL em 10.013,73%.
Na tabela 28 é apresentada a quantidade de registros pertencentes a cada tabela em
ambos os SGBDS.
73
Tabela 28 - Quantidade de registros pertencentes a cada tabela nos SGBDs
TABELA
QUANTIDADE DE REGISTROS
TB_DEMANDA
450.000
TB_USUARIO
72.000
TB_PERFIL-USUARIO
1.010
TB_SETOR
927
TB_UF
827
TB_PRIORIDADE_DEMANDA
1.015
TB_HISTORICO_DEMANDA
54.000
TB_RESONSAVEL
1.010
TB_STATUS_DEMANDA
1.008
Já na tabela 29 apresenta o tempo total gasto na inserção de dados nos SGBDS, por
tabela, bem como a diferença percentual de cada SGBD.
Tabela 29 - Tempo total de Inserção dos dados nos SGBDS, por tabela
Tabela
MySQL
PostgreSQL
Diferença Percentual
TB_PERFIL_USUARIO
0,561
0,120
PostgreSQL 367,50% + rápido
TB_SETOR
0,351
0,081
PostgreSQL 333,33% + rápido
TB_PRIORIDADE_DEMANDA
0,401
0,120
PostgreSQL 234,17% + rápido
TB_STATUS_DEMANDA
0,180
0,060
PostgreSQL 200,00% + rápido
TB_UF
0,270
0,050
PostgreSQL 440,00% + rápido
TB_USUARIO
8,623
10,605
MySQL 18,69% + rápido
353,267
0,230
257,041
0,570
PostgreSQL 37,44% + rápido
TB_RESPONSAVEL
TB_HISTORICO_DEMANDA
826,228
75,018
PostgreSQL 1001,37% + rápido
1.190,111
343.665
PostgreSQL 246,30% + rápido
TB_DEMANDA
TOTAL
MySQL 59,65% + rápido
O Gráfico 4 apresenta o resultado dos tempos totais de inserção dos dados nos
SGBDs por tabela, retirados da Tabela 29.
74
Gráfico 4 - Resultado dos testes de Insert nos SGBDS MySQL e PostgreSQL
Conforme gráfico 4, retirado da tabela 29, é presumível verificar que o MySQL foi
superior em relação ao PostgreSQL, apenas nas inserções realizadas nas tabelas
TB_USUARIO e TB_RESPONSAVEL, tendo perdido nas inserções das demais tabelas,onde
o PostgreSQL obteve um melhor desempenho.
Com o intuito de facilitar a compreensão dos testes de insert, foi criado um gráfico 5,
com informações do gráfico 4, porém em uma escala menor, sendo retirado desse gráfico as
tabelas TB_DEMANDA,TB_USUARIO e TB_HISTORICO_DEMANDA por possuírem
grande quantidade de registros.
75
Gráfico 5 - Gráfico de Inserts nos SGBDS, em menor escala.
No gráfico 5 pode-se perceber melhor a superioridade do PostgreSQL em relação ao
MySQL, com exceção da tabela TB_RESPONSAVEL, onde foi inferior em 59,65%.
4.1.2 RESULTADOS DOS TESTES DE UPDATE
Nesse quesito, foi testado o tempo que cada SGBD utilizou para realização das
alterações na base de dado. Este teste foi dividido em 6 updates, cada um foi realizado 3
vezes, tirando uma média do tempo de cada alteração.
Também serão apresentados às tabelas com as quantidades de updates realizados nos
SGBDS, tempo em segundos utilizados para realizar essas alterações, assim como o
percentual de diferença entre eles. Os print dos testes de update se encontram no Apêndice C
desse trabalho, localizado na pagina 171.
A tabela 30 apresenta a quantidade de updates realizados e seus respectivos tempos
utilizados nos SGBDS MySQL.
76
Tabela 30 – Tempo dos testes de Updates no SGBD MySQL
Teste de UPDATES
Banco de dados MySQL
Upadates
Tempo utilizado em Segundos
1
1,742
2
0,371
3
17,999
4
1,322
5
2,517
6
2,991
Total
26,942
A tabela 31 apresenta a quantidade de updates realizados e seus respectivos tempos
utilizados no SGBD PostgreSQL.
Tabela 31 - Tempo dos testes de Updates no SGBD PostgreSQL
Teste de UPDATES
Banco de dados PostgreSQL
Upadates
Tempo utilizado em Segundos
1
1,212
2
12,755
3
1,632
4
1,896
5
5,588
6
10,592
Total
33,675
A tabela 32 apresenta a diferença percentual nos updates realizados nos SGBDS
MySQL e PostgreSQL.
Tabela 32 – Diferença percentual nos teste de Update
Qtd.de
Testes
1
MySQL
PostgreSQL
Diferença Percentual
1,742
1,212
PosgreSQL 43,80 % + rápido
2
0,371
12,755
MySQL 9709,40% + rápido
3
17,999
1,632
PostgreSQL 1002,65% + rápido
4
1,322
1,896
MySQL 30,27% + rápido
5
2,517
5,588
MySQL 54,96% + rápido
6
2,991
10,592
MySQL 71,76% + rápido
Total
26,942
33,675
MySQL 19,99% + rápido
77
No Gráfico 6 apresenta os resultados da média de tempo dos updates realizados nos
SGBDs , retirados da Tabela 32.
Gráfico 6 - Resultado dos testes de Update
No gráfico 6 é plausível verificar que o MySQL foi superior
em relação ao
PostgreSQL em 4 dos 6 testes, no 2º,4º,5º e 6º, tendo perdido apenas no 1º e 3º teste, onde o
PostgreSQL obteve um melhor desempenho.
4.1.3 RESULTADOS DOS TESTES DE DELETE
Nesse quesito, foi testado o tempo que cada SGBD utilizou para remover registros na
base de dado. Este teste foi dividido em 6 Deletes,cada um foi realizado 3 vezes, tirando uma
média do tempo de cada delete.
Também serão apresentado as tabelas com as quantidades de delete realizados nos
SGBDS, tempo em segundos utilizados para realizar as exclusões, assim como o percentual
78
de diferença entre eles. Os print dos testes de delete se encontram no Apêndice D, localizados
na página 183.
A tabela 33 apresenta a quantidade de delete realizados e seus respectivos tempos
utilizados no SGBDS MySQL.
Tabela 33 – Tempo dos testes de Deletes no SGBD MySQL
Teste de DELETE
Banco de dados MySQL
Deletes
Tempo utilizado em Segundos
1
3,021
0,033
14,885
4,003
0,020
9,915
31,877
2
3
4
5
6
Total
A tabela 34 apresenta a quantidade de deletes realizados e seus respectivos tempos
utilizados no SGBD PostgreSQL.
Tabela 34 - Tempo dos testes de Deletes no SGBD PostgreSQL
Teste de DELETE
Banco de dados PostgreSQL
Deletes
Tempo utilizado em Segundos
1
0,785
0,030
0,683
0,087
0,013
0,788
2,385
2
3
4
5
6
Total
A tabela 35 apresenta a diferença percentual nos deletes realizados nos SGBDS
MySQL e PostgreSQL.
79
Tabela 35 – Diferença percentual nos testes de Delete
DELETE
MySQL
PostgreSQL
1
3,021
0,785
PostgreSQL 285,05% + rápido
2
0,033
14,885
4,003
0,020
0,030
0,683
0,087
0,013
PostgreSQL 11,11% + rápido
PostgreSQL 2080,37% + rápido
PostgreSQL 4518,46% + rápido
PostgreSQL 50,00% + rápido
9,915
31,877
0,788
2,385
PostgreSQL 1158,74% + rápido
PostgreSQL 1236,55% + rápido
3
4
5
6
Total
Diferença Percentual
No Gráfico 7 apresenta os resultados da média de tempo dos deletes realizados nos
SGBDs , retirados da Tabela 35.
Gráfico 7 - Resultado dos testes de Delete
80
No gráfico 7, pode-se verificar que o MySQL não foi superior em relação ao
PostgreSQL em nenhum dos testes de delete realizados, sendo que o PostgreSQL foi superior
em todos os testes desses quesito, obtendo uma superioridade de 1236,55% em relação ao
MYSQL.
4.1.4 RESULTADOS DOS TESTES DE SELECT
Nesse quesito, foi testado o tempo que cada SGBD utilizou para realização das
consultas na base de dado. Este teste foi dividido em oito consultas, cada uma foi realizada 3
vezes, tirando uma média do tempo de cada consulta.
Também serão apresentado ás tabelas com as quantidades de select realizados nos
SGBDS, tempo em segundos utilizados para as consultas, assim como o percentual de
diferença entre eles. Os print dos testes de select se encontram no Apêndice E, localizado na
página 192.
A tabela 36 apresenta a quantidade select realizados e seus respectivos tempos
utilizados nos SGBDS MySQL.
Tabela 36 - Tempo dos testes de Select no SGBD MySQL
Teste de Select
Banco de dados MySQL
Select
Tempo utilizado em Segundos
1
1,656
2
20,673
3
0,301
4
5
0,033
0,307
6
1,055
7
0,327
8
0,327
Total
24,679
81
A tabela 37 apresenta a quantidade de select realizados e seus respectivos tempos
utilizados no SGBD PostgreSQL.
Tabela 37 - Tempo dos testes de Select no SGBD PostgreSQL
Teste de SELECT
Banco de dados PostgreSQL
Select
Tempo utilizado em Segundos
1
1,539
2
1,484
3
0,088
4
5
0,083
0,033
6
17,337
7
1,809
8
0,114
Total
22,488
A tabela 38 apresenta a diferença percentual nos select realizados nos SGBDS
MySQL e PostgreSQL.
Tabela 38 – Diferença percentual nos testes de Select
Qtd. De
Testes
1
MySQL
PostgreSQL
Diferença Percentual
1,656
1,539
PostgreSQL 7,58% + rápido
2
20,673
1,484
PostgreSQL 1292,75% + rápido
3
0,301
0,088
PostgreSQL 240,38% + rápido
4
0,083
0,033
MySQL 60,00% + rápido
5
0,033
0,307
PostgreSQL 822,00% + rápido
6
1,055
17,337
MySQL 93,92% + rápido
7
0,327
1,809
MySQL 81,92% + rápido
8
0,327
0,114
PostgreSQL 187,68% + rápido
Total
24,679
22,488
PostgreSQL 9,74% + rápido
82
No Gráfico 8 apresenta os resultados da média de tempo das consultas que foram
realizadas nos SGBDs, retirados da Tabela 38.
Gráfico 8 - Resultado dos testes de Consultas
No gráfico 8 é plausível verificar que o MySQL foi superior em relação ao
PostgreSQL em apenas 3 dos 8 testes, no 4º, 6º e 7º, sendo que nos demais testes 1º, 2º, 3º, 5º
e 8º o PostgreSQL obteve um melhor desempenho.
4.2
ANÁLISE
Nesse tópico serão apresentadas as análises individuais e uma análise geral dos
resultados deparados na pesquisa, onde foi realizado testes de DML, (insert, delete, update,
select) nos SGBDS MySQL e PostgreSQL.
83
4.2.1 ANÁLISE TESTES DE INSERÇÃO
Nesse quesito onde foi testada a velocidade com que os registros são inseridos nos
SGBDS, após a análise da tabela 29, que se encontra na pagina 69, onde é apresentado o
tempo total de inserção de dados nas tabelas, pode-se observar que o MySQL, obteve melhor
desempenho em relação ao PostgreSQL em apenas 2 das 9 tabelas, sendo elas as tabelas
TB_USUARIO e TB_RESPONSAVEL, com os resultados de 18,69% e 59,65%
respectivamente.
Sendo que nas demais tabelas o PostgreSQL superou o MySQL, sendo que seu maior
percentual foi na tabela TB_ PERFIL-USUARIO, onde foi superior em 367,50%, e obteve
seu menor percentual na tabela TB_DEMANDA, a tabela principal com 450 mil registros, em
37,54%.
No contexto geral dos inserts, pode-se constatar que o PostgreSQL apresentou
melhor desempenho em relação ao MySQL, alcançando 246,30 % na soma total para inserção
de registros em todas as tabelas.
4.2.2 ANÁLISE TESTES DE UPDATE
Nesse quesito onde foi testada a velocidade com que os registros são alterados nos
SGBDS, após a análise da tabela 32, que se encontra na pagina 72, onde é apresentado o
tempo total de alterações de registros nos SGBDS. Pode-se observar que o MySQL obteve
melhor desempenho em relação ao PostgreSQL em 4 dos 6 testes realizados, no 2º, 4º, 5º e 6º,
sendo que seu maior percentual foi no 2º teste: 9709,40%, e obteve um menor percentual no
4°teste sendo superior em apenas 30,27% .
Já o PostgreSQL foi superior em relação ao MySQL no 1º e 3º teste, sendo que seu
maior percentual foi no 3º teste onde alcançou 1002,65%, obtendo seu menor percentual no 1°
teste, com a vantagem de 43,80% .
Na análise geral dos updates realizados nos SGBDS, foi verificado que na soma total
dos tempos, que o MySQL foi superior em relação ao PostgreSQL em 19,99%.
84
4.2.3 ANÁLISE TESTES DE DELETE
Nesse quesito onde foi testada a velocidade com que os registros são apagados nos
SGBDS, após a analise da tabela 35, que se encontra na pagina 75, onde é apresentado o
tempo total de deletes realizados nos SGBDs, pode-se observar que o MySQL, não obteve
melhor desempenho em relação ao PostgreSQL, em nenhum dos testes de delete realizado,
sendo que na soma total dos testes foi inferior em 1236,55%.
Sendo assim,no contexto geral dos testes de deletes, pode-se constatar que o
PostgreSQL foi superior em relação ao MySQL.
4.2.4 ANÁLISE TESTE DE SELECT
Nesse quesito onde foi testado o tempo que cada SGBD, utilizou para recuperar
registros no SGBDS, após a análise de dados colhidos da tabela 38, que se encontra na pagina
77, onde é apresentado o tempo total dos select realizados em todos os nos SGBD, pode-se
observar que o MySQL obteve melhor desempenho em relação ao PostgreSQL em 3 dos 8
testes, no 4º,6º e 7º, sendo que seu maior percentual foi no 6º lote chegando a 93,92%, e
obteve um menor percentual no 4° lote sendo superior em 60,00% .
Já o PostgreSQL superou o MySQL no 1º, 2º, 3º, 5 e 8º teste, sendo que seu maior
percentual foi no 2º lote com 1292,75% , já o menor percentual ocorreu no 1° lote, atingindo
uma vantagem percentual de 7,58%.
Na análise geral dos selects, realizados nos SGBDS, foi verificado que na soma total
dos tempos, que o PostgreSQL foi superior em relação ao MySQL em 9,74%.
4.2.5 ANÁLISE GERAL
A tabela 39, que se encontra na pagina 81, apresenta informações realizadas em
todos os testes realizados tanto no SGBD MySQL, quanto no PostgreSQL.
85
Testes
Realizados
Select
Update
Tabela 39 - Tabela com resultado de todos os testes realizados
Tempo total para
Tempo total para
realização dos
realização dos
Diferença Percentual
comandos no SGBD comandos no SGBD
MySQL
PostgreSQL
PostgreSQL 9,74% + rápido
24,679
22,488
33,675
MySQL 19,99% + rápido
31,877
2,385
PostgreSQL 1236,56% + rápido
1.190,111
343,605
PostgreSQL 246,36% + rápido
402,153
PostgreSQL 2166,98% + rápido
26,942
delete
Insert
1.273,609
Diferença total
Conforme dados analisados na tabela 39, que contem as informações dos testes de
DML, realizados pode-se constatar que o MySQL foi superior em relação ao PostgreSQL
apenas no testes de updade, com uma vantagem percentual de 19,99%.
Já o PostgreSQL ultrapassou o MySQL nos demais testes( insert, select,delete), com
uma vantagem de percentual de 246,36%, 9,74% e 1236,56% respectivamente. Obtendo sua
maior vantagem percentual no quesito delete, com 1236,56% de superioridade em relação ao
MySQL. E a menor vantagem no quesito de select onde foi superior em apenas 9,74% em
relação ao MySQL, conforme gráfico 9 retirado da tabela 39.
Gráfico 9 - Resultado geral dos testes realizados
86
No contexto geral pode-se observar que o PostgreSQL obteve melhor desempenho
em relação ao MySQL, em 3 dos 4 testes realizados e que na soma geral, obteve uma margem
percentual de 2.166,98%.
Portanto, após análise geral dos dados, pode-se apurar a superioridade do
PostgreSQL, em relação ao MySQL, diante dos testes realizados.
Neste Capítulo foram apresentados resultados e analise desse trabalho, onde foram
apresentados os resultados dos testes de laboratórios e uma análise detalhada e geral dos
mesmos, assim como a analise de tempo realizada nos testes.
No próximo capítulo será apresentada a conclusão, onde descreve as respostas de que
se a hipótese foi aceita ou refutada, se os resultados almejados foram alcançados, bem como
uma sugestão para trabalhos futuros.
87
5.
CONCLUSÃO
Com o aumento e a procura no significativo no mercado de trabalho por um banco de
dados capaz de suprir as necessidades dos usuários, e diante da gama de bancos disponíveis,
este trabalho apresentou dois SGBDs, o MySQL e o PostgreSQL.
Foram apresentadas algumas características peculiares destes bancos, como o tempo
de resposta, no momento de execução dos comandos DML (Insert, Select, Update e delete).
Fundamentado nisso, o trabalho de conclusão realizou um teste de desempenho entre
o MySQL e o PostgreSQL, com a finalidade de saber qual tem o melhor desempenho.
Após análise da pesquisa literária e dos resultados obtidos, constatou-se que o
problema era saber qual SGBD possui melhor desempenho na realização dos comandos
delete, update, insert e select, quando aplicados a um modelo lógico retirado de um Sistema
Gerenciador de Demandas.
Esse problema foi sanado, pois mediante conclusão dos resultados apresentados,
constatou-se que nesse ambiente de teste, o PostgreSQL evidenciou um melhor desempenho
em relação ao MySQL.
A hipótese levantada neste trabalho de que o MySQL possui um melhor desempenho
em relação ao PostgreSQL foi refutada, uma vez que os resultados apresentados nesse
trabalho demonstraram que o PostgreSQL é o que possui um melhor desempenho em relação
ao MySQL.
O presente estudo exibiu 03 objetivos específicos:
O primeiro objetivo era apresentar algumas características peculiares dos SGBDs
MySQL e PostgreSQL, que foi alcançado de acordo com a pesquisa bibliográfica retiradas
dos autores Manzano,Neto,Anderson,Cremades,Gilfillan e outros.
O segundo objetivo específico, que era realizar um teste de desempenho em
laboratório utilizando a linguagem SQL, quanto à execução de comandos DML (inserção,
inclusão, alteração e Exclusão), foi almejado conforme resultados contidos nos gráficos 1 a 9.
O terceiro objetivo, que procurava analisar o tempo de respostas na execução dos
comandos DML aplicados, também foi alcançado, conforme resultados obtidos nos gráficos 1
a 9.
88
Dessa forma os objetivos específicos apresentados nesse trabalho de conclusão foram
apresentados, uma vez que a pesquisa bibliográfica apresentou algumas características
inerentes aos SGBDs MySQL e PostgreSQL. Bem como a realização de um teste de
desempenho entre os dois SGBDs, visando identificar qual possui melhor desempenho. Por
fim, realizou-se uma análise dos dados colhidos nos testes.
O objetivo geral do trabalho também foi atingido, uma vez que foi realizado o teste
de desempenho com os SGBDs MySQL e PostgreSQL, utilizando-se diferentes cargas de
dados na execução dos comandos de DML.
Logo após a análise de dados dos resultados obtidos nos testes de DML, constatou-se
que o SGBD PostgreSQL, obteve um melhor desempenho em relação ao MySQL.
Ressaltando que os testes foram realizados em ambientes controlados, e que no
ambiente de produção existem vários fatores que podem interferir no desempenho de um
SGBD, tais como a quantidade de usuários acessando-o ao mesmo tempo, a infraestrutura do
tráfego de rede, o Hardware que compõe esse ambiente, etc. Portanto, o desempenho de um
SGBD não depende unicamente dele, mais sim das condições do ambiente em que foi
realizado o teste.
Para se escolher um SGBD adequado para sua empresa ou outro fim, além de
analisar esses fatores, deve-se considerar que o melhor SGBD é aquele que atende as
necessidades do usuário da melhor maneira possível.
Para trabalhos futuros recomendaria que essa análise fosse realizada em outro
sistema operacional, de preferência o LINUX, ou mesmo em máquinas não virtualizada.
Ou que fosse aumentado o limite do -O max_allowed_packet=# que tem o tamanho
padrão de1 MB para 8 MB, para que os registros fossem inseridos de uma só vez e não em
lotes com foi realizado nesse trabalho.
89
REFERÊNCIAS
ANDERSON, Christiano. Software Livre não é Grátis! Revista Linux Magazine.
Ano I, nº1, ago. 2004, p. 94.
BATTISTI, Julio César Fabris. Noções da Linguagem SQL para consultas 2006.
Disponível em: <http://www.linhadecodigo.com.br/Artigo. aspx?id=165.> Acesso em 21 Set
2012.
BORBA
ON
SOFTWARE
O
fim
do
MySQL.
em:<http://borba.blog.br/2012/08/o-fim-do-mysql/>Acesso em 10 de Abr. 2013.
Disponível
BAÚ DE DEV.COM Para que servem os índices?. Disponível em <http://www.bau-dedev.com/banco-de-dados/utilizando-indices-em-tabelas-no-postgresql>. Acesso em 08 de
Abr. 2013.
B2BR PostgreSQL :Quem usa, o que diz a respeito? .Disponível
<http://www.slideshare.net/adorepump/postgresql-o-melhor-banco-de-dados-universo>
Acesso em 11 de Abr. 2013.
em:
CANTU, Carlos H. Firebird essencial. Rio de Janeiro: Ciência Moderna, 2005.
CONVERTWORD.COM
Milissegundo,
Tempo
Disponível
em:
<http://www.convertworld.com/pt/tempo/Milissegundo.html> Acesso em 09 de Abr. 2013.
CREMADES, Javier. Micro Poder: a força do cidadão na era digital. Editora: Senac. São
Paulo. 2009.
DATAPRIX KNOWLEDGE IS THE GOL Arquitetura PostgreSQL. Disponível em:
<http://www.dataprix.com/72-arquitectura-PostgreSQL>. Acesso em 16 de Nov 2012.
DATE, J. C. Introdução a Sistemas de Bancos de Dados. Tradução da 7a. Edição
Americana, Rio de Janeiro. Campus, 2000.
DATE, C. J. Introdução a sistemas de bancos de dados. Tradução de Daniel Vieira.
Tradução da 8º Edição Americana ed.[S.1.]: Elsevier Editora Ltda, 2004.
DEVMEDIA. Componente de um Sistema de Banco de Dados. Disponível em:
<http://www.devmedia.com.br/conceitos-fundamentais-de-banco-de-dados/1649> Acesso em
23 de Set 2012.
E
DER.
Disponível
em:<http://www.devmedia.com.br/mer-e_______MER
der/14332#ixzz2CExbRDud>Acesso em 14 de Nov 2012.
90
_______Herança no PostgreSQL. Disponível em:<http://www.devmedia.com.br/heranca-nopostgresql/9182> Acesso em 23 Abr. 2013.
três
Esquemas.
Disponível
em:
_______Arquitetura
<http://www.devmedia.com.br/arquitetura-de-um-sgbd/25007 > Acesso em 23 de Set 2012.
x
MySQL.
Qual
Escolher?
Disponível
em:
http://www.devmedia.com.br/PostgreSQL-x-MySQL-qual-escolher/3923> Acesso em 18 de
Fev 2013.
_______PostgreSQL
MySQL que é você?. Disponível em <http://www.devmedia.com.br/mysql-quem-evoce/1752>Acesso em 11 de Abr. 2013.
_______
E-KNOWLEDGE.
MDR
Chave
Estrangeira Disponível em:
Acesso em 27 de Set 2012.
<http://e-reality-
database.blogspot.com/2007/12/chave-estrangeira.html>
Chave
Primária
Disponível
em:
<http://e-reality_______MDR
database.blogspot.com.br/2007/12/chave-primria.html> Acesso em 14 de Mar 2013.
_______Modelo Entidade Relacionamento - MER - Peter Chen – 1976. Disponível em:
<http://e-reality-database.blogspot.com.br/2007/09/modelo-entidade-relacionamento-mer.html>Acesso em 16
de Nov 2012.
GARCIA-MOLINA, Hector, ULLMAN, Jeffrey D. e WIDOM, Jennifer. Implementação
de sistemas de bancos de dados. Rio de Janeiro: Campus, 2001.
GAUDENCIO, Emerson S. CERTIFICAÇÃOBD.COM. BR Estruturas de Memória
Disponível
em:
<http://certificacaobd.com.br/2013/03/01/mysql-srie-de-posts-6-teoriaestruturas-de-memria/> Acesso em 25 de Mar 2013.
GILFILLAN, I. La Bíblia MySQL. 1ª Edição. ed. [S.l.]: Anaya Multimedia, 2003.
INFOWESTER
Banco
de
dados
MySQL
e
PostgreSQL
<http://www.infowester.com/postgreMySQL. php> Acesso em 15 de Nov.2012.
iMASTERS ORACLE lança a primeira versão de desenvolvimento do MySQL 5.6.
Disponível
em:<
http://imasters.com.br/noticia/oracle-lanca-primeira-versao-dedesenvolvimento-do-mysql-56/> Acesso em 11 de Abr. 2013.
KROENKE, David M. Banco de Dados: Fundamentos, Projeto e Implementação. 6ª. Ed.
Rio de Janeiro: LTC, 1999.
LAUDON, K.C.; LAUDON, J.P., 2004, Sistemas de Informação Gerenciais. 5. ed. São
Paulo, Prentice-Hall Inc.
LINHA DE CÓDIGO Programação de Banco de Dados 3 Disponível
em:<http://www.linhadecodigo.com.br/artigo/404/programacao-de-banco-de-dados-parte-3.aspx> Acesso em
12 de Mar. 2013.
91
MACHADO, F.N. R; ABREU M Projeto de Banco de Dados: Uma Visão Prática. São
Paulo: Érica 1995.
MELO, R.N; SILVA, S.D.; TANAKA, A.K., 1997, Banco de Dados em Aplicações
Cliente-Servidor. 2. ed. Rio de Janeiro, Livraria e Editora Infobook S. A, 2004.
METROPOLE
DIGITAL
Sistemas
de
Banco
de
Dados
Disponível
em<http://www.metropoledigital.ufrn.br/aulas_avancado/web/disciplinas/banco_de_dados/aul
a_01.html> Acesso em 03 de Mar. 2013.
MySQL. Anúncio publicitário. Revista Linux Magazine. Ano II, nº6, jan. 2005, p. 2.
MILANI, A. MySQL Guia do Programador. 1ª Edição. ed. [S.l.]: Novatec, 2006.
MySQL DevConnectMember Banco de dados II. OLIVEIRA, GILBERTO BRAGA
Disponivél em <http://gilbertexbom.com/bd2/ResumoBD2_3InfoT/html_mysql/mysql.html> Acesso em
28 de Mar 2013.
NAVATHE, S.; ELMASRI, R. E. Sistemas de Banco de Dados. 4ª Edição. ed. [S.l.]:
ADDISON WESLEY, 2005.
NAVATHE, S.; ELMASRI, R. E. Sistemas de Banco de Dados. 6ª Edição. ed. [S.l.]:
ADDISON WESLEY, 2011.
NETO, A.P. “PostgreSQL: Técnicas Avançadas – Versões Open Source 7.x” .2ª
ed. São Paulo: Editora Érica, 2003.
OFFICE Calcular a Percentagem. Disponivel em <http://office.microsoft.com/pt-pt/excelhelp/calcular-percentagens-HP001141712.aspx> Aceso em 22 Abr 2013
OLIVEIRA, C. H. P., SQL – Curso Prático. São Paulo, Novatec, 2002.
PORTAL DA EDUCAÇÃO. Artigos de Informática Introdução ao MYSQL Disponível
em:<http://www.portaleducacao.com.br/informatica/artigos/7725/introducao-ao-MySQL>
Acesso em 23 de Set.2012.
POSTGRESQL GLOBAL DEVELOPMENT GROUP. “Tutorial do PostgreSQL 8 /Official
Documentation”. Tradução: Halley Pacheco de Oliveira. Rio de Janeiro,
2005. Disponível em: <http://www.PostgreSQL.org/>. Acesso em 14 de Nov 2012.
POSTGRESQL Kit de imprensa do PostgresSQL 9.2 Disponível
<http://www.postgresql.org/about/press/presskit92/pt/>Acesso em 11 de Abr.2013
em
PRODANOV, C; FREITAS, E. C.Metodologia do Trabalho Cientifico: Metodologia e
Técnicas da Pesquisa e do Trablho Acadêmico.2ª Edição. Ed – NOVO HAMBURGO
FEEVALE, 2013.
92
RICARTE, Ivan Luiz Marques. Sistemas de bancos de dados. Faculdade de Engenharia
Elétrica e de Computação, Unicamp, Campinas, 2008. Disponível em :
<ftp://ftp.dca.fee.unicamp.br/pub/docs/ricarte/apostilas/mc_sbdoo.pdf > Acesso em 15 Set
2012.
ROCHA, Banco de dados Web Aula 4. Linguagem SQL.Disponivel em
<http://www.lrocha.com.br/arquivos/arquivos/BdWeb%20(PostgreSQL)/AULAS/bd_webA_
4.pdf>. Acesso em 12 de Mar. 2013.
SETZER, Valdemar W. Bancos de dados: aprenda o que são, melhore seu conhecimento,
construa os seus. São Paulo: Edgard Blücher, 2005.
SILBERSCHATZ, A. KORTH, H. SUDARSHAN, S. Sistema de Bancos de Dados. 4 ed.
São Paulo: Makron Books, 2006.
TAKAI, O. K.; ITALIANO, I. C.; FERREIRA, J. E. Introdução ao banco de Dados. São
Paulo: DCC-IME-USP, 2005.
TANENBAUM, Andrew S. Redes de Computadores. Rio de Janeiro: Campus, 2000.
TSICHRITZIS, D. & KLUG, A. (eds.). “The ANSI/X3/SPARC DBMS framework report
of the study group on database management systems”. Information Systems 3, 1978.
WELLING, L. e THOMSON, L. Tutorial MySQL Rio de Janeiro, Editora Ciência
Moderna, 2004.
WILLIANS, H. E., TAHAGHOGHI, M. M. S. Aprendendo MySQL, 1.ª Edição, Editora
Alta Books, 2007.
XOOPS
Brasil,
A.2.2.
Erro: MySQL
server
has
gone
<http://xoops.net.br/docs/mysql/manual/apas02.php> Acesso em 21 de Ma. 2013.
away
93
APÊNDICE A – AMOSTRA DOS SCRIPTS UTILIZADOS PARA INSERÇÃO DE
DADOS NOS SGBDS
Neste apêndice serão apresentados uma amostra dos registros inseridos nos SGBDS
MySQL e PostgreSQL, sendo que os demais registros estarão disponíveis em cd no apêndice
F, localizado na página 208 uma vez que ficaria inviável por exemplo, colocar os 450 mil
registros da tabela TB_DEMANDA, nesse apêndice.
94
Na figura abaixo é apresentado uma amostra dos registros inseridos na tabela
TB_PERFIL_USUARIO:
AMOSTRA DE REGISTROS INSERIDOS NA TABELA TB_PERFIL_USUARIO
INSERT INTO TB_PERFIL_USUARIO (ID_PERFIL, TIPO_PERFIL) VALUES
('1','CADASTRADOR'),
('2','ADMINISTRADOR.'),
('3','EXECUTOR'),
('4','DOLOR'),
('5','IACULIS QUIS,'),
('6','NEC URNA'),
('7','AUCTOR QUIS,'),
('8','DONEC DIGNISSIM'),
('9','CONGUE,'),
('10','SENECTUS ET'),
Na figura abaixo é apresentado uma amostra dos registros inseridos na tabela
TB_PRIORIDADE_DEMANDA:
AMOSTRA DE REGISTROS INSERIDOS NA TABELA
TB_PRIORIDADE_DEMANDA
INSERT INTO TB_PRIORIDADE_DEMANDA
(ID_PRIORIDADE_DEMANDA,TIPO_PRIORIDADE) VALUES
('1','ALTA'),
('2','MEDIA'),
('3','BAIXA'),
('4','IN'),
('5','PLACERAT. CRAS'),
('6','SED CONSEQUAT'),
('7','LIGULA CONSECTETUER'),
('8','ALIQUET'),
('9','ORCI LOBORTIS'),
('10','NULLA EGET'),
Na figura abaixo é apresentado uma amostra dos registros inseridos na tabela
TB_STATUS_DEMANDA:
95
AMOSTRA DE REGISTROS INSERIDOS NA TABELA TB_STATUS_DEMANDA
INSERT INTO TB_STATUS_DEMANDA (ID_STATUS,STATUS) VALUES
('1','EM ANDAMENTO.'),
('2','PENDENTE'),
('3','CONCLUIDA'),
('4','NEC, ELEIFEND'),
('5','FAUCIBUS'),
('6','NUNC'),
('7','NEC,'),
('8','ET NETUS');
('9','LIBERO EST,'),
('10','PORTTITOR EROS'),
Na figura abaixo é apresentado uma amostra dos registros inseridos na tabela
TB_UF:
AMOSTRA DE REGISTROS INSERIDOS NA TABELA TB_UF
INSERT INTO TB_UF (ID_UF,NOME_UF) VALUES
('1','ACRE - AC'),
('2','ALAGOAS - AL'),
('3','AMAPÁ - AP'),
('4','AMAZONAS - AM'),
('5','BAHIA - BA'),
('6','CEARÁ - CE'),
('7','DISTRITO FEDERAL - DF'),
('8','ESPÍRITO SANTO - ES'),
('9','GOIÁS - GO'),
('10','MARANHÃO - MA'),
Na figura abaixo é apresentado uma amostra dos dados inseridos na tabela
TB_USUARIO:
AMOSTRA DE REGISTROS INSERIDOS NA TABELA TB_USUARIO
INSERT INTO TB_USUARIO
(ID_USUARIO,CPF_USUARIO,ID_PERFIL,ID_SETOR,LOGIN_USUARIO,NOME_US
UARIO,SENHA_USUARIO,RAMAL_USUARIO) VALUES
('1','82710715809','199','880','JERRY OLSON','LANCE','OZK33TNK6SZ','1013'),
('2','79045868917','564','251','HARLAN PECK','TANISHA','TAL09OHG0IB','5400'),
('3','53820448562','736','75','NIGEL ROMAN','LUCIUS','BQJ35AQF8ZW','7007'),
('4','35457460408','246','113','IGNATIUS LONG','ANTHONY','FCW55WLP4IH','3830'),
('5','49582672335','370','109','TATE RANDOLPH','LAEL','DNZ46ECF4DR','0625'),
('6','40936799267','801','248','STEEL BALLARD','SAMANTHA','IDF74QEF3DE','8181'),
('7','62430816968','464','886','JOSIAH KELLER','COURTNEY','XGZ23WMN2YS','5958'),
('8','36370644793','826','515','ZANE CONRAD','YURI','LVP77WPE2CW','1394'),
('9','89489203617','453','655','ALAN TREVINO','JARROD','JSP23OGS7JV','1458'),
('10','66817973669','404','860','HU STEPHENSON','JORDEN','QPJ23UTM2GW','4860'),
96
Na figura abaixo é apresentado uma amostra dos dados inseridos na tabela
TB_RESPONSAVEL:
AMOSTRA DE REGISTROS INSERIDOS NA TABELA TB_RESPONSAVEL
INSERT INTO TB_RESPONSAVEL (ID_RESPONSAVEL,ID_USUARIO) VALUES
('1','60674'),
('2','64868'),
('3','39452'),
('4','31008'),
('5','58977'),
('6','64473'),
('7','18842'),
('8','20980'),
('9','32390'),
('10','14999'),
Na figura abaixo é apresentado uma amostra dos dados inseridos na tabela
TB_SETOR:
AMOSTRA DE REGISTROS INSERIDOS NA TABELA TB_SETOR
INSERT INTO TB_SETOR (ID_SETOR,ID_UF,NOME_SETOR) VALUES
(1,4,'RH'),
(2,2,'DILID'),
(3,5,'DIOFI'),
(4,19,'NUTRA'),
(5,9,'SECAD'),
(6,26,'COPOL'),
(7,15,'COINT'),
(8,16,'COAFI'),
(9,12,'GABIN'),
(10,6,'NTIC'),
Na figura abaixo é apresentado uma amostra dos dados inseridos na tabela
TB_DEMANDA:
97
AMOSTRA DE DADOS INSERIDOS NA TABELA TB_DEMANDA
INSERT INTO TB_DEMANDA (ID_DEMANDA, ID_USUARIO,
ID_PRIORIDADE_DEMANDA, ID_RESPONSAVEL, ID_STATUS,
DATA_HORA_CRIACAO, DATA_HORA_CONCLUSAO, ASSUNTO,
OBSERVACAO) VALUES
('1','49839','681','98','794','2019-10-12 18:27:40','2017-02-04 11:59:55','PEDE
AC','IPSUM'),
('2','54532','407','609','843','2017-10-10 23:26:35','2018-12-07
22:28:34','RUTRUM','ALIQUET'),
('3','15913','569','294','2','2014-03-07 02:43:31','2015-05-01
21:49:02','ADIPISCING.','MALESUADA VEL,'),
('4','59981','914','394','35','2013-04-29 13:11:43','2016-11-19
16:44:36','DOLOR.','FEUGIAT. LOREM'),
('5','24737','172','23','691','2013-10-14 14:17:04','2019-01-18
10:56:49','TELLUS','FACILISIS, MAGNA'),
('6','36181','121','423','708','2019-05-14 16:08:14','2016-05-31 23:34:57','VEL,','DUIS'),
('7','4312','505','706','844','2015-12-06 16:55:44','2016-06-23 12:11:22','A
PURUS.','PEDE, ULTRICES'),
('8','55130','57','696','845','2016-06-17 23:20:31','2018-10-01
03:40:12','ARCU','CURABITUR'),
('9','26636','552','214','461','2014-12-10 03:57:28','2018-11-18 22:16:02','VIVAMUS
NISI.','NEC, EUISMOD'),
('10','44829','722','502','447','2017-05-27 18:09:53','2018-11-23
14:57:05','MOLESTIE','A,'),
Na figura abaixo é apresentado uma amostra dos dados inseridos na tabela
TB_HISTORICO_DEMANDA;
AMOSTRA DE DADOS INSERIDOS NA TABELA TB_HISTORICO_DEMANDA
INSERT INTO TB_HISTORICO_DEMANDA (ID_HISTORICO, ID_DEMANDA,
ID_RESPONSAVEL, ID_STATUS, NOME_HISTORICO, DATA_HORA_CRIACAO,
DATA_HORA_CONCLUSAO, OBSERVACAO) VALUES
('1','309101','43','239','MAURIS,','2015-11-04 14:43:39','2014-06-23
16:40:28','FRINGILLA ORNARE'),
('2','107543','314','949','SED','2017-02-24 07:54:46','2016-12-02 17:46:36','ALIQUET
DIAM.'),
('3','397019','409','159','FELIS ULLAMCORPER','2017-06-10 09:48:12','2015-04-03
20:07:39','MAGNA NEC'),
('4','230727','265','721','ET MAGNIS','2019-10-28 10:55:44','2017-09-05
02:09:58','AENEAN'),
('5','330909','22','895','SCELERISQUE,','2017-04-26 02:04:16','2017-07-17
16:38:11','ODIO'),
('6','90020','451','670','MASSA.','2020-01-06 09:03:29','2018-11-20 13:18:02','QUISQUE
VARIUS.'),
('7','126590','184','121','DOLOR','2017-06-10 00:28:14','2020-04-05 02:05:08','VEL,'),
('8','214522','274','249','TINCIDUNT ADIPISCING.','2018-04-17 11:18:59','2018-11-05
01:34:57','PEDE.'),
('9','179572','43','140','TRISTIQUE SENECTUS','2016-12-13 13:03:50','2014-06-02
10:20:57','NUNC MAURIS'),
('10','331774','448','894','ARCU','2018-06-23 16:35:01','2016-12-28 17:52:54','VIVAMUS
98
APÊNDICE B – PRINT DOS INSERTS DAS TELAS DOS SGBDS MYSQL E
POSTGRESQL
Neste apêndice encontram-se prints das telas dos SGBDS mostrando o resultado dos
tempos de inserção nas tabelas assim como telas do comando select count para identificar a
quantidade de registros inseridos em cada tabela.
Vale apena ressaltar que as tabela que possuem maior quantidade de registros
tiveram suas inserções divididas em lote devido ao problema de estouro do buffer de memória
já explicado anteriormente.
99
1. MYSQL
INSERT TB_PERFIL_USUARIO
Temo utilizado para
inserção de dados na
tabela perfil_usuario
A figura acima apresenta o tempo de 0,561 segundos utilizados para inserção de
registros na tabela TB_PERFIL_USUARIO no banco de dados MySQL.
SELECT COUNT TB_PERFIL_USUARIO
Quantidade de
registros inseridos na
tabela perfil_usuario
A figura acima apresenta a quantidade de 1010 registros inseridos na tabela
TB_PERFIL_USUARIO no banco de dados MySQL.
100
INSERT TB_PRIORIDADE_DEMANDA
Temo utilizado para
inserção de dados na tabela
Prioridade demanda
A figura acima apresenta o tempo de 0,401 segundos, utilizado para inserção de
registros na tabela TB_PRIORIDADE_DEMANDA no banco de dados MySQL.
SELECT COUNT TB_PRIORIDADE_DEMANDA
Quantidade de registros
inseridos na tabela
prioridade demanda
A figura acima apresenta a quantidade de 1015 registros inseridos na tabela
TB_PRIORIDADE_DEMANDA no banco de dados MySQL.
101
INSERT TB_SETOR
Temo utilizado para
inserção de dados na
tabela setor
A figura acima apresenta o tempo de 0.351 segundos utilizados para inserção de
registros na tabela TB_SETOR no banco de dados MySQL.
SELECT COUNT TB_SETOR
Quantidade de registros
inseridos na tabela setor
A figura acima apresenta a quantidade de 927 registros inseridos na tabela
TB_SETOR no banco de dados MySQL.
102
INSERT TB_STATUS_DEMANDA
Temo utilizado para
inserção de dados na
tabela status demanda
A figura acima apresenta o tempo de 0,180 segundos utilizados para inserção de
registros na tabela TB_STATUS_DEMANDA no banco de dados MySQL.
SELECT COUNT TB_STATUS_DEMANDA
Quantidade de
registros inseridos na
tabela status demanda
A figura acima apresenta a quantidade de 1008 registros inseridos na tabela
TB_STATUS_DEMANDA no banco de dados MySQL.
103
INSERT TB_UF
Temo utilizado para
inserção de dados na
tabela uf
A figura acima apresenta o tempo de 0.270 segundos utilizado para inserção de
registros na tabela TB_UF no banco de dados MySQL.
SELECT COUNT TB_UF
Quantidade de
registros inseridos na
tabela uf
A figura acima apresenta a quantidade de 827 registros inseridos na tabela TB_UF no
banco de dados MySQL.
104
INSERT TB_RESPONSAVEL
Temo utilizado para
inserção de dados na
tabela responsavel
A figura acima apresenta o tempo de 0,230 segundos utilizado para inserção de
registros na tabela TB_RESPONSAVEL no banco de dados MySQL.
SELECT COUNT TB_RESPONSAVEL
Quantidade de
registros inseridos na
tabela responsavel
A figura acima apresenta a quantidade de 10 registros inseridos na tabela
TB_RESPONSAVEL no banco de dados MySQL.
105
1 º LOTE DE INSERT TB_USUARIO
Temo utilizado para
inserção de dados na
tabela usuario
A figura acima apresenta o tempo de 1,953 segundos utilizado para inserção de
registros na tabela TB_USUARIO no banco de dados MySQL.
SELECT COUNT TB_USUARIO
Quantidade de registros
inseridos no 1° lote da
tabela usuario
A figura acima apresenta a quantidade de 18.000 registros inseridos na tabela
TB_USUARIO no banco de dados MySQL.
106
2 º LOTE DE INSERT TB_USUARIO
Temo utilizado para
inserção de dados na
tabela usuario
A figura acima apresenta o tempo de 2,864 segundos utilizado para inserção de
registros na tabela TB_USUARIO no banco de dados MySQL.
SELECT COUNT TB_USUARIO
Quantidade de registros
inseridos na tabela
usuário após a inserção
do 2º lote
A figura acima apresenta a quantidade de mais 18 registros inseridos na tabela
TB_USUARIO no banco de dados MySQL, totalizando 36.000 registros.
107
3 º LOTE DE INSERT TB_USUARIO
Temo utilizado para
inserção de dados na
tabela usuario
A figura acima apresenta o tempo de 1,833 segundos utilizado para inserção de
registros na tabela TB_USUARIO no banco de dados MySQL.
SELECT COUNT TB_USUARIO
Quantidade de
registros inseridos na
tabela usuário após a
inserção do 3º lote
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_USUARIO no banco de dados MySQL, totalizando 54mil registros.
108
4 º LOTE DE INSERT TB_USUARIO
Temo utilizado para
inserção de dados na
tabela usuario
A figura acima apresenta o tempo de 1,973 segundos utilizado para inserção de
registros na tabela TB_USUARIO no banco de dados MySQL.
SELECT COUNT TB_USUARIO
Quantidade Total de
registros inseridos na
tabela usuario
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_USUARIO no banco de dados MySQL, totalizando 72 mil registros.
109
1 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção de dados na
tabela demanda
A figura acima apresenta o tempo de 5,117 segundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados MySQL.
SELECT COUNT TB_DEMANDA
Quantidade de registros
inseridos no 1° lote da
tabela demanda
A figura acima apresenta a quantidade de 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados MySQL.
110
2 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção de dados na
tabela demanda
A figura acima apresenta o tempo de 5,458 segundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados MySQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 2° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados MySQL, totalizando 36.000 registros.
111
3 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção de dados na
tabela demanda
A figura acima apresenta o tempo de 3,025 segundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados MySQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 3° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados MySQL, totalizando 54.000 registros.
112
4 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção de dados na
tabela demanda
A figura acima apresenta o tempo de 2,263 segundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados MySQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 4° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados MySQL, totalizando 72.000 registros.
113
5 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção de dados na
tabela demanda
A figura acima apresenta o tempo de 2.594 segundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados MySQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 5° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados MySQL, totalizando 90.000 registros.
114
6 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção de dados na
tabela demanda
A figura acima apresenta o tempo de 4,437 segundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados MySQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 6° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados MySQL, totalizando 108.00 registros.
115
7 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção de dados na
tabela demanda
A figura acima apresenta o tempo de 6,810 segundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados MySQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 7° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados MySQL, totalizando 126.000 registros.
116
8 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção de dados na
tabela demanda
A figura acima apresenta o tempo de 5,417 segundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados MySQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 8° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados MySQL, totalizando 144.000 registros.
117
9 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção de dados na
tabela demanda
A figura acima apresenta o tempo de 21,641 segundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados MySQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 9° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados MySQL, totalizando 162.000 registros.
118
10 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção de dados na
tabela demanda
A figura acima apresenta o tempo de 15,712 segundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados MySQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 10° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados MySQL, totalizando 180.000 registros.
119
11 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção de dados na
tabela demanda
A figura acima apresenta o tempo de 15,792 segundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados MySQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 11° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados MySQL, totalizando 198.000 registros
120
12 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção de dados na
tabela demanda
A figura acima apresenta o tempo de 15,983 segundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados MySQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 12° lote de 18.000
.
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados MySQL, totalizando 216.000 registros.
121
13 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção de dados na
tabela demanda
A figura acima apresenta o tempo de 18,176 segundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados MySQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 13° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados MySQL, totalizando 234.000 registros.
122
14 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção de dados na
tabela demanda
A figura acima apresenta o tempo de 17,024 segundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados MySQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 14° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados MySQL, totalizando 252.000 registros.
123
15 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção de dados na
tabela demanda
A figura acima apresenta o tempo de 15,983 segundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados MySQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 15° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados MySQL, totalizando 270.000 registros
124
16 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção de dados na
tabela demanda
A figura acima apresenta o tempo de 18,267 segundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados MySQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 16° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados MySQL, totalizando 288.000 registros.
125
17º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção de dados na
tabela demanda
A figura acima apresenta o tempo de 27,490 segundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados MySQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 17° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados MySQL, totalizando 306.000 registros.
126
18 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção de dados na
tabela demanda
A figura acima apresenta o tempo de 355,681 segundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados MySQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 18° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados MySQL, totalizando 324.000 registros.
127
19 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção de dados na
tabela demanda
A figura acima apresenta o tempo de 17,155 segundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados MySQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 19° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados MySQL, totalizando 342.000 registros.
128
20 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção de dados na
tabela demanda
A figura acima apresenta o tempo de 15,722 segundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados MySQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 20° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados MySQL, totalizando 360.000 registros.
129
21 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção de dados na
tabela demanda
A figura acima apresenta o tempo de 17,765 segundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados MySQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 21° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados MySQL, totalizando 378.000 registros.
130
22º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção de dados na
tabela demanda
A figura acima apresenta o tempo de 16,454 segundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados MySQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 22° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados MySQL, totalizando 396.000 registros.
131
23 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção de dados na
tabela demanda
A figura acima apresenta o tempo de 16,914 segundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados MySQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 23° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados MySQL, totalizando 414.000 registros.
132
24º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção de dados na
tabela demanda
A figura acima apresenta o tempo de 16,414 segundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados MySQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 24° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados MySQL, totalizando 432.000 registros.
133
25º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção de dados na
tabela demanda
A figura acima apresenta o tempo de 15,973 segundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados MySQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda.
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados MySQL, totalizando 450.000 registros.
134
1 º LOTE DE INSERT TB_HISTORICO_DEMANDA
Temo utilizado para
inserção de dados na
tabela histórico
demanda
A figura acima apresenta o tempo de 324,026 segundos utilizado para inserção de
registros na tabela TB_HISTORICO_DEMANDA no banco de dados MySQL.
SELECT TB_HISTORICO_DEMANDA
Quantidade de registros
inseridos na tabela historico
demanda após a inserção do
1° lote de 18.000
A figura acima apresenta a quantidade de 18.000 registros inseridos na tabela
TB_HISTORICO_DEMANDA no banco de dados MySQL.
135
2 º LOTE DE INSERT TB_HISTORICO_DEMANDA
Temo utilizado para
inserção de dados na
tabela histórico
demanda
A figura acima apresenta o tempo de 142,615 segundos utilizado para inserção de
registros na tabela TB_HISTORICO_DEMANDA no banco de dados MySQL.
SELECT TB_HISTORICO_DEMANDA
Quantidade de registros
inseridos na tabela historico
demanda após a inserção do
2° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_HISTORICO_DEMANDA no banco de dados MySQL, totalizando 36.000 registros.
136
3 º LOTE DE INSERT TB_HISTORICO_DEMANDA
Temo utilizado para
inserção de dados na
tabela histórico
demanda
A figura acima apresenta o tempo de 359,587 segundos utilizado para inserção de
registros na tabela TB_HISTORICO_DEMANDA no banco de dados MySQL.
SELECT TB_HISTORICO_DEMANDA
Quantidade de registros
inseridos na tabela historico
demanda após a inserção do
3° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_HISTORICO_DEMANDA no banco de dados MySQL, totalizando 54.000 registros.
137
2. POSTGRESQL
INSERT TB_PERFIL_USUARIO
Temo utilizado para
inserção de dados na
tabela perfil usuario
A figura acima apresenta o tempo de 0,120 milissegundos utilizados para inserção de
registros na tabela TB_PERFIL_USUARIO no banco de dados PostgreSQL.
SELECT COUNT TB_PERFIL_USUARIO
Quantidade de registros
inseridos na tabela Perfil
usuario
A figura acima apresenta a quantidade de 1010 registros inseridos na tabela
TB_PERFIL_USUARIO no banco de dados PostgreSQL.
138
INSERT TB_PRIORIDADE_DEMANDA
Temo utilizado para
inserção de dados na tabela
prioridade demanda
A figura acima apresenta o tempo de 120 milissegundos utilizados para inserção de
registros na tabela TB_PRIORIDADE_DEMANDA no banco de dados PostgreSQL.
SELECT COUNT TB_PRIORIDADE_DEMANDA
Quantidade de registros
inseridos na tabela
prioridade demanda
A figura acima apresenta a quantidade de 1015 registros inseridos na tabela
TB_PRIORIDADE_DEMANDA no banco de dados PostgreSQL.
139
INSERT TB_STATUS_DEMANDA
Temo utilizado para
inserção de dados na
tabela status demanda
A figura acima apresenta o tempo 60 milissegundos utilizados para inserção de
registros na tabela TB_STATUS_DEMANDA no banco de dados PostgreSQL.
SELECT COUNT TB_STATUS_DEMANDA
Quantidade de registros
inseridos na tabela
status demanda
A figura acima apresenta a quantidade de 1008 registros inseridos na tabela
TB_STATUS_DEMANDA no banco de dados PostgreSQL.
140
INSERT TB_UF
Temo utilizado para
inserção de dados na
tabela uf
A figura acima apresenta o tempo de 50 milissegundos utilizados para inserção de
registros na tabela TB_UF no banco de dados PostgreSQL.
SELEC COUNT TB_UF
Quantidade de registros
inseridos na tabela uf
A figura acima apresenta a quantidade de 827 registros inseridos na tabela TB_UF no
banco de dados PostgreSQL.
141
INSERT TB_SETOR
Temo utilizado para
inserção de dados na
tabela setor
A figura acima apresenta o tempo de 81 milissegundos utilizados para inserção de
registros na tabela TB-SETOR no banco de dados PostgreSQL.
SELECT COUNT TB_SETOR
Quantidade de registros
inseridos na tabela setor
A figura acima apresenta a quantidade de 927 registros inseridos na tabela
TB_SETOR no banco de dados PostgreSQL.
142
INSERT TB_RESPONSAVEL
Temo utilizado para
inserção de dados na
tabela responsavel
A figura acima apresenta o tempo de 570 milissegundos utilizado para inserção de
registros na tabela TB_RESPONSAVEL no banco de dados PostgreSQL.
SELECT COUNT TB_RESPONSAVEL
Quantidade de registros
inseridos na tabela
responsavel
A figura acima apresenta a quantidade de 710 registros inseridos na tabela
TB_RESPONSAVEL no banco de dados PostgreSQL.
143
1 º LOTE DE INSERT TB_USUARIO
Temo utilizado para
inserção do 1°lote na
tabela usuario
A figura acima apresenta o tempo de 2.804 milissegundos utilizado para inserção de
registros na tabela TB_USUARIO no banco de dados PostgreSQL.
SELECT COUNT TB_USUARIO
Quantidade de registros
inseridos na tabela
usuário no 1° lote de
18.000
A figura acima apresenta a quantidade de 18.00 registros inseridos na tabela
TB_USUARIO no banco de dados PostgreSQL.
144
2 º LOTE DE INSERT TB_USUARIO
Temo utilizado para
inserção do 2°lote na
tabela usuario
A figura acima apresenta o tempo de 2.313 milissegundos utilizado para inserção de
registros na tabela TB_USUARIO no banco de dados PostgreSQL.
SELECT COUNT TB_USUARIO
Quantidade total de
registros da tabela
usuário após a inserção
do 2° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_USUARIO no banco de dados PostgreSQL, totalizando 36.000 registros.
145
3 º LOTE DE INSERT TB_USUARIO
Temo utilizado para
inserção do 3°lote na
tabela usuario
A figura acima apresenta o tempo de 2.964 milissegundos utilizado para inserção de
registros na tabela TB_USUARIO no banco de dados PostgreSQL.
SELECT COUNT TB_USUARIO
Quantidade total de
registros da tabela
usuário após a inserção
do 3° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_USUARIO no banco de dados PostgreSQL, totalizando 54.000 registros.
146
4 º LOTE DE INSERT TB_USUARIO
Temo utilizado para
inserção do 4°lote na
tabela usuario
A figura acima apresenta o tempo de 2.754 milissegundos utilizado para inserção de
registros na tabela TB_USUARIO no banco de dados PostgreSQL.
SELECT COUNT TB_USUARIO
Quantidade total de
registros da tabela
usuário
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_USUARIO no banco de dados PostgreSQL, totalizando 72.000 registros
147
1 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção do 1°lote na
tabela demanda
A figura acima apresenta o tempo de 3.946 milissegundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados PostgreSQL.
SELECT COUNT TB_DEMANDA
A figura acima apresenta a quantidade de 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados PostgreSQL.
148
2 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção do 2°lote na
tabela demanda
A figura acima apresenta o tempo de 3.765 milissegundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados PostgreSQL.
SELECT COUNT TB_DEMANDA
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados PostgreSQL, totalizando 36.000.
149
3 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção do 3°lote na
tabela demanda
A figura acima apresenta o tempo de 24.135 milissegundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados PostgreSQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 3° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados PostgreSQL, totalizando 54.000
150
4 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção do 4°lote na
tabela demanda
A figura acima apresenta o tempo de 9.093 milissegundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados PostgreSQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 4° lote de 18.000
figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados PostgreSQL, totalizando 72.000
151
5 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção do 5°lote na
tabela demanda
A figura acima apresenta o tempo de 7.409 milissegundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados PostgreSQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 5° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados PostgreSQL, totalizando 90.000
152
6 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção do 6°lote na
tabela demanda
A figura acima apresenta o tempo de 7.152 milissegundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados PostgreSQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 6° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados PostgreSQL, totalizando 108.000
153
7 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção do 7°lote na
tabela demanda
A figura acima apresenta o tempo de 4.410 milissegundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados PostgreSQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 7° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados PostgreSQL, totalizando 126.000
154
8 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção do 8°lote na
tabela demanda
A figura acima apresenta o tempo de 7.445 milissegundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados PostgreSQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 8° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados PostgreSQL, totalizando 144.000
155
9 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção do 9°lote na
tabela demanda
A figura acima apresenta o tempo de 10.873 milissegundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados PostgreSQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 9° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados PostgreSQL, totalizando 162.000.
156
10 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção do 10°lote na
tabela demanda
A figura acima apresenta o tempo de 6.078 milissegundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados PostgreSQL.
Quantidade total de
registros da tabela
demanda após a inserção
do 10° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados PostgreSQL, totalizando 180.000
157
11 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção do 11°lote na
tabela demanda
A figura acima apresenta o tempo de 4.437 milissegundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados PostgreSQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 11° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados PostgreSQL, totalizando 198.000
158
12 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção do 12°lote na
tabela demanda
A figura acima apresenta o tempo de 8.843 milissegundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados PostgreSQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 12° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados PostgreSQL, totalizando216.000
159
13 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção do 13°lote na
tabela demanda
A figura acima apresenta o tempo de 15.102 milissegundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados PostgreSQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 13° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados PostgreSQL, totalizando 234.000
160
14 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção do 14°lote na
tabela demanda
A figura acima apresenta o tempo de 10.205 milissegundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados PostgreSQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 14° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados PostgreSQL, totalizando 252.000
161
15 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção do 15°lote na
tabela demanda
A figura acima apresenta o tempo de 13.058 milissegundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados PostgreSQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 15° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados PostgreSQL, totalizando 270.000
162
16 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção do 16°lote na
tabela demanda
A figura acima apresenta o tempo de 7.751 milissegundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados PostgreSQL
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 16° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados PostgreSQL, totalizando 288.000
163
17 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção do 17°lote na
tabela demanda
A figura acima apresenta o tempo de 12.518 milissegundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados PostgreSQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 17° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados PostgreSQL, totalizando 306.000
164
18 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção do 18°lote na
tabela demanda
A figura acima apresenta o tempo de 8.122 milissegundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados PostgreSQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 18° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados PostgreSQL, totalizando 324.000
165
19 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção do 19°lote na
tabela demanda
A figura acima apresenta o tempo de 13.552 milissegundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados PostgreSQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do19° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados PostgreSQL, totalizando 342.000
166
20 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção do 20°lote na
tabela demanda
A figura acima apresenta o tempo de 13.198 milissegundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados PostgreSQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 20° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados PostgreSQL, totalizando 360.000
167
21 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção do 21°lote na
tabela demanda
A figura acima apresenta o tempo de 14.891 milissegundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados PostgreSQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 21° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados PostgreSQL, totalizando 378.000
168
22 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção do 22°lote na
tabela demanda
A figura acima apresenta o tempo de 10.577 milissegundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados PostgreSQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 22° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados PostgreSQL, totalizando 396.000
169
23 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção do 23°lote na
tabela demanda
A figura acima apresenta o tempo de 11.369 milissegundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados PostgreSQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 24° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados PostgreSQL, totalizando 414.000
170
24º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção do 24°lote na
tabela demanda
A figura acima apresenta o tempo de 17.515 milissegundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados PostgreSQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 24° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados PostgreSQL, totalizando 432.000
171
25 º LOTE DE INSERT TB_DEMANDA
Temo utilizado para
inserção do 25°lote na
tabela demanda
A figura acima apresenta o tempo de 12.277 milissegundos utilizado para inserção de
registros na tabela TB_DEMANDA no banco de dados PostgreSQL.
SELECT COUNT TB_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 25° lote de 18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados PostgreSQL, totalizando 450.000
172
1 º LOTE DE INSERT TB_HISTORICO_DEMANDA
Temo utilizado para
inserção do 1°lote na
tabela historico demanda
A figura acima apresenta o tempo de 27.800 milissegundos utilizado para inserção de
registros na tabela TB_HISTORICO_DEMANDA no banco de dados PostgreSQL.
SELECT TB_HISTORICO_DEMANDA
Quantidade total de
registros da tabela
demanda após a inserção
do 1° lote de 18.000
A figura acima apresenta a quantidade de 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados PostgreSQL.
173
2 º LOTE DE INSERT TB_HISTORICO_DEMANDA
Temo utilizado para
inserção do 2°lote na
tabela demanda
A figura acima apresenta o tempo de 17.205 milissegundos utilizado para inserção de
registros na tabela TB_HISTORICO_DEMANDA no banco de dados PostgreSQL.
SELECT TB_HISTORICO_DEMANDA
Quantidade total de registros
da tabela histórico demanda
após a inserção do 2° lote de
18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados PostgreSQL, totalizando 36.000
174
3 º LOTE DE INSERT TB_HISTORICO_DEMANDA
Temo utilizado para
inserção do 3°lote na
tabela historico demanda
A figura acima apresenta o tempo de 30.013 milissegundos utilizado para inserção de
registros na tabela TB_HISTORICO_DEMANDA no banco de dados PostgreSQL.
SELECT TB_HISTORICO_DEMANDA
Quantidade total de
registros da tabela
histórico demanda após a
inserção do 3° lote de
18.000
A figura acima apresenta a quantidade de mais 18.000 registros inseridos na tabela
TB_DEMANDA no banco de dados PostgreSQL, totalizando 54.000
175
APÊNDICE C - PRINT DOS TESTES DE UPDATES REALIZADOS NOS SGBDS
MYSQL E POSTGRESQL
1 MYSQL
1º TESTE DE UPDATE REALIZADO NO SGBD MYSQL
Temos utilizados para
realização dos três
updade no 1º teste
A figura acima apresenta os tempos de 1,883, 1,702 e 1,642 segundos, utilizados
para realização dos updates no 1º teste no SGBD MySQL.
2º TESTE DE UPDATE REALIZADO NO SGBD MYSQL
Temos utilizados para
realização dos três
updade no 2º teste
A figura acima apresenta os tempos de 0,691, 0,180 e 0,241 segundos, utilizados
para realização dos updates no 2º teste no SGBD MySQL.
176
3º TESTE DE UPDATE REALIZADO NO SGBD MYSQL
Temos utilizados para
realização dos três
updade no 3º teste
A figura acima apresenta os tempos de 19,588, 17,605 e 16,804 segundos, utilizados
para realização dos updates no 3º teste no SGBD MySQL.
4º TESTE DE UPDATE REALIZADO NO SGBD MYSQL
Temos utilizados para
realização dos três
updade no 4º teste
A figura acima apresenta os tempos de 1,733 0,931 e 1,302 segundos, utilizados para
realização dos updates no 4º teste no SGBD MySQL.
177
5º TESTE DE UPDATE REALIZADO NO SGBD MYSQL
Temos utilizados para
realização dos três
updade no 5º teste
A figura acima apresenta os tempos de 2,734, 2,684 e 2,133 segundos, utilizados
para realização dos updates no 5º teste no SGBD MySQL.
6º TESTE DE UPDATE REALIZADO NO SGBD MYSQL
Temos utilizados para
realização dos três
updade no 6º teste
A figura acima apresenta os tempos de 3,785, 2,644 e 2,544 segundos, utilizados
para realização dos updates no 6º teste no SGBD MySQL.
178
POSTGRESQL
No PostgreSQL cada update realizado foi retirado três prints, um para cada update
realizado,devido ao fato de não ser possível printar o histórico dos três updates.
1º UPDATE DO TESTE 1
Temos utilizado para
realização do 1° update
do teste 1
A figura acima apresenta o tempo de 2063 milissegundos utilizados para realização
do 1° update no teste 1.
2º UPDATE DO TESTE 1
Temos utilizado para
realização do 2° update
do teste 1
A figura acima apresenta o tempo de 751 milissegundos utilizados para realização do
2° update no teste 1.
179
3º UPDATE DO TESTE 1
Temos utilizado para
realização do 3° update
do teste 1
A figura acima apresenta o tempo de 821 milissegundos utilizados para realização do
3° update no teste 1
1º UPDATE DO TESTE 2
Temos utilizado para
realização do 1° update
do teste 2
A figura acima apresenta o tempo de 37754 milissegundos utilizados para realização
do 1° update no teste 2
180
2º UPDATE DO TESTE 2
Temos utilizado para
realização do 2° update
do teste 2
A figura acima apresenta o tempo de 191 milissegundos utilizados para realização do
2° update no teste 2.
3º UPDATE DO TESTE 2
Temos utilizado para
realização do 3° update
do teste 2
A figura acima apresenta o tempo de 191 milissegundos utilizados para realização do
3° update no teste 2.
181
1º UPDATE DO TESTE 3
Temos utilizado para
realização do 1° update
do teste 3
A figura acima apresenta o tempo de 4677 milissegundos utilizados para realização
do 1° update no teste 3.
2º UPDATE DO TESTE 3
Temos utilizado para
realização do 2° update
do teste 3
A figura acima apresenta o tempo de 120 milissegundos utilizados para realização do
2° update no teste 3.
182
3º UPDATE DO TESTE 3
Temos utilizado para
realização do 3° update
do teste 3
A figura acima apresenta o tempo de 100 milissegundos utilizados para realização do
3° update no teste 3.
1º UPDATE DO TESTE 4
Temos utilizado para
realização do 1° update
do teste 4
A figura acima apresenta o tempo de 3435 milissegundos utilizados para realização
do 1° update no teste 4.
183
2º UPDATE DO TESTE 4
Temos utilizado para
realização do 2° update
do teste 4
A figura acima apresenta o tempo de 1181 milissegundos utilizados para realização
do 2° update no teste 4.
3º UPDATE DO TESTE 4
Temos utilizado para
realização do 3° update
do teste 4
A figura acima apresenta o tempo de 1072 milissegundos utilizados para realização
do 3° update no teste 4.
184
1º UPDATE DO TESTE 5
Temos utilizado para
realização do 1° update
do teste 5
A figura acima apresenta o tempo de 10355 milissegundos utilizados para realização
do 1° update no teste 5.
2º UPDATE DO TESTE 5
Temos utilizado para
realização do 2° update
do teste 5
A figura acima apresenta o tempo de 2634 milissegundos utilizados para realização
do 2° update no teste 5.
185
3º UPDATE DO TESTE 5
Temos utilizado para
realização do 3° update
do teste 5
A figura acima apresenta o tempo de 3776 milissegundos utilizados para realização
do 3° update no teste 5.
1º UPDATE DO TESTE 6
Temos utilizado para
realização do 1° update
do teste 6
A figura acima apresenta o tempo de 5658 milissegundos utilizados para realização
do 1° update no teste 6.
186
2º UPDATE DO TESTE 6
Temos utilizado para
realização do 2° update
do teste 6
A figura acima apresenta o tempo de 18828 milissegundos utilizados para realização
do 2° update no teste 6.
3º UPDATE DO TESTE 6
Temos utilizado para
realização do 3° update
do teste 6
A figura acima apresenta o tempo de 7290 milissegundos utilizados para realização
do 3° update no teste 6.
187
APÊNDICE D – PRINT DOS TESTES DE DELETE NOS SGBDS MYSQL E
POSTGRESQL
MYSQL
1º TESTE DE DELETE NO SGBD MYSQL
Tempos utilizados para
realização dos três
DELETE no teste 1
A figura acima apresenta os tempos de 2,734, 3,055 e 3,275 segundos, utilizados
para realização dos DELETE no 1º teste no SGBD MySQL.
2º TESTE DE DELETE NO SGBD MYSQL
Tempos utilizados para
realização dos três
DELETE no teste 2
A figura acima apresenta os tempos de 0,050, 0,000 e 0,010 segundos, utilizados
para realização dos delete no 2º teste no SGBD MySQL.
188
3º TESTE DE DELETE NO SGBD MYSQL
Tempos utilizados para
realização dos três
DELETE no teste 3
A figura acima apresenta os tempos de 36,223, 4,466 e 3,965 segundos, utilizados
para realização do delete no 3º teste no SGBD MySQL.
4º TESTE DE DELETE NO SGBD MYSQL
Tempos utilizados para
realização dos três
DELETE no teste 4
A figura acima apresenta os tempos de 5,488, 3,876 e 2,644 segundos, utilizados
para realização do delete no 3º teste no SGBD MySQL.
189
5º TESTE DE DELETE NO SGBD MYSQL
Tempos utilizados para
realização dos três
DELETE no teste 5
A figura acima apresenta os tempos de 0040, 0,010 e 0,010 segundos, utilizados para
realização do delete no 5º teste no SGBD MySQL.
6º TESTE DE DELETE NO SGBD MYSQL
Tempos utilizados para
realização dos três
DELETE no teste 6
A figura acima apresenta os tempos de 24,396, 2,654 e 2,694 segundos, utilizados
para realização do delete no 6º teste no SGBD MySQL.
190
POSTGRESQL
1º E 2º TEMPO DE DELETE DO TESTE 1
1º Tempo utilizado
para realização do
1º delete no teste 1
2º Tempo utilizado
para realização do
1º delete no teste 1
A figura acima apresenta dois tempos em milissegundos: O 1º tempo de 2173 e o 2º
tempo de 90, utilizados para realização do 1º delete no teste 1
3º TEMPO DE DELETE DO TESTE 1
3º Tempo utilizado
para realização do
1º delete no teste 1
A figura acima apresenta o tempo de 91 milissegundos utilizados para realização do
1° delete no teste 1.
191
1º e 2º TEMPO DE DELETE DO TESTE 2
1º Tempo utilizado
para realização do
2º delete no teste 2
2º Tempo utilizado
para realização do
2º delete no teste 2
A figura acima apresenta dois tempos em milissegundos: O 1º tempo de 70 e o 2º
tempo de 10, utilizados para realização do 1º e 2º delete no teste 2
3º TEMPO DE DELETE DO TESTE 2
3º Tempo utilizado
para realização do
2º delete no teste 2
A figura acima apresenta o 3º tempo de 10 milissegundos, utilizados para realização
do 3º delete no teste 2.
192
1º E 2º TEMPO DE DELETE DO TESTE 3
1º Tempo utilizado
para realização do
3º delete no teste 3
2º Tempo utilizado
para realização do
3º delete no teste 3
A figura acima apresenta dois tempos em milissegundos: O 1º tempo de 1535 e o 2º
tempo de 220, utilizados para realização do 1º e 2º delete no teste 3
3º TEMPO DE DELETE DO TESTE 3
3º Tempo utilizado
para realização do
3º delete no teste 3
A figura acima apresenta o 3º tempo de 293 milissegundos, utilizados para realização
do 3º delete no teste 3.
193
1º E 2º TEMPO DE DELETE DO TESTE 4
1º Tempo utilizado
para realização do
4º delete no teste 4
2º Tempo utilizado
para realização do
4º delete no teste 4
A figura acima apresenta dois tempos em milissegundos: O 1º tempo de 80 e o 2º
tempo de 110, utilizados para realização do 1º e 2º delete no teste 4
3º TEMPO DE DELETE DO TESTE 4
3º Tempo utilizado
para realização do
4º delete no teste 4
A figura acima apresenta o 3º tempo de 70 milissegundos, utilizados para realização
do 3º delete no teste 4.
194
1º E 2º TEMPO DE DELETE DO TESTE 5
1º Tempo utilizado
para realização do 5º
delete no teste 5
2º Tempo utilizado
para realização do 5º
delete no teste 5
A figura acima apresenta dois tempos em milissegundos: O 1º tempo de 10 e o 2º
tempo de 20, utilizados para realização do 1º e 2º delete no teste 5
3º TEMPO DE DELETE DO TESTE 5
3º Tempo utilizado
para realização do 5º
delete no teste 5
A figura acima apresenta o 3º tempo de 10 milissegundos, utilizados para realização
do 3º delete no teste 5.
195
1º E 2º TEMPO DE DELETE DO TESTE 6
1º Tempo utilizado
para realização do 6º
delete no teste 6
2º Tempo utilizado
para realização do 6º
delete no teste 6
A figura acima apresenta dois tempos em milissegundos: O 1º tempo de 1502 e o 2º
tempo de 491, utilizados para realização do 1º e 2º delete no teste 6.
3º TEMPO DE DELETE DO TESTE 6
3º Tempo utilizado
para realização do 6º
delete no teste 6
A figura acima apresenta o 3º tempo de 370 milissegundos, utilizados para realização
do 3º delete no teste 6.
196
APÊNDICE E – PRINT DOS TESTES DE SELECT NOS SGBDS MYSQL E
POSTGRESQL
MYSQL
1º TESTE DE SELECT NO SGBD MYSQL
Temos utilizados para
realização dos três select
no 1º teste
A figura acima apresenta os tempos de 2,784, 1,472 e 0,701 segundos, utilizados
para realização dos select no 1º teste no SGBD MySQL.
2º TESTE DE SELECT NO SGBD MYSQL
Temos utilizados para
realização dos três select
no 2º teste
A figura acima apresenta os tempos de 19,177, 21,090 e 21,752 segundos, utilizados
para realização dos select no 2º teste no SGBD MySQL.
197
3º TESTE DE SELECT NO SGBD MYSQL
Temos utilizados para
realização dos três select
no 3º teste
A figura acima apresenta os tempos de 0,881, 0,011 e 0,010 segundos, utilizados
para realização dos select no 3º teste no SGBD MySQL.
4º TESTE DE SELECT NO SGBD MYSQL
Temos utilizados para
realização dos três select
no 4º teste
A figura acima apresenta os tempos de 0,090, 0,000, e 0,010 segundos, utilizados
para realização dos select no 4º teste no SGBD MySQL.
198
5º TESTE DE SELECT NO SGBD MYSQL
Temos utilizados para
realização dos três select
no 5º teste
A figura acima apresenta os tempos de 0,912, 0,010, 0,000 segundos, utilizados para
realização dos select no 5º teste no SGBD MySQL.
6º TESTE DE SELECT NO SGBD MYSQL
Temos utilizados para
realização dos três select
no 6º teste
A figura acima apresenta os tempos de 3,124, 0,020, e 0,020 segundos, utilizados
para realização dos select no 6º teste no SGBD MySQL.
199
7º TESTE DE SELECT NO SGBD MYSQL
Temos utilizados para
realização dos três select
no 7º teste
A figura acima apresenta os tempos de 0,961, 0,010, e 0,010 segundos, utilizados
para realização dos select no 7º teste no SGBD MySQL.
8º TESTE DE SELECT NO SGBD MYSQL
Temos utilizados para
realização dos três select
no 8º teste
A figura acima apresenta os tempos de 0,971, 0,010, e 0,000 segundos, utilizados
para realização dos select no 8º teste no SGBD MySQL.
200
POSTGRESQL
1º E 2º TEMPO DE SELECT DO TESTE 1
1º Tempo utilizado para
realização do 1º select no
teste 1
2º Tempo utilizado para
realização do 1º select no
teste 1
A figura acima apresenta dois tempos em milissegundos: O 1º tempo de 2163 e o 2º
tempo de 1222, utilizados para realização do 1º e 2º select no teste 1
3º TEMPO DE SELECT DO TESTE 1
3º Tempo utilizado para
realização do 1º select no
teste 1
A figura acima apresenta o 3º tempo de 1232 milissegundos, utilizados para
realização do 3º select no teste 1.
201
1º e 2º TEMPO DE SELECT DO TESTE 2
1º Tempo utilizado para
realização do 1º select no
teste 2
2º Tempo utilizado para
realização do 1º select no
teste 2
A figura acima apresenta dois tempos em milissegundos: O 1º tempo de 2067 e o 2º
tempo de 1212 utilizados para realização do 1º e 2º select no teste 2.
3º TEMPO DE SELECT DO TESTE 2
3º Tempo utilizado para
realização do 1º select no
teste 2
A figura acima apresenta o 3º tempo de 1174 milissegundos, utilizados para
realização do 3º select no teste 2.
.
202
1º e 2º TEMPO DE SELECT DO TESTE 3
1º Tempo utilizado para
realização do 1º select no
teste 3
2º Tempo utilizado para
realização do 1º select no
teste 3
A figura acima apresenta dois tempos em milissegundos: O 1º tempo de 189 e o 2º
tempo de 38, utilizados para realização do 1º e 2º select no teste 3.
3º TEMPO DE SELECT DO TESTE 3
3º Tempo utilizado para
realização do 1º select no
teste 3
A figura acima apresenta o 3º tempo de 38 milissegundos, utilizados para realização
do 3º select no teste 3.
203
1º e 2º TEMPO DE SELECT DO TESTE 4
1º Tempo utilizado para
realização do 1º select no
teste 4
2º Tempo utilizado para
realização do 1º select no
teste 4
A figura acima apresenta dois tempos em milissegundos: O 1º tempo de 140 e o 2º
tempo de 60, utilizados para realização do 1º e 2º select no teste 4.
3º TEMPO DE SELECT DO TESTE 4
3º Tempo utilizado para
realização do 1º select no
teste 4
A figura acima apresenta o 3º tempo de 50 milissegundos, utilizados para realização
do 3º select no teste 4.
204
1º e 2º TEMPO DE SELECT DO TESTE 5
1º Tempo utilizado para
realização do 1º select no
teste 5
2º Tempo utilizado para
realização do 1º select no
teste 5
A figura acima apresenta dois tempos em milissegundos: O 1º tempo de 30 e o 2º
tempo de 40, utilizados para realização do 1º e 2º select no teste 5.
3º TEMPO DE SELECT DO TESTE 5
3º Tempo utilizado para
realização do 1º select no
teste 5
A figura acima apresenta o 3º tempo de 30 milissegundos, utilizados para realização
do 3º select no teste 5.
205
1º e 2º TEMPO DE SELECT DO TESTE 6
1º Tempo utilizado para
realização do 1º select no
teste 6
2º Temo utilizado para
realização do 1º select no
teste 6
A figura acima apresenta dois tempos em milissegundos: O 1º tempo de 13776 e o 2º
tempo de 15614, utilizados para realização do 1º e 2° select no teste 6.
3º TEMPO DE SELECT DO TESTE 6
3º Temo utilizado para
realização do 1º select no
teste 6
A figura acima apresenta o 3º tempo de 22622 milissegundos, utilizados para
realização do 3º select no teste 6.
206
1º e 2º TEMPO DE SELECT DO TESTE 7
1º Tempo utilizado para
realização do 1º select no
teste 7
2º Tempo utilizado para
realização do 1º select no
teste 7
A figura acima apresenta dois tempos em milissegundos: O 1º tempo de 1532 e o 2º
tempo de 2443, utilizados para realização do 1º e 2º select no teste 7.
3º TEMPO DE SELECT DO TESTE 7
3º Tempo utilizado para
realização do 1º select no
teste 7
A figura acima apresenta o 3º tempo de 1452 milissegundos, utilizados para
realização do 3º select no teste 7.
207
1 e 2º TEMPO DE SELECT DO TESTE 8
1º Tempo utilizado para
realização do 1º select no
teste 8
2º Tempo utilizado para
realização do 1º select no
teste 8
A figura acima apresenta dois tempos em milissegundos: O 1º tempo de 251 e o 2º
tempo de 40, utilizados para realização do 1º e 2º select no teste 8.
3º TEMPO DE SELECT DO TESTE 8
3º Tempo utilizado para
realização do 1º select no
teste 8
A figura acima apresenta o 3º tempo de 50 milissegundos, utilizados para realização
do 3º select no teste 8.
208
APÊNDICE F – CD COM OS REGISTROS UTILIZADOS PARA INSERÇÃO DE
DADOS NAS TABELAS
Download

TCC FINAL POS BANCA