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.

Desativando chamada em espera no OI FIXO


Este post pra mim tem a mesma função de uma agenda.
Eu particularmente não gosto de um telefone que fica em chamada em espera. Pois quando os clientes ligam acham que ninguém atende e não que ele já está ocupado.
E em uma oportunidade entrei em contato no 0800 da OI e uma atendente muito rapidamente me ensinou como desativar o recurso.
Mas um tempo depois após uma alteração do meu plano telefônico a chamada em espera estava novamente ativada. E desta vez já não foi fácil conseguir falar com uma atendente que conseguisse me passar novamente a informação correta de como se desativar o recurso.
E hoje depois de várias tentativas anteriores frustradas acertei uma atendente que localizou nos manuais da OI como se faz. Claro que dei um 10 na avaliação de atendimento dela.

Então segue o procedimento de como fazer pra nunca mais esquecer.

Para desativar a chamada em espera (desprogramar)
#43#

Para ativar a chamada em espera (programar)
*43#

Espero que este post seja útil para mais pessoas.