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
la source
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.
la source
/arch:SSE2
option 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.__fastcall
de 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.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é.
la source
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.
la source
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:
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.
la source
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.
la source