(Eu li muito sobre OS / Apps de 64 bits versus OS de 32 bits, mas essa pergunta é específica em relação aos bancos de dados.)
Estou tentando entender os prós e os contras dos bancos de dados de 32 bits versus 64 bits e, sob quais condições ele começa a fazer sentido usar instalações de 64 bits.
Os sistemas de banco de dados em que estou interessado são: SQL Server 2008, MySQL e PostgreSQL 9.0.
Li que as versões anteriores ao 9.0 do PostgreSQL são fornecidas apenas em 32 bits para Windows, e este artigo sobre a execução do PostgreSQL de 32 bits no Windows de 64 bits esclarece algumas das minhas confusões, mas estou procurando mais informações.
Quando eu me beneficiaria do uso de bancos de dados de 64 bits (por exemplo, tamanho / espaço em disco do banco de dados, memória disponível do sistema, tipos de cenários de dados que se beneficiam dele, qual mecanismo de banco de dados está sendo usado etc.)?
O PostgreSQL se beneficia de ter uma compilação de 64 bits de duas maneiras principais. Primeiro, tipos de dados que podem caber em 64 bits (números inteiros maiores e tipos de registro de data e hora principalmente) podem ser passados com mais eficiência diretamente diretamente nos registradores, em vez de usar ponteiros. Segundo, é possível alocar mais memória para o cache de buffer dedicado do banco de dados. O ponto de diminuir os retornos nesse sintonizador (shared_buffers) geralmente é de cerca de 8 GB, mas será limitado a <2 GB em um sistema de 32 bits.
No entanto, se você estiver no Windows, o PostgreSQL não manipula a memória compartilhada com a mesma eficiência que nas plataformas UNIX-ish. O ponto de diminuição do retorno geralmente acaba sendo <= 512MB de memória dedicada para o banco de dados, independentemente de você possuir uma compilação de 32 ou 64 bits do PostgreSQL. Você fará melhor em deixar o restante para o cache do sistema operacional, em vez de dedicá-lo ao banco de dados. Consequentemente, não há realmente um ganho de desempenho que vá de 32 a 64 bits com o PostgreSQL no Windows; o principal sintonizador que normalmente se beneficiaria de ter mais RAM disponível não o utiliza muito bem.
fonte
Eu executo o MySQL na arquitetura de 64 bits porque quero que eles utilizem com mais eficiência mais de 4 GB de memória por thread. De um modo geral, isso deve se aplicar a todos os bancos de dados.
Uma das principais diferenças entre as arquiteturas é o aumento do endereçamento que permite maior manipulação de memória. Embora a extensão de endereço físico da Intel permita endereçamento de mais de 4 GB, ela ainda é limitada a 4 GB por thread. O PAE permite um máximo de 64 GB.
A Wikipedia tem uma comparação de 64 bits contra 32 bits, que inclui mais detalhes de baixo nível.
fonte
Observe que se você tiver apenas bibliotecas clientes de MySQL de 64 bits, obterá erros de "arquitetura incorreta" ao tentar vinculá-los ao código de 32 bits. Isso aconteceu comigo quando tentei instalar as ligações python ("pip install MySQL-python").
Pode-se usar o servidor MySQL de 64 bits com um cliente MySQL de 32 bits e é uma pena que o MySQL Community Server não inclua as versões da biblioteca do cliente de 32 e 64 bits. A solução correta é instalar bibliotecas clientes MySQL adicionais de 32 bits. No entanto, como a maneira mais fácil de instalar o MySQL parece ser o download binário do MySQL Community Server , e como o instalador de 64 bits vem apenas com bibliotecas de clientes de 64 bits, o caminho de menor resistência é apenas baixar o instalador de 32 bits .
(tudo isso, supondo que você sempre use conjuntos de dados muito pequenos)
fonte
Para muitas coisas, 32 bits é uma vitória (contanto que você possa viver com o espaço de endereço), mas os bancos de dados são uma coisa em que até bancos de dados pequenos podem obter um aumento real em 64 bits. É verdade que não sei nada sobre o servidor MS SQL, mas vi referências (por exemplo, em um Sun 5 (desktop Sun antigo de 64 bits), 32 bits era geralmente um pouco mais rápido, exceto o mysql, que era 30 % mais rápido em 64 bits.
fonte