Vorteile eines Upgrades von 32-Bit Windows Server und SQL Server auf 64-Bit?


13

Angenommen, ich besitze eine 32-Bit-Windows Server-Box, auf der mehrere Serveranwendungen zusammen mit einem SQL Server ausgeführt werden, mit einer RAM-Auslastung von etwa 2 GB zu Spitzenzeiten.

Was wären die Vorteile eines Upgrades des Windows Server-Betriebssystems und von SQL Server auf die entsprechenden 64-Bit-Versionen, wobei die Serveranwendungen 32-Bit bleiben? Die 64-Bit-Versionen erlauben den Zugriff auf mehr als 4 GB RAM, aber da 4 GB nicht voll ausgenutzt werden, würde dies das Upgrade in Frage stellen?

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

Vielen Dank

Antworten:


19

Stark verwandt: Gute Gründe, die 32-Bit-Desktop-Betriebssysteme von Microsoft Windows beizubehalten

Sie sind mit einem 64 - Bit - OS. Server 2008 R2 war der erste Server, der nur 64-Bit-CPUs unterstützte.

"Neuere" Versionen von Windows sind nicht einmal für 32 Bit ausgelegt. Sie werden vielleicht nichts ausnutzen, aber es sollte auch keine Nachteile geben. Davon abgesehen : Führen Sie auf jeden Fall ein Upgrade durch, da Server 2008 R2 SP1 (den Sie hoffentlich verwenden) ab dem 14.01.2010 EOL sein wird .

Was SQL Server 32-Bit / 64-Bit anbelangt, ist Folgendes zu beachten: Wenn Sie nie mehr> ~ 3,75 GB RAM (oder> 2 GB pro Prozess) benötigen, können Sie die 32-Bit-Version problemlos verwenden. Bei neueren Versionen muss jedoch keine 32-Bit-Version installiert werden, da Microsoft nur auf 64-Bit umgestellt hat.


6
OP erwähnt "2 GB in Spitzenzeiten", sodass es durchaus möglich ist, dass SQL Server mehr als 2 GB verwenden möchte, dies jedoch aufgrund der 32-Bit-Prozessbeschränkung nicht möglich ist.
MonkeyZeus

Könnte der Fall sein, ich weiß wirklich nicht, ob MS SQL Server 2008 mehrere Prozesse für verschiedene Aufgaben / Instanzen / Datenbanken / etc. verwendet
Lenniey

11

Wie bereits erwähnt, verwenden Sie bereits ein 64-Bit-Betriebssystem. Der Wechsel zu einer 64-Bit-Version von SQL Server bietet zwei Vorteile und einen Nachteil.

Der einzige Nachteil ist, dass die 64-Bit-Version von SQL Server 64-Bit-Zeiger verwendet. Dies bedeutet, dass Zeiger doppelt so viel Speicher belegen, doppelt so viel Speicherbandbreite verbrauchen und so weiter. Dies ist wahrscheinlich vernachlässigbar, aber ein Nachteil. Dies wird teilweise durch die Tatsache kompensiert, dass Sie durch den Wechsel zu einer 64-Bit-Anwendung den Overhead der Kompatibilitätsschicht aufheben können, die 32-Bit-Apps für den Zugriff auf die Funktionen eines 64-Bit-Betriebssystems benötigen.

Der Hauptvorteil besteht darin, dass im Laufe der Zeit zahlreiche signifikante Verbesserungen am CPU-Befehlssatz vorgenommen wurden. Einige von ihnen wurden zusammen mit der Änderung auf 64-Bit gemacht und einige von ihnen wurden zuvor gemacht.

