Avantages de la mise à niveau de Windows Server 32 bits et SQL Server vers 64 bits?


13

Supposons que j'ai une boîte Windows Server 32 bits qui exploite plusieurs applications serveur avec un serveur SQL, avec une utilisation de RAM d'environ 2 Go aux heures de pointe.

Quels seraient les avantages de la mise à niveau du système d'exploitation Windows Server et de SQL Server vers les versions 64 bits correspondantes, les applications serveur restant en 32 bits? Les versions 64 bits permettent d'accéder à plus de 4 Go de RAM, mais comme 4 Go ne sont pas pleinement utilisés, est-ce que cela rendrait la mise à niveau inutile?

Versions: Windows Server 2008 R2, SQL Server 2008 R2 Datacenter Edition

Merci

Réponses:


19

Fortement lié: bonnes raisons de conserver les systèmes d'exploitation de bureau Microsoft Windows 32 bits

Vous êtes utilisez un système d' exploitation 64 bits. Server 2008 R2 a été le premier à ne prendre en charge que les processeurs 64 bits.

Les versions "plus récentes" de Windows ne sont même pas conçues pour 32 bits. Vous ne profiterez peut-être de rien, mais il ne devrait y avoir aucun inconvénient. Cela étant dit: mettez quand même à niveau, car Server 2008 R2 SP1 (que j'espère que vous utilisez) sera en fin de vie du 2020-01-14 .

En ce qui concerne SQL Server 32 bits / 64 bits: votre compréhension est correcte, si vous n'avez jamais besoin de> ~ 3,75 Go de RAM (ou> 2 Go par processus), vous pouvez utiliser la version 32 bits sans problème. Mais pour les versions plus récentes, il n'y aura pas de version 32 bits à installer, car Microsoft est passé au 64 bits uniquement.


6
OP mentionne «2 Go aux heures de pointe», il est donc tout à fait possible que SQL Server veuille utiliser plus de 2 Go, mais il ne peut pas en raison de la limite de processus 32 bits.
MonkeyZeus

Cela pourrait être le cas, je ne sais vraiment pas si MS SQL Server 2008 utilise plusieurs processus pour différentes tâches / instances / bases de données / etc.
Lenniey

11

Comme déjà indiqué, vous utilisez déjà un système d'exploitation 64 bits. Le passage à une version 64 bits de SQL Server présente deux avantages et un inconvénient.

Le seul inconvénient est que la version 64 bits de SQL Server utilisera des pointeurs 64 bits. Cela signifie que les pointeurs occuperont deux fois plus de mémoire, consommeront deux fois plus de bande passante mémoire, etc. C'est probablement assez négligeable, mais c'est un inconvénient. Il est partiellement compensé par le fait que le passage à une application 64 bits vous permettra de vous débarrasser de la surcharge de la couche de compatibilité que les applications 32 bits doivent utiliser pour accéder aux fonctions d'un système d'exploitation 64 bits.

L'avantage majeur est que de nombreuses améliorations significatives ont été apportées dans le jeu d'instructions CPU au fil du temps. Certains d'entre eux ont été effectués avec le passage à 64 bits et certains ont été effectués précédemment.

Mais même pour celles faites précédemment, la version 32 bits doit gérer les processeurs qui n'ont pas ces fonctionnalités et pour éviter les tracas de détection et de basculement entre plusieurs instances, ne les utilise tout simplement pas là où ils sont présents. Par exemple, les CPU 64 bits doivent avoir SSE2, mais pas les CPU 32 bits. Ainsi, la plupart du code 32 bits ne dérange pas la vérification et ne suppose aucun SSE2. Le code 64 bits est assuré que les instructions SSE2 sont présentes et l'utiliseront donc si c'est la meilleure option.

Le plus important est l'augmentation du nombre de registres à usage général nommés de 8 à 16. Le nombre de registres XMM 128 bits a également été doublé, passant de 8 à 16.

De plus, un processus 64 bits peut utiliser de grandes quantités de mémoire virtuelle. Ceci est particulièrement important avec les processus qui accèdent à de grandes quantités de données structurées sur disque. Et, bien sûr, ils peuvent utiliser des opérations d'entier 64 bits qui ont tendance à améliorer les performances de chiffrement, de compression et même certaines opérations de système de fichiers sur des systèmes de fichiers volumineux.


Les instructions AVX et co ont-elles vraiment un impact notable sur les performances de SQL Server? Je suppose (mais je ne l'ai jamais testé ou testé) que ce serait principalement le sous-système d'E / S dont il dépend.
Voo

Une partie du code 32 bits moderne ne suppose SSE2, en particulier lors de l' exécution sur un système d' exploitation qui ne supporte que les processeurs assez nouveau pour avoir SSE2 (avec quelques autres fonctionnalités requises). Je suppose que Microsoft compile ses trucs avec MSVC, qui ont une /arch:SSE2option pour le code 32 bits, équivalent à gcc / clang / ICC -msse2. Je suppose que SQL n'a pas beaucoup de boucles vectorisées SIMD, mais copier de petites structures avec des chargements / magasins SIMD de 16 octets est bien.
Peter Cordes

L'un des changements les plus importants de x86-64 est l'adressage relatif au PC pour un code efficace indépendant de la position. Les bibliothèques PIC 32 bits ont généralement un ralentissement de ~ 10% ou ~ 15% (IIRC) par rapport aux non-PIC 32 bits. Avoir plus de registres entiers aide aussi beaucoup. Un gros avantage en 64 bits est une convention d'appel plus agréable, mais sous Windows (contrairement à Linux), le code 32 bits permet __fastcallde passer des arguments dans les registres pour de nombreuses fonctions. La convention d'appel Linux 32 bits est purement sur la pile, donc c'est assez nul pour les petites fonctions qui ne sont pas en ligne.
Peter Cordes

Si la vectorisation importe vraiment pour les performances au lieu de supposer / nécessiter un niveau de support spécifique, le code vérifie probablement la dernière version SSE / AVX prise en charge par le CPU et appelle l'implémentation appropriée pour obtenir le plus de vitesse possible quel que soit le système qu'il exécute. sur.
Dan est en train de jouer par Firelight le

@DanNeely Cela suppose que celui qui a effectué la construction s'efforce d'améliorer les performances de la version 32 bits. D'après mon expérience, au moins, ils supposent souvent que les personnes soucieuses de performances utiliseront la version 64 bits.
David Schwartz

6

Fondamentalement: oui. En supposant que vous ne fassiez jamais de mises à jour qui ne sont alors que 4 bits - pas sûr qu'il existe même un SQL Server 32 bits plus récent que 2008.

Problèmes avec votre question: "Les versions 64 bits permettent d'accéder à plus de 4 Go de RAM", - faites que 3 Go;) pas 4. 1 Go est toujours réservé.


Si nous sommes si exigeants, pourquoi ne pas avoir raison et mentionner qu'un programme 32 bits peut facilement accéder à des centaines de Go de RAM? ;) Ce n'est que l'espace d'adressage virtuel qui est limité.
Voo

3
@Voo: Et SQL Server est l'un des rares programmes qui sait comment.
joshudson

6

Problème potentiel: les bibliothèques DLL de fonctions définies par l'utilisateur CLR (UDF) auront besoin de leurs versions 64 bits.

Si vous utilisez une bibliothèque de fonctions définies par l'utilisateur CLR , elle deviendra incompatible avec les bits. Les DLL 32 bits ne peuvent généralement pas être utilisées dans les logiciels 64 bits et vice versa. Si vous ne pouvez pas obtenir la version 64 bits d'une bibliothèque UDF que vous utilisez, vous perdrez cette extension spécifique.

Fondamentalement, c'est le même problème que la mise à niveau d'un logiciel 32 bits avec ses modules complémentaires vers sa version 64 bits. Vous devez également basculer tous les modules complémentaires vers leurs versions 64 bits. En général, c'est facile, mais les problèmes sont supprimés lorsque les remplacements ne sont pas disponibles.


3

Performance!

Il existe déjà plusieurs réponses techniques ici, mais sans devenir trop technique, et selon votre application, vous devriez voir une mise à niveau des performances.

Les pièces principales sont:

Large adressage mémoire: L'architecture 64 bits offre un plus grand espace mémoire directement adressable. SQL Server 2005 (64 bits) n'est pas lié par la limite de mémoire de 4 Go des systèmes 32 bits. Par conséquent, davantage de mémoire est disponible pour effectuer des requêtes complexes et prendre en charge les opérations de base de données essentielles. Cette plus grande capacité de traitement réduit les pénalités de latence d'E / S en utilisant plus de mémoire que les systèmes 32 bits traditionnels.

Parallélisme amélioré: l' architecture 64 bits offre un parallélisme et un threading avancés. Les améliorations apportées au traitement parallèle et aux architectures de bus permettent aux plates-formes 64 bits de prendre en charge un plus grand nombre de processeurs (jusqu'à 64) tout en offrant une évolutivité quasi linéaire avec chaque processeur supplémentaire. Avec un plus grand nombre de processeurs, SQL Server peut prendre en charge plus de processus, d'applications et d'utilisateurs dans un seul système.

https://teratrax.com/sql-server-64-bit/

Les résultats les plus spectaculaires que j'ai vus en passant de SQL Server 32 bits à 64 bits (c'était SQL Server 2005) étaient une augmentation de vitesse d'environ 40% sur l'application principale d'un client. Tout ce que nous avons fait était d'installer le serveur SQL 64 bits, tout le reste était le même! Ce fut un coup de pouce majeur dans les performances du monde réel.


-2

Vous pouvez avoir de meilleures performances multitâches, en particulier avec les programmes qui intègrent un multithreading lourd. De plus, vous pouvez installer plus de RAM avec un système d'exploitation 64 bits. Mais ne faites cela que si le processeur prend en charge les instructions 64 bits.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.