Vantaggi dell'aggiornamento di Windows Server a 32 bit e SQL Server a 64 bit?


13

Supponiamo che io abbia una scatola di Windows Server a 32 bit che gestisce diverse applicazioni server insieme a un SQL Server, con un utilizzo della RAM di circa 2 GB nelle ore di punta.

Quali sarebbero i vantaggi di aggiornare il sistema operativo Windows Server e SQL Server alle corrispondenti versioni a 64 bit, con le applicazioni server che rimangono a 32 bit? Le versioni a 64 bit consentono l'accesso a più di 4 GB di RAM, ma dal momento che 4 GB non vengono utilizzati completamente ciò renderebbe il moot di aggiornamento?

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

Grazie

Risposte:


19

Fortemente correlato: buoni motivi per mantenere i sistemi operativi desktop Microsoft Windows a 32 bit

Lo sei utilizzando un sistema operativo a 64 bit. Server 2008 R2 è stato il primo a supportare solo CPU a 64 bit.

Le versioni "più recenti" di Windows non sono nemmeno progettate per 32 bit. Forse non trarrai vantaggio da nulla, ma non ci dovrebbero essere né svantaggi. Detto questo: esegui comunque l'aggiornamento, poiché Server 2008 R2 SP1 (che spero tu stia utilizzando) sarà EOL dal 2020-01-14 .

Per quanto riguarda SQL Server 32 bit / 64 bit: la tua comprensione è corretta, se non avrai mai bisogno di> ~ 3,75 GB di RAM (o> 2 GB per processo), puoi utilizzare la versione a 32 bit senza problemi. Ma per le versioni più recenti non ci sarà alcuna versione da 32 bit da installare, poiché Microsoft è passata solo a 64 bit.


6
OP menziona "2 GB nelle ore di punta", quindi è del tutto possibile che SQL Server voglia utilizzare più di 2 GB, ma non è possibile a causa del limite di processo a 32 bit.
MonkeyZeus,

Potrebbe essere il caso, davvero non so se MS SQL Server 2008 utilizza più processi per diverse attività / istanze / database / ecc.
Lenniey,

11

Come già notato, stai già utilizzando un sistema operativo a 64 bit. Esistono due vantaggi nel passaggio a una versione a 64 bit di SQL Server e uno svantaggio.

L'unico svantaggio è che la versione a 64 bit di SQL Server utilizzerà puntatori a 64 bit. Ciò significa che i puntatori occuperanno il doppio della memoria, consumeranno il doppio della larghezza di banda della memoria e così via. Questo è probabilmente abbastanza trascurabile, ma è uno svantaggio. È parzialmente compensato dal fatto che il passaggio a un'applicazione a 64 bit consente di eliminare il sovraccarico del livello di compatibilità che le app a 32 bit devono utilizzare per accedere alle funzioni di un sistema operativo a 64 bit.

Il vantaggio principale è che nel tempo sono stati apportati numerosi miglioramenti significativi alle istruzioni della CPU. Alcuni di essi sono stati fatti insieme alla modifica a 64 bit e alcuni sono stati fatti in precedenza.

Ma anche per quelli realizzati in precedenza, la build a 32 bit deve gestire CPU che non dispongono di tali funzionalità ed evitare il fastidio di rilevare e passare tra più istanze, ma non le usa nemmeno dove sono presenti. Ad esempio, le CPU a 64 bit devono avere SSE2, ma le CPU a 32 bit potrebbero non esserlo. Quindi la maggior parte del codice a 32 bit non disturba il controllo e non presuppone SSE2. Il codice a 64 bit è garantito che sono presenti le istruzioni SSE2 e quindi lo userà se è l'opzione migliore.

Il più grande è l'aumento del numero di registri nominali per uso generico da 8 a 16. Anche il numero di registri XMM a 128 bit è stato raddoppiato, da 8 a 16.

Inoltre, un processo a 64 bit può utilizzare grandi quantità di memoria virtuale. Ciò è particolarmente importante con i processi che accedono a grandi quantità di dati strutturati su disco. E, naturalmente, possono usare operazioni a 64 bit che tendono a migliorare le prestazioni di crittografia, compressione e persino alcune operazioni di file system su file system di grandi dimensioni.


