Dois-je installer une base de données 32 bits ou une base de données 64 bits?

16

(J'ai beaucoup lu sur les systèmes d'exploitation / applications 64 bits et 32 ​​bits, mais cette question concerne spécifiquement les bases de données.)

J'essaie de comprendre les avantages et les inconvénients des bases de données 32 bits par rapport à 64 bits, et notamment, dans quelles conditions cela commence à avoir du sens d'utiliser des installations 64 bits.

Les systèmes de base de données qui m'intéressent sont: SQL Server 2008, MySQL et PostgreSQL 9.0.

J'ai lu que les versions antérieures à 9.0 de PostgreSQL ne sont disponibles qu'en 32 bits pour Windows, et cet article sur l'exécution de PostgreSQL 32 bits sur Windows 64 bits dissipe une partie de ma confusion, mais je cherche plus d'informations.

Quand bénéficierais-je de l'utilisation de bases de données 64 bits (c.-à-d. Taille de la base de données / espace disque, mémoire système disponible, types de sernarios de données dont on sait qu'ils en bénéficient, quel moteur de base de données est utilisé, etc.)?

JohnB
la source

Réponses:

20

dans quelles conditions il commence à avoir du sens d'utiliser des installations 64 bits.

Sous tout sauf être idiot. Désolé - à quoi bon installer une base de données 32 bits sur un serveur 64 bits? Et - imaginez - SERVER 2008R2 est UNIQUEMENT disponible en 64 bits.

Il n'y a - aujourd'hui - aucun scénario où il est logique d'installer une version 32 bits de SQL Server si l'on en a l'occasion.

Les bases de données sont spécifiques à cela - car elles veulent utiliser beaucoup de mémoire comme cache si nécessaire. Beaucoup plus que le maigre 2 Go / 3 Go qu'un processus 32 bits peut leur donner. PAE n'est pas pareil. Même en ignorant les limites, la mémoire PAE n'est pas égale à la mémoire réelle pour un serveur SQL (elle n'est utilisée que pour UNE chose - la mise en cache des pages db).

OS 32 bits - est au même niveau. cela n'a aucun sens sur du matériel moderne d'installer un système d'exploitation 32 bits.

