O sistema da banco de dados PostgreSQL é com certeza um dos melhores bancos de dados do mercado.
Mas aonde o mesmo roda melhor ? Seria em servidores rodando LINUX ou servidores rodando Windows ?
Segundo o ditado “Mata a cobra e mostra o pau” eu prefiro “mostrar a cobra morta”.
Pois bem para isto realizei testes de desempenho em um hardware de boa qualidade para tirar as minhas conclusões, e mostrar aos homens de pouca fé o quanto o LINUX é melhor.
Nestes testes o hardware utilizado tinha as seguintes características:
PROCESSADOR INTEL GOLD G6405
PLACA MÃE ASUS H510M-C
16gb MEMÓRIA DDR4 KEEPDATA
HD NVME 1tb Kingspec (WHITH CACHE)(Obs: Este modelo de ssd Chines possuiu memória cache e um ótimo desempenho)
Os testes foram feitos usando o pgbench que é uma ferramenta para teste benchmark do PostgreSQL.
# Teste 1 Windows
No primeiro teste o computador foi formatado com Windows 10 Pro. Todos os drivers da placa mãe foram instalados e todas as atualizações do Windows foram aplicadas. Nenhum software adicional foi instalado.
A versão do PostgreSQL utilizada foi a 9.5 devido ao fato de atender uma empresa de software que a utiliza para o seu sistema e eu forneço suporte.
postgresql-9.5.25-1-windows-x64.exe
A instalação do PostgreSQL foi a padrão e o únicos ajustes feitos foram permitir o acesso sem senha para 127.0.0.1 no arquivo “pg_hba.conf” e aumentar o parâmetro “shared buffers” para 2gb no arquivo “postgresql.conf”.
Feito isto primeiramente foi criando uma base da dados com o nome “teste”.
Depois realizei a população desta base da dados com o comando abaixo:
pgbench -U postgres -h 127.0.0.1 -i -s 500 teste
Com esta base de dados devidamente populada os testes foram realizados com o comando abaixo:
pgbench -U postgres -h 127.0.0.1 -c 10 -j 2 -t 10000 teste
Realizei 3 testes na sequencia e os valores de INCLUSÃO e EXCLUSÃO obtidos na sequência foram.:
WINDOWS 10 | ||
INCLUSÃO | EXCLUSÃO | |
1 | 3419 | 3423 |
2 | 3262 | 3265 |
3 | 3802 | 3806 |
MÉDIA | 3494 | 3498 |
Link das imagens dos 3 testes realizados.
teste windows 1
teste windows 2
teste windows 3
# Teste 2 Linux (DEBIAN)
Neste teste o computador foi reinstalado usando o Linux Debian 12.
A instalação foi feita com o instalador em modo texto selecionando pacotes básicos sem interface gráfica + servidor ssh.
O PostgreSQL usado foi a versão binária do postgresql-9.5 para Debian 64 fornecida no site do PostgreSQL através dos repositórios do
http://apt.postgresql.org.
Para instalar esta versão foi adicionado o repositório do site oficial do PostgreSQL. Para isto faça como no exemplo abaixo.
apt install gnupg2
echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - apt-get update apt-get -y install postgresql-9.5
Os testes feitos usaram os mesmos parâmetros do teste no windows.
Primeiro vamos conectar no postgres como no exemplo abaixo.
psql -U postgres -h 127.0.0.1 -d template1
Agora vamos criar a base de dados de teste.
create database teste
Agora vamos popular a base de teste.
pgbench -U postgres -h 127.0.0.1 -i -s 500 teste
E agora vamos realizar o teste.
time pgbench -U postgres -h 127.0.0.1 -c 10 -j 2 -t 10000 teste
Também foram realizados 3 testes na sequencia e os valores de INCLUSÃO e EXCLUSÃO obtidos foram.:
LINUX (PostgreSQL Apt Repository) | ||
INCLUSÃO | EXCLUSÃO | |
1 | 3627 | 3628 |
2 | 4049 | 4050 |
3 | 4170 | 4171 |
MÉDIA | 3949 | 3950 |
Comparando as médias dos testes no Windows o Postgres rodando no Linux foi 13% mais eficiente.
Link das imagens dos 3 testes realizados.
teste Linux 1 (PostgreSQL Apt Repository)
teste Linux 2 (PostgreSQL Apt Repository)
teste Linux 3 (PostgreSQL Apt Repository)
# Teste 3 Linux (Debian Postgres instalado pelo código fonte)
Neste teste foi aproveitado a mesma instalação do Linux anterior do Debian 12.
Mas para poder instalar o postgres pelo código fonte primeiro foram removidos os pacotes .deb instalados anteriormente.
apt-get remove \ postgresql-9.5 \ postgresql-client-9.5 \ postgresql-client-common \ postgresql-common \ postgresql-contrib-9.5
Após remover os pacotes .deb foi feito o download do código fonte da versão postgresql-9.5.25.tar.bz2
Não vou detalhar os métodos de compilação. Mas as configurações do postgres foram a mesmas.
LINUX (compilado) | ||
INCLUSÃO | EXCLUSÃO | |
1 | 6310 | 6312 |
2 | 6696 | 6696 |
3 | 6708 | 6708 |
MÉDIA | 6571 | 6572 |
Link das imagens dos 3 testes realizados.
teste Linux 1 (Compilado)
teste Linux 2 (Compilado)
teste Linux 3 (Compilado)
Comparando as médias dos testes o Linux com o Postgres compilado pelo código fonte foi quase 88% eficiente que a versão rodando no Windows e aproximadamente 66% mais eficiente que a versão Linux instalada pelos repositórios do site do Postgres.
Comentem os testes e caso alguém tenha links para outros testes deixem nos comentários.