¿Debo instalar una base de datos de 32 bits o una base de datos de 64 bits?

16

(He leído mucho sobre sistemas operativos / aplicaciones de 64 bits frente a 32 bits, pero esta pregunta se refiere específicamente a las bases de datos).

Estoy tratando de entender los pros y los contras de las bases de datos de 32 bits frente a las de 64 bits y, en concreto, en qué condiciones comienza a tener sentido usar instalaciones de 64 bits.

Los sistemas de bases de datos que me interesan son: SQL Server 2008, MySQL y PostgreSQL 9.0.

He leído que las versiones anteriores a 9.0 de PostgreSQL solo vienen en 32 bits para Windows, y este artículo sobre la ejecución de PostgreSQL de 32 bits en Windows de 64 bits aclara parte de mi confusión, pero estoy buscando más información.

¿Cuándo me beneficiaría usar bases de datos de 64 bits (es decir, tamaño de la base de datos / espacio en disco, memoria del sistema disponible, tipos de sernarios de datos que se sabe que se benefician de él, qué motor de base de datos se está utilizando, etc.)?

JohnB
fuente

Respuestas:

20

bajo qué condiciones comienza a tener sentido usar instalaciones de 64 bits.

Debajo de todo, excepto ser idiota. Lo sentimos, ¿de qué sirve instalar una base de datos de 32 bits en un servidor de 64 bits? Y, imagine, SERVER 2008R2 SOLO está disponible en 64 bits.

Hoy en día, no hay ningún escenario en el que tenga sentido instalar una versión de SQL Server de 32 bits si hay una posibilidad.

Las bases de datos son específicas en esto, ya que quieren usar mucha memoria como caché si es necesario. Mucho más que los escasos 2 gb / 3 gb que un proceso de 32 bits puede darles. PAE no es lo mismo. Incluso ignorando los límites, la memoria PAE no es igual a la memoria real para un servidor SQL (solo se usa para UNA cosa: el almacenamiento en caché de páginas db).

Sistema operativo de 32 bits: está en el mismo nivel. no tiene ningún sentido en el hardware moderno para instalar un sistema operativo de 32 bits.

TomTom
fuente
44
+1 Amén Hermano !!
DaniSQL el
66
En cuanto al SO y las aplicaciones de 32 bits, existen algunas ventajas menores, como una menor huella de memoria.
JohnB
@TomTom: SQL Server 2008 R2 está disponible en 32 bits (desplácese ligeramente hacia abajo) msdn.microsoft.com/en-us/library/ms143506.aspx
JohnB
1
Sí, huella más pequeña. SADLY especialmente para bases de datos que es irrelevante. Una base de datos no es word. Trata, en la mayoría de las instalaciones, MUCHOS datos, por lo que tiene sentido acceder a MUCHOS RAM.
TomTom
1
... ¿Mucho ram es más de 4GB en un proceso? ¿Sabes cuántos servidores SQL no proporcionan eso para todo el servidor multiprocesado? No estoy argumentando que es una mala idea tener un sistema operativo de 64 bits y un servidor SQL, pero diré que hay muchas configuraciones donde no importa / en absoluto /.
Evan Carroll
6

PostgreSQL se beneficia de tener una compilación de 64 bits de dos maneras principales. Primero, los tipos de datos que pueden caber en 64 bits (enteros más grandes y tipos de marca de tiempo principalmente) se pueden pasar más eficientemente directamente en registros en lugar de usar punteros. En segundo lugar, es posible asignar más memoria para el caché de búfer dedicado de la base de datos. El punto de rendimientos decrecientes en ese sintonizable (shared_buffers) generalmente es de alrededor de 8 GB, pero estará limitado a <2 GB en un sistema de 32 bits.

Sin embargo, si está en Windows, PostgreSQL no maneja la memoria compartida de manera tan eficiente como en las plataformas UNIX-ish. El punto de disminución del rendimiento generalmente termina siendo <= 512 MB de memoria dedicada para la base de datos, ya sea que tenga una compilación de PostgreSQL de 32 o 64 bits. Será mejor que deje el resto para la memoria caché del sistema operativo en lugar de dedicarlo a la base de datos. En consecuencia, realmente no hay una gran ganancia de rendimiento que vaya de 32 a 64 bits con PostgreSQL en Windows; el principal sintonizable que normalmente se beneficiaría de tener más RAM disponible en realidad no lo utiliza muy bien.

