Devo instalar o banco de dados de 32 bits ou o de 64 bits?

16

(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.)?

JohnB
fonte

Respostas:

20

sob quais condições começa a fazer sentido usar instalações de 64 bits.

Sob todos, exceto ser idiota. Desculpe - de que seria bom instalar um banco de dados de 32 bits em um servidor de 64 bits? E - imagine - o SERVER 2008R2 está disponível apenas em 64 bits.

Atualmente, não há cenário em que faça sentido instalar uma versão do SQL Server de 32 bits, se houver uma chance.

Os bancos de dados são específicos nisso - pois desejam usar muita memória como cache, se necessário. Muito mais do que os poucos 2gb / 3gb que um processo de 32 bits pode oferecer. PAE não é o mesmo. Mesmo ignorando limites, a memória PAE não é igual à memória real de um SQL Server´ (é usada apenas para UMA coisa - armazenar em cache as páginas db).

SO de 32 bits - está no mesmo nível. não faz sentido no hardware moderno instalar um sistema operacional de 32 bits.

TomTom
fonte
4
+1 Amém Irmão !!
111110 DaniSQL
6
Bem, quanto ao SO e aos aplicativos de 32 bits, existem algumas vantagens menores, como menor espaço de memória.
JohnB
@TomTom: SQL Server 2008 R2 está disponível em 32-bit (desloque-se ligeiramente) msdn.microsoft.com/en-us/library/ms143506.aspx
JohnB
1
Sim, pegada menor. TRISTE, especialmente para bancos de dados irrelevantes. Um banco de dados não é palavra. Ele lida com - na maioria das instalações - MUITOS dados, portanto, acessar MUITOS RAM faz sentido.
TomTom
1
... Muita memória RAM sendo superior a 4 GB em um processo? Você sabe quantos servidores SQL não fornecem isso para todo o servidor multiprocessado? Não estou argumentando que é uma má idéia ter um sistema operacional de 64 bits e servidor SQL, mas direi que há muitas configurações em que isso não importa / de modo algum /.
Evan Carroll
6

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.

Greg Smith
fonte
1
Observe que algumas pessoas relataram ter visto um benefício do Windows PostgreSQL de 64 bits, definindo valores muito grandes para work_mem, o que permite ao servidor classificar grandes quantidades de dados na memória.
Greg Smith
4

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.

Warner
fonte
2
É por processo, não por thread. Threads compartilham o mesmo espaço de memória.
Evan Carroll
3

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)

Amit Moscovich
fonte
2

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.

Ronald Pottol
fonte
2
"Para tantas coisas, 32 bits é uma vitória" - Exemplos ??
Chris S
1
O único caso que posso imaginar em que um banco de dados de 32 bits seria mais rápido que 64 bits é se o código não foi compilado com otimizações apropriadas. No que diz respeito ao software comercial, os bancos de dados são provavelmente o que melhor pode tirar proveito do que os 64 bits oferecem.
John Gardeniers
1
Bem, um grande número de benchmarks na era de transição do RISC 32> 64 e, pelo menos, no início do x86 mostraram pouco ou nenhum benefício para 64 bits, a menos que você precise do espaço de endereço e o db faça. Também não queria acreditar, e aposto no x86 hoje, 64 bits é sempre mais rápido (apenas porque você escapa do conjunto de instruções i32). Anandtech.com tem benchmarks até que seus olhos sangrem. Lembre-se: MOSTRE-ME OS DADOS.
Ronald Pottol
1
Tudo o resto é igual, a principal desvantagem que consigo pensar em 64 bits é com ponteiros maiores (64 bits), que ocuparão mais espaço em memória cache do que uma estrutura equivalente de dados dinâmicos de 32 bits (ou seja, listas vinculadas, árvores ...) Isso reduz a quantidade de memória cache disponível. Este sintoma também persiste na memória principal. Meu servidor Debian de 64 bits com apenas 64Mb de RAM usa mais troca e executa menos aplicativos do que um servidor de 32 bits de configuração semelhante.
sybreon 14/07/10
3
@ sybreon: Eu acho que tenho um 128mb antigo, se precisar!
JohnB