Banco de dados PostgreSQL. Linux vs Windows. Qual melhor performance ?

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

Veja exemplo:

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.