TomTom
la source
4
+1 Amen Brother !!
DaniSQL
6
En ce qui concerne le système d'exploitation et les applications 32 bits, il existe quelques avantages mineurs, tels qu'une plus petite empreinte mémoire.
JohnB
@TomTom: SQL Server 2008 R2 est disponible en 32 bits ( faites
JohnB
1
Oui, encombrement réduit. TRÈS particulièrement pour les bases de données qui ne sont pas pertinentes. Une base de données n'est pas un mot. Il traite - sous la plupart des installations - BEAUCOUP de données, donc l'accès à BEAUCOUP de RAM est logique.
TomTom
1
... Beaucoup de RAM étant plus de 4 Go dans un processus? Vous savez combien de serveurs SQL ne fournissent pas cela pour l'ensemble du serveur multi-traitement? Je ne dis pas que c'est une mauvaise idée d'avoir un système d'exploitation 64 bits et un serveur SQL, mais je dirai qu'il existe de nombreuses configurations où cela n'a pas d'importance / pas du tout /.
Evan Carroll
6

PostgreSQL a l'avantage d'avoir une version 64 bits de deux manières principales. Premièrement, les types de données qui peuvent tenir sur 64 bits (les entiers plus grands et les types d'horodatage principalement) peuvent être transmis plus efficacement directement dans les registres plutôt que d'utiliser des pointeurs. Deuxièmement, il est possible d'allouer plus de mémoire au cache tampon dédié de la base de données. Le point de diminution des retours sur ce paramètre (shared_buffers) est généralement d'environ 8 Go, mais il sera limité à <2 Go sur un système 32 bits.

Cependant, si vous êtes sous Windows, PostgreSQL ne gère pas la mémoire partagée aussi efficacement que sur les plates-formes UNIX. Le point de rendement décroissant finit généralement par être <= 512 Mo de mémoire dédiée pour la base de données, que vous ayez une version 32 bits ou 64 bits de PostgreSQL. Vous ferez mieux de laisser le reste au cache du système d'exploitation plutôt que de le consacrer à la base de données. En conséquence, il n'y a vraiment pas beaucoup de gain de performances allant de 32 à 64 bits avec PostgreSQL sur Windows; le principal accordable qui aurait normalement avantage à avoir plus de RAM disponible ne l'utilise pas vraiment très bien.

Greg Smith
la source
1
Notez que certaines personnes ont signalé avoir vu un avantage de Windows PostgreSQL 64 bits en définissant de très grandes valeurs pour work_mem, ce qui permet au serveur de trier de plus grandes quantités de données en mémoire.
Greg Smith
4

J'exécute MySQL sur une architecture 64 bits parce que je veux qu'ils utilisent plus efficacement plus de 4 Go de mémoire par thread. D'une manière générale, cela devrait s'appliquer à toutes les bases de données.

L'une des principales différences entre les architectures est l'augmentation de l'adressage qui permet une meilleure gestion de la mémoire. Alors que Intel extension d'adresse physique permette l'adressage de plus de 4 Go, elle est toujours limitée à 4 Go par thread. PAE permet jusqu'à 64 Go maximum.

Wikipédia a une comparaison de 64 bits par rapport à 32 bits, qui comprend plus de détails de bas niveau.

Warner
la source
2
C'est par processus, pas par thread. Les threads partagent le même espace mémoire.
Evan Carroll le
3

Notez que si vous ne disposez que de bibliothèques clientes MySQL 64 bits, vous obtiendrez des erreurs de "mauvaise architecture" en essayant de les lier ensemble avec du code 32 bits. Cela m'est arrivé lorsque j'ai essayé d'installer des liaisons python ("pip install MySQL-python").

On peut utiliser un serveur MySQL 64 bits avec un client MySQL 32 bits et il est dommage que le serveur de communauté MySQL n'inclue pas les versions de bibliothèque cliente 32 bits et 64 bits. La bonne solution consiste à installer des bibliothèques client MySQL 32 bits supplémentaires. Cependant, comme la façon la plus simple d'installer MySQL semble être le téléchargement binaire de MySQL Community Server , et étant donné que le programme d'installation 64 bits est fourni uniquement avec les bibliothèques clientes 64 bits, le chemin le moins résistant consiste à télécharger simplement le programme d'installation 32 bits. .

(tout cela, en supposant que vous utiliserez toujours de très petits ensembles de données)

Amit Moscovich
la source
2

Pour tant de choses, 32 bits est une victoire (tant que vous pouvez vivre avec l'espace d'adressage), mais les bases de données sont une chose où même les petites bases de données peuvent obtenir un véritable coup de pouce en 64 bits. Certes, je ne sais rien du serveur MS SQL, mais j'ai vu des repères (par exemple, sur un Sun 5 (ancien bureau Sun 64 bits), 32 bits était généralement un peu plus rapide, sauf pour mysql, qui était de 30 % plus rapide en 64 bits.

Ronald Pottol
la source
2
"Pour tant de choses, 32 bits est une victoire" - Exemples ??
Chris S
1
Le seul cas où je peux imaginer où une base de données 32 bits serait plus rapide que 64 bits est si le code n'a pas été compilé avec les optimisations appropriées. En ce qui concerne les logiciels d'entreprise, les bases de données sont probablement celles qui peuvent le mieux profiter de ce que propose le 64 bits.
John Gardeniers
1
Eh bien, un grand nombre de benchmarks à l'ère de la transition RISC 32> 64, et au moins le début du x86 ont montré peu ou pas d'avantages pour le 64 bits, sauf si vous avez besoin de l'espace d'adressage, et db le fait. Je ne voulais pas le croire non plus, et je parie pour x86 aujourd'hui, 64 bits est toujours plus rapide (juste parce que vous échappez à ce jeu d'instructions i32). Anandtech.com a des repères jusqu'à ce que vos globes oculaires saignent. N'oubliez pas: MONTREZ-MOI LES DONNÉES.
Ronald Pottol
1
Toutes choses étant égales par ailleurs, le principal inconvénient auquel je peux penser pour le 64 bits est avec des pointeurs plus grands (64 bits), qui occuperont plus d'espace de mémoire cache qu'une structure de données dynamique 32 bits équivalente (c.-à-d. Listes liées, arbres ...). Cela réduit la quantité de mémoire cache disponible. Ce symptôme persiste également dans la mémoire principale. Mon serveur Debian 64 bits avec seulement 64 Mo de RAM utilise plus de swap et exécute moins d'applications qu'un serveur 32 bits de configuration similaire.
sybreon
3
@sybreon: Je pense que j'ai un vieux 128 Mo qui traîne si vous en avez besoin!
JohnB