Aber selbst für diejenigen, die zuvor erstellt wurden, muss der 32-Bit-Build mit CPUs umgehen, die über diese Funktionen nicht verfügen. Um den Aufwand beim Erkennen und Wechseln zwischen mehreren Instanzen zu vermeiden, werden sie nur dort verwendet, wo sie vorhanden sind. Beispielsweise müssen 64-Bit-CPUs über SSE2 verfügen, 32-Bit-CPUs jedoch möglicherweise nicht. Die meisten 32-Bit-Codes kümmern sich also nicht um die Prüfung und setzen kein SSE2 voraus. 64-Bit-Code ist garantiert, dass SSE2-Anweisungen vorhanden sind, und wird daher verwendet, wenn dies die beste Option ist.

Die größte ist die Zunahme der Anzahl benannter Universalregister von 8 auf 16. Die Anzahl der 128-Bit-XMM-Register wurde ebenfalls von 8 auf 16 verdoppelt.

Darüber hinaus kann ein 64-Bit-Prozess große Mengen an virtuellem Speicher nutzen. Dies ist besonders wichtig bei Prozessen, die auf große Mengen strukturierter Daten auf der Festplatte zugreifen. Und natürlich können sie 64-Bit-Ganzzahloperationen verwenden, die die Leistung der Verschlüsselung, Komprimierung und sogar einiger Dateisystemoperationen auf großen Dateisystemen verbessern.


Haben die Anweisungen von AVX und Co wirklich spürbare Auswirkungen auf die Leistung von SQL Server? Ich würde davon ausgehen (aber ich habe es noch nie verglichen oder getestet), dass es meistens das IO-Subsystem ist, von dem es abhängt.
Voo

Einige moderne 32-Bit - Code nicht SSE2 nehmen, insbesondere wenn sie auf einem Betriebssystem ausgeführt wird, dass nur CPUs neu genug unterstützt SSE2 haben (zusammen mit einigen anderen erforderlichen Komponenten). Ich gehe davon aus, dass Microsoft das Material mit MSVC kompiliert, das eine /arch:SSE2Option für 32-Bit-Code hat, die gcc / clang / ICC entspricht -msse2. Ich würde vermuten, dass SQL nicht viele SIMD-Vektorschleifen hat, aber das Kopieren kleiner Strukturen mit 16-Byte-SIMD-Laden / Speichern ist schön.
Peter Cordes

Eine der wichtigsten Änderungen in x86-64 ist die PC-relative Adressierung für einen effizienten, positionsunabhängigen Code. 32-Bit-PIC-Bibliotheken weisen im Vergleich zu 32-Bit-PIC-Bibliotheken eine Verlangsamung von ~ 10% oder ~ 15% auf. Es hilft auch sehr viel, mehr Integer-Register zu haben. Ein großer Vorteil von 64-Bit ist eine schönere Aufrufkonvention, aber unter Windows (im Gegensatz zu Linux) kann 32-Bit-Code __fastcallfür viele Funktionen Argumente in Registern übergeben. Die 32-Bit-Aufrufkonvention von Linux ist rein auf dem Stack, daher ist es ziemlich beschissen, kleine Funktionen zu verwenden, die nicht inline sind.
Peter Cordes

Wenn die Vektorisierung für die Leistung wirklich eine große Rolle spielt, anstatt ein bestimmtes Support-Level anzunehmen / zu erfordern, sucht der Code wahrscheinlich nach der neuesten SSE / AVX-Version, die von der CPU unterstützt wird, und ruft die entsprechende Implementierung auf, um so viel Geschwindigkeit wie möglich aus dem laufenden System herauszuholen auf.
Dan ist Fiddling von Firelight

@DanNeely Dies setzt voraus, dass jeder, der den Build erstellt hat, Anstrengungen unternommen hat, um die Leistung der 32-Bit-Version zu verbessern. Zumindest habe ich die Erfahrung gemacht, dass sie häufig davon ausgehen, dass Leute, denen die Leistung am Herzen liegt, den 64-Bit-Build verwenden.
David Schwartz

6

