Sollte ich eine 32-Bit-Datenbank oder eine 64-Bit-Datenbank installieren?

16

(Ich habe viel über 64-Bit- und 32-Bit-Betriebssysteme / Apps gelesen, aber diese Frage bezieht sich speziell auf Datenbanken.)

Ich versuche, die Vor- und Nachteile von 32-Bit- und 64-Bit-Datenbanken zu verstehen, und zwar, unter welchen Bedingungen die Verwendung von 64-Bit-Installationen sinnvoll wird.

Die Datenbanksysteme, an denen ich interessiert bin, sind: SQL Server 2008, MySQL und PostgreSQL 9.0.

Ich habe gelesen, dass PostgreSQL-Versionen vor 9.0 nur in 32-Bit-Version für Windows verfügbar sind, und dieser Artikel über das Ausführen von 32-Bit-PostgreSQL unter 64-Bit -Version für Windows beseitigt einige meiner Probleme, aber ich suche nach weiteren Informationen.

Wann würde ich von der Verwendung von 64-Bit-Datenbanken profitieren (dh Datenbankgröße / Festplattenspeicher, verfügbarer Systemspeicher, Arten von Datensernarios, von denen bekannt ist, dass sie davon profitieren, welches Datenbankmodul verwendet wird usw.)?

JohnB
quelle

Antworten:

20

Unter welchen Umständen ist es sinnvoll, 64-Bit-Installationen zu verwenden?

Unter allen, außer idiotisch zu sein. Entschuldigung - was nützt es, eine 32-Bit-Datenbank auf einem 64-Bit-Server zu installieren? Und - stellen Sie sich vor - SERVER 2008R2 ist NUR in 64-Bit verfügbar.

Es gibt - heute - kein Szenario, in dem es sinnvoll ist, eine 32-Bit-SQL Server-Version zu installieren, wenn man eine Chance hat.

Datenbanken sind diesbezüglich spezifisch, da sie bei Bedarf viel Speicher als Cache verwenden möchten. Viel mehr als die mageren 2 GB / 3 GB kann ein 32-Bit-Prozess ihnen geben. PAE ist nicht dasselbe. PAE-Speicher ist auch bei Nichtbeachtung von Einschränkungen nicht mit dem realen Speicher eines SQL-Servers identisch (er wird nur zum Zwischenspeichern von DB-Seiten verwendet).

32-Bit-Betriebssystem - ist auf der gleichen Ebene. Auf moderner Hardware macht es überhaupt keinen Sinn, ein 32-Bit-Betriebssystem zu installieren.

TomTom
quelle
4
+1 Amen Bruder !!
DaniSQL
6
Was 32-Bit-Betriebssysteme und Apps anbelangt, gibt es einige kleinere Vorteile, z. B. einen geringeren Speicherbedarf.
JohnB
@TomTom: SQL Server 2008 R2 ist in 32-Bit- Version
JohnB
1
Ja, kleinerer Platzbedarf. SADLY speziell für Datenbanken ist das irrelevant. Eine Datenbank ist kein Wort. Es behandelt - bei den meisten Installationen - VIELE Daten, so dass der Zugriff auf VIELE RAM sinnvoll ist.
TomTom
1
... viele RAM mehr als 4 GB in einem Prozess? Sie wissen, wie viele SQL Server das nicht für den gesamten mehrfach verarbeiteten Server bereitstellen? Ich behaupte nicht, dass es eine schlechte Idee ist, ein 64-Bit-Betriebssystem und einen SQL-Server zu haben, aber ich werde sagen, dass es viele Konfigurationen gibt, bei denen es / überhaupt / keine Rolle spielt.
Evan Carroll
6

PostgreSQL profitiert von einem 64-Bit-Build auf zwei Arten. Erstens können Datentypen, die in 64-Bit passen (hauptsächlich größere Ganzzahlen und Zeitstempeltypen), effizienter direkt in Registern weitergegeben werden, anstatt Zeiger zu verwenden. Zweitens ist es möglich, mehr Speicher für den dedizierten Puffercache der Datenbank zu reservieren. Der Punkt, an dem die Renditen für dieses abstimmbare Element (shared_buffers) verringert werden, liegt normalerweise bei 8 GB, ist jedoch auf einem 32-Bit-System auf <2 GB beschränkt.

Unter Windows kann PostgreSQL Shared Memory jedoch nicht so effizient verarbeiten wie auf UNIX-basierten Plattformen. Der Punkt, an dem die Rendite abnimmt, ist im Allgemeinen <= 512 MB dedizierter Speicher für die Datenbank, unabhängig davon, ob Sie eine 32-Bit- oder eine 64-Bit-Version von PostgreSQL verwenden. Sie sollten den Rest lieber dem Cache des Betriebssystems überlassen, anstatt ihn der Datenbank zuzuweisen. Dementsprechend gibt es mit PostgreSQL unter Windows wirklich keinen so großen Leistungszuwachs von 32 auf 64 Bit. Das Haupt-Tunable, das normalerweise von mehr verfügbarem RAM profitieren würde, nutzt es nicht wirklich sehr gut.

