(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.)?
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.
quelle
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.
quelle
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)
quelle
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.
quelle