Grundsätzlich: Ja. Vorausgesetzt, Sie führen niemals Aktualisierungen durch, die nur 4-Bit-Aktualisierungen umfassen. Sie sind sich nicht sicher, ob es sogar einen 32-Bit-SQL-Server gibt, der aktueller als 2008 ist.

Probleme mit Ihrer Frage: "Die 64-Bit-Versionen ermöglichen den Zugriff auf mehr als 4 GB RAM." - Stellen Sie sicher, dass 3 GB nicht 4 sind. 1 GB ist immer reserviert.


Wenn wir so pingelig sind, warum nicht richtig sein und erwähnen, dass ein 32-Bit-Programm problemlos auf Hunderte von GB RAM zugreifen kann? ;) Nur der virtuelle Adressraum ist begrenzt.
Voo

3
@ Voo: Und SQL Server ist eines der wenigen Programme, die wissen, wie.
Joshudson

6

Mögliches Problem: DLL-Bibliotheken mit benutzerdefinierten CLR-Funktionen (User Defined Functions, UDFs) benötigen ihre 64-Bit-Version.

Wenn Sie eine Bibliothek mit benutzerdefinierten CLR-Funktionen verwenden , wird diese bit-inkompatibel. 32-Bit-DLLs können in der Regel nicht in 64-Bit-Software verwendet werden und umgekehrt. Wenn Sie keine 64-Bit-Version einer von Ihnen verwendeten UDF-Bibliothek erhalten können, verlieren Sie diese bestimmte Erweiterung.

Grundsätzlich ist dies das gleiche Problem wie das Upgrade einer 32-Bit-Software mit ihren Add-Ons auf die 64-Bit-Version. Sie müssen auch alle Add-Ons auf ihre 64-Bit-Version umstellen. Im Allgemeinen ist es einfach, aber das Problem tritt nicht mehr auf, wenn kein Ersatz verfügbar ist.


3

Performance!

Hier gibt es bereits einige technische Antworten, ohne jedoch zu technisch zu werden. Abhängig von Ihrer Anwendung sollten Sie eine Leistungssteigerung sehen.

Die Hauptstücke sind:

Adressierung mit großem Speicher: Die 64-Bit-Architektur bietet einen größeren direkt adressierbaren Speicherplatz. SQL Server 2005 (64-Bit) ist nicht an das 4-GB-Speicherlimit von 32-Bit-Systemen gebunden. Daher steht mehr Speicher zur Verfügung, um komplexe Abfragen durchzuführen und wichtige Datenbankoperationen zu unterstützen. Diese höhere Verarbeitungskapazität verringert die Nachteile der E / A-Latenz, da mehr Speicher als bei herkömmlichen 32-Bit-Systemen verwendet wird.

Verbesserte Parallelität: Die 64-Bit-Architektur bietet erweiterte Parallelität und Threading. Dank verbesserter Parallelverarbeitung und Busarchitekturen können 64-Bit-Plattformen eine größere Anzahl von Prozessoren (bis zu 64) unterstützen und gleichzeitig nahezu lineare Skalierbarkeit für jeden weiteren Prozessor gewährleisten. Mit einer größeren Anzahl von Prozessoren kann SQL Server mehr Prozesse, Anwendungen und Benutzer in einem einzigen System unterstützen.

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

Die dramatischsten Ergebnisse, die ich bei der Umstellung von 32-Bit- auf 64-Bit-SQL-Server (dies war SQL Server 2005) gesehen habe, waren etwa 40% mehr Geschwindigkeit für die Hauptanwendung eines Clients. Wir haben lediglich den 64-Bit-SQL-Server installiert, ansonsten war alles gleich! Das war ein großer Leistungsschub in der realen Welt.


-2

Sie können eine bessere Multitasking-Leistung erzielen, insbesondere bei Programmen mit integriertem Multithreading. Außerdem können Sie mit 64-Bit-Betriebssystemen mehr RAM installieren. Tun Sie dies jedoch nur, wenn der Prozessor 64-Bit-Anweisungen unterstützt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.