AVX e le istruzioni co hanno davvero un impatto notevole sulle prestazioni di SQL Server? Suppongo (ma non l'ho mai confrontato o testato) che sarebbe principalmente il sottosistema IO da cui dipende.
Voo

Alcuni codice moderno a 32 bit non assume SSE2, soprattutto quando in esecuzione su un sistema operativo che supporta solo le CPU nuova sufficiente avere SSE2 (insieme ad alcune altre caratteristiche richieste). Presumo che Microsoft compili le loro cose con MSVC, che ha /arch:SSE2un'opzione per il codice a 32 bit, equivalente a gcc / clang / ICC -msse2. Immagino che SQL non abbia molti loop vettoriali SIMD, ma copiare piccole strutture con carichi / negozi SIMD a 16 byte è carino.
Peter Cordes,

Uno dei cambiamenti più importanti in x86-64 è l'indirizzamento relativo al PC per un efficiente codice indipendente dalla posizione. Le librerie PIC a 32 bit in genere hanno un rallentamento ~ 10% o ~ 15% (IIRC) rispetto a non-PIC a 32 bit. Anche avere più registri interi aiuta molto. Un grande vantaggio a 64 bit è una convenzione di chiamata più piacevole, ma su Windows (a differenza di Linux) il codice a 32 bit fa __fastcallpassare argomenti nei registri per molte funzioni. La convenzione di chiamata a 32 bit di Linux è puramente nello stack, quindi è piuttosto una schifezza per le piccole funzioni che non sono in linea.
Peter Cordes,

Se la vettorializzazione conta davvero molto per le prestazioni invece di assumere / richiedere un livello di supporto specifico, il codice sta probabilmente controllando la versione SSE / AVX più recente supportata dalla CPU e chiamando l'implementazione appropriata per ottenere la massima velocità da qualsiasi sistema in esecuzione su.
Dan è Fiddling by Firelight il

@DanNeely Ciò presuppone che chiunque abbia fatto la build si sia sforzato di migliorare le prestazioni della versione a 32 bit. La mia esperienza, almeno, è stata che spesso presumono che le persone che si preoccupano delle prestazioni useranno la build a 64 bit.
David Schwartz,

6

Fondamentalmente: Sì. Supponendo di non effettuare mai aggiornamenti che sono solo a 4 bit, non è sicuro che esista un SQL Server a 32 bit più recente del 2008.

Problemi con la tua domanda: "Le versioni a 64 bit consentono l'accesso a più di 4 GB di RAM," - fai che 3 GB;) non 4. 1 GB è sempre riservato.


Se siamo così pignoli, perché non essere corretti e dire che un programma a 32 bit può accedere facilmente a centinaia di GB di RAM? ;) È limitato solo lo spazio degli indirizzi virtuali.
Voo

3
@Voo: E SQL Server è uno dei pochi programmi che sa come fare.
joshudson,

6

Problema potenziale: le librerie DLL di funzioni definite dall'utente CLR (UDF) richiederanno le loro versioni a 64 bit.

Se si utilizza una libreria di funzioni definite dall'utente CLR , diventerà incompatibile con i bit. Le DLL a 32 bit non possono essere generalmente utilizzate nel software a 64 bit e viceversa. Se non riesci a ottenere la versione a 64 bit di alcune librerie UDF che utilizzi, perderai quella specifica estensione.

Fondamentalmente è lo stesso problema dell'aggiornamento di qualsiasi software a 32 bit con i suoi componenti aggiuntivi alla sua versione a 64 bit. È inoltre necessario passare tutti i componenti aggiuntivi alle loro versioni a 64 bit. Generalmente è facile, ma il problema è risolto quando non sono disponibili sostituzioni.


3

Prestazione!

Esistono già diverse risposte tecniche qui, ma senza diventare troppo tecniche e, a seconda della tua applicazione, dovresti vedere un aggiornamento delle prestazioni.

I pezzi principali sono:

Indirizzamento della memoria di grandi dimensioni: l'architettura a 64 bit offre uno spazio di memoria indirizzabile direttamente più grande. SQL Server 2005 (64 bit) non è vincolato dal limite di memoria di 4 GB dei sistemi a 32 bit. Pertanto, è disponibile più memoria per eseguire query complesse e supportare operazioni di database essenziali. Questa maggiore capacità di elaborazione riduce le penalità della latenza I / O utilizzando più memoria rispetto ai sistemi tradizionali a 32 bit.

Parallelismo avanzato: l'architettura a 64 bit offre parallelismo e threading avanzati. I miglioramenti nell'elaborazione parallela e nelle architetture di bus consentono alle piattaforme a 64 bit di supportare un numero maggiore di processori (fino a 64) fornendo allo stesso tempo una scalabilità quasi lineare con ogni processore aggiuntivo. Con un numero maggiore di processori, SQL Server può supportare più processi, applicazioni e utenti in un unico sistema.

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

I risultati più drammatici che ho visto passando da SQL Server a 32 bit a 64 bit (questo era SQL Server 2005) sono stati circa un aumento della velocità del 40% sulla principale applicazione di un client. Tutto ciò che abbiamo fatto è stato installare SQL Server a 64 bit, tutto il resto era lo stesso! Questo è stato un grande aumento delle prestazioni nel mondo reale.


-2

Puoi avere migliori prestazioni multitasking soprattutto con programmi che hanno un pesante multithreading incorporato. Inoltre puoi installare più ram con sistema operativo a 64 bit. Fallo solo se il processore supporta le istruzioni a 64 bit.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.