Greg Smith
fuente
1
Tenga en cuenta que algunas personas informaron haber visto un beneficio de Windows PostgreSQL de 64 bits al establecer valores muy grandes para work_mem, lo que le permite al servidor ordenar grandes cantidades de datos en la memoria.
Greg Smith
4

Ejecuto MySQL en una arquitectura de 64 bits porque quiero que utilicen más eficientemente más de 4GB de memoria por hilo. En términos generales, esto debería aplicarse a todas las bases de datos.

Una de las principales diferencias entre las arquitecturas es un mayor direccionamiento que permite un mayor manejo de la memoria. Si bien la extensión de dirección física de Intel permite el direccionamiento de más de 4 GB, todavía está limitada a 4 GB por subproceso. PAE permite hasta un máximo de 64 GB.

Wikipedia tiene una comparación de 64 bits frente a 32 bits, que incluye más detalles de bajo nivel.

Warner
fuente
2
Es por proceso, no por hilo. Los hilos comparten el mismo espacio de memoria.
Evan Carroll
3

Tenga en cuenta que si solo tiene bibliotecas de cliente MySQL de 64 bits, obtendrá errores de "arquitectura incorrecta" cuando intente vincularlos con código de 32 bits. Esto me sucedió cuando intenté instalar enlaces de python ("pip install MySQL-python").

Se puede usar el servidor MySQL de 64 bits con un cliente MySQL de 32 bits y es una pena que el servidor de la comunidad MySQL no incluya versiones de biblioteca de cliente de 32 bits y 64 bits. La solución correcta es instalar bibliotecas de cliente MySQL adicionales de 32 bits. Sin embargo, dado que la forma más fácil de instalar MySQL parece ser la descarga binaria MySQL Community Server , y dado que el instalador de 64 bits viene solo con bibliotecas de cliente de 64 bits, la ruta de menor resistencia es simplemente descargar el instalador de 32 bits .

(todo esto, suponiendo que siempre usará conjuntos de datos muy pequeños)

Amit Moscovich
fuente
2

Para muchas cosas, 32 bits es una victoria (siempre que pueda vivir con el espacio de direcciones), pero DB es una cosa donde incluso las bases de datos pequeñas pueden obtener un impulso real en 64 bits. De acuerdo, no sé nada sobre el servidor MS SQL, pero he visto puntos de referencia (por ejemplo, en un Sun 5 (antiguo escritorio Sun de 64 bits), 32 bits generalmente era un poco más rápido, excepto mysql, que era 30 % más rápido en 64 bits.

Ronald Pottol
fuente
2
"Para tantas cosas, 32 bits es una victoria" - ¿Ejemplos?
Chris S
1
El único caso que puedo imaginar en el que una base de datos de 32 bits sería más rápida que 64 bits es si el código no se ha compilado con las optimizaciones adecuadas. En lo que respecta al software empresarial, las bases de datos son probablemente lo mejor que puede aprovechar lo que ofrece 64 bits.
John Gardeniers
1
Bueno, un gran número de puntos de referencia en la era de transición RISC 32> 64, y al menos el x86 temprano mostró poco o ningún beneficio para 64 bits, a menos que necesite el espacio de direcciones, y db do. Tampoco quería creerlo, y apuesto por x86 hoy, 64 bits siempre es más rápido (solo porque escapas de ese conjunto de instrucciones i32). Anandtech.com tiene puntos de referencia hasta que sangran sus globos oculares. Recuerde: MUESTREME LOS DATOS.
Ronald Pottol
1
En igualdad de condiciones, la principal desventaja que se me ocurre para 64 bits es con punteros más grandes (64 bits), que ocuparán más espacio en la memoria caché que una estructura de datos dinámica equivalente de 32 bits (es decir, listas enlazadas, árboles ...) Esto reduce la cantidad de memoria caché disponible. Este síntoma también persiste en la memoria principal. Mi servidor Debian de 64 bits con solo 64 Mb de RAM usa más intercambio y ejecuta menos aplicaciones que un servidor de 32 bits con una configuración similar.
sybreon
3
@ syybreon: ¡Creo que tengo un viejo 128mb por ahí si lo necesitas!
JohnB