Greg Smith
quelle
1
Beachten Sie, dass einige Benutzer von 64-Bit-Windows PostgreSQL berichtet haben, indem sie für work_mem sehr große Werte festgelegt haben, mit denen der Server größere Datenmengen im Speicher sortieren kann.
Greg Smith
4

Ich führe MySQL auf einer 64-Bit-Architektur aus, weil ich möchte, dass sie mehr als 4 GB Speicher pro Thread am effizientesten nutzen. Im Allgemeinen sollte dies für alle Datenbanken gelten.

Einer der Hauptunterschiede zwischen den Architekturen besteht darin, dass eine erhöhte Adressierung eine größere Speicherhandhabung ermöglicht. Die physische Adresserweiterung von Intel ermöglicht zwar die Adressierung von mehr als 4 GB, ist jedoch auf 4 GB pro Thread beschränkt. PAE ermöglicht maximal 64 GB.

Wikipedia hat einen Vergleich zwischen 64-Bit und 32-Bit, der mehr Details auf niedriger Ebene enthält.

Warner
quelle
2
Es ist pro Prozess, nicht pro Thread. Threads teilen sich den gleichen Speicherplatz.
Evan Carroll
3

Beachten Sie, dass bei Verwendung von 64-Bit-MySQL-Clientbibliotheken beim Versuch, sie mit 32-Bit-Code zu verknüpfen, "falsche Architektur" -Fehler auftreten. Dies ist mir passiert, als ich versucht habe, Python-Bindings zu installieren ("pip install MySQL-python").

Man kann einen 64-Bit-MySQL-Server mit einem 32-Bit-MySQL-Client verwenden, und es ist eine Schande, dass der MySQL-Community-Server nicht sowohl 32-Bit- als auch 64-Bit-Client-Bibliotheksversionen enthält. Die richtige Lösung besteht darin, zusätzliche 32-Bit-MySQL-Client-Bibliotheken zu installieren. Da der einfachste Weg zur Installation von MySQL der binäre Download von MySQL Community Server zu sein scheint und das 64-Bit-Installationsprogramm nur 64-Bit-Client-Bibliotheken enthält, besteht der Pfad des geringsten Widerstands darin, nur das 32-Bit-Installationsprogramm herunterzuladen .

(alles unter der Annahme, dass Sie immer sehr kleine Datenmengen verwenden)

Amit Moscovich
quelle
2

Für so viele Dinge ist 32 Bit ein Gewinn (solange Sie mit dem Adressraum leben können), aber DB sind eine Sache, bei der selbst kleine Datenbanken einen echten Schub in 64 Bit bekommen können. Zugegeben, ich kenne mich mit MS SQL Server nicht aus, aber ich habe Benchmarks gesehen (z. B. bei Sun 5 (älterer 64-Bit-Sun-Desktop)), 32-Bit war im Allgemeinen etwas schneller, mit Ausnahme von MySQL (30) % schneller in 64 bit.

Ronald Pottol
quelle
2
"Für so viele Dinge ist 32 Bit ein Gewinn" - Beispiele ??
Chris S
1
Ich kann mir nur vorstellen, dass eine 32-Bit-Datenbank schneller als 64-Bit ist, wenn der Code nicht mit entsprechenden Optimierungen kompiliert wurde. Für Unternehmenssoftware sind Datenbanken wahrscheinlich die beste Möglichkeit, die 64-Bit-Angebote zu nutzen.
John Gardeniers
1
Nun, eine große Anzahl von Benchmarks in der Übergangszeit von RISC 32> 64 und zumindest das frühe x86 zeigten wenig oder keinen Nutzen für 64-Bit, es sei denn, Sie benötigen den Adressraum und db tun dies. Ich wollte es auch nicht glauben, und ich wette, dass 64-Bit für x86 heute immer schneller ist (nur weil Sie diesem i32-Befehlssatz entkommen). Anandtech.com hat Benchmarks, bis Ihre Augäpfel bluten. Denken Sie daran: Zeigen Sie mir die Daten.
Ronald Pottol
1
Wenn alles andere gleich ist, ist der Hauptnachteil, den ich mir für 64-Bit vorstellen kann, bei größeren Zeigern (64-Bit), die mehr Cache-Speicherplatz belegen als eine entsprechende dynamische 32-Bit-Datenstruktur (dh verknüpfte Listen, Bäume) ...). Dies reduziert den verfügbaren Cache-Speicher. Dieses Symptom bleibt auch im Hauptspeicher bestehen. Mein 64-Bit-Debian-Server mit nur 64 MB RAM verwendet mehr Swap und führt weniger Apps aus als ein ähnlich eingerichteter 32-Bit-Server.
Sybreon
3
@sybreon: Ich glaube ich habe ein altes 128mb rumliegen wenn du es brauchst!
JohnB