¿Ventajas de actualizar Windows Server y SQL Server de 32 bits a 64 bits?


13

Supongamos que tengo una caja de Windows Server de 32 bits que opera varias aplicaciones de servidor junto con un SQL Server, con un uso de RAM de aproximadamente 2 GB en las horas pico.

¿Cuáles serían las ventajas de actualizar el sistema operativo Windows Server y SQL Server a las versiones de 64 bits correspondientes, con las aplicaciones del servidor restantes como 32 bits? Las versiones de 64 bits permiten el acceso a más de 4 GB de RAM, pero dado que 4 GB no se utilizan por completo, ¿eso generaría la actualización discutible?

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

Gracias

Respuestas:


19

Muy relacionado: buenas razones para mantener sistemas operativos de escritorio Microsoft Windows de 32 bits

Usted está utilizando un sistema operativo de 64 bits. Server 2008 R2 fue el primero en admitir solo CPU de 64 bits.

Las versiones "más nuevas" de Windows ni siquiera están diseñadas para 32 bits. Quizás no aproveches nada, pero tampoco debería haber desventajas. Dicho esto: Actualice de todos modos, ya que Server 2008 R2 SP1 (que espero que esté usando) será EOL del 2020-01-14 .

En cuanto a SQL Server 32 bit / 64 bit: su comprensión es correcta, si nunca necesitará> ~ 3,75 GB de RAM (o> 2 GB por proceso), puede usar la versión de 32 bits sin problemas. Pero para las versiones más nuevas no habrá ninguna versión de 32 bits para instalar, ya que Microsoft cambió a 64 bits solamente.


66
OP menciona "2 GB en horas pico", por lo que es completamente posible que SQL Server quiera usar más de 2 GB, pero no puede debido al límite de proceso de 32 bits.
MonkeyZeus

Podría ser el caso, realmente no sabemos si MS SQL Server utiliza múltiples procesos de 2008 para diferentes tareas / instancias / bases de datos / etc
Lenniey

11

Como ya se señaló, ya está utilizando un sistema operativo de 64 bits. Hay dos ventajas de cambiar a una versión de 64 bits de SQL Server y una desventaja.

La única desventaja es que la versión de 64 bits de SQL Server utilizará punteros de 64 bits. Esto significa que los punteros ocuparán el doble de memoria, consumirán el doble de ancho de banda de memoria, etc. Es probable que esto sea bastante insignificante, pero es una desventaja. Está parcialmente compensado por el hecho de que cambiar a una aplicación de 64 bits le permitirá deshacerse de la sobrecarga de la capa de compatibilidad que las aplicaciones de 32 bits tienen que usar para acceder a las funciones de un sistema operativo de 64 bits.

La principal ventaja es que se realizaron numerosas mejoras significativas en el conjunto de instrucciones de la CPU a lo largo del tiempo. Algunos de ellos se hicieron junto con el cambio a 64 bits y algunos de ellos se hicieron previamente.

Pero incluso para los realizados anteriormente, la compilación de 32 bits tiene que manejar CPU que no tienen esas características y para evitar la molestia de detección y cambio entre múltiples instancias, simplemente no las usa incluso donde están presentes. Por ejemplo, las CPU de 64 bits deben tener SSE2, pero las CPU de 32 bits pueden no tenerlo. Por lo tanto, la mayoría del código de 32 bits simplemente no molesta la verificación y supone que no tiene SSE2. El código de 64 bits está seguro de que las instrucciones SSE2 están presentes y, por lo tanto, lo usarán si es la mejor opción.

El mayor es el aumento en el número de registros nombrados de uso general de 8 a 16. El número de registros XMM de 128 bits también se duplicó, de 8 a 16.

Además, un proceso de 64 bits puede hacer uso de grandes cantidades de memoria virtual. Esto es especialmente importante con los procesos que acceden a grandes cantidades de datos estructurados en el disco. Y, por supuesto, pueden usar operaciones de enteros de 64 bits que tienden a mejorar el rendimiento del cifrado, la compresión e incluso algunas operaciones del sistema de archivos en sistemas de archivos grandes.


¿Las instrucciones AVX y co tienen realmente un impacto notable en el rendimiento de SQL Server? Asumiría (pero nunca lo he comparado o probado) que en su mayoría sería el subsistema IO del que depende.
Voo

Algunos moderno código de 32 bits no asume SSE2, especialmente cuando se ejecuta en un sistema operativo que sólo es compatible con las CPUs nuevo basta con tener SSE2 (junto con algunas otras características requeridas). Supongo que Microsoft compila sus cosas con MSVC, que tiene una /arch:SSE2opción para el código de 32 bits, equivalente a gcc / clang / ICC -msse2. Supongo que SQL no tiene muchos bucles vectorizados SIMD, pero copiar pequeñas estructuras con cargas / tiendas SIMD de 16 bytes es bueno.
Peter Cordes

Uno de los cambios más importantes en x86-64 es el direccionamiento relativo a la PC para un código eficiente independiente de la posición. Las bibliotecas PIC de 32 bits suelen tener una ralentización de ~ 10% o ~ 15% (IIRC) frente a 32 bits sin PIC. Tener más registros enteros también ayuda mucho. Una gran ventaja en 64 bits es una convención de llamadas más agradable, pero en Windows (a diferencia de Linux) el código de 32 bits hace __fastcallpasar argumentos en registros para muchas funciones. La convención de llamadas de 32 bits de Linux está puramente en la pila, por lo que es bastante basura para las funciones pequeñas que no están en línea.
Peter Cordes

Si la vectorización realmente importa mucho para el rendimiento en lugar de asumir / requerir algún nivel de soporte específico, el código probablemente esté verificando la versión SSE / AVX más nueva que admite la CPU y llamando a la implementación adecuada para obtener la mayor velocidad del sistema que esté ejecutando en.
Dan está jugando con Firelight el

@DanNeely Eso supone que quien realizó la compilación se esforzó por mejorar el rendimiento de la versión de 32 bits. Mi experiencia, al menos, ha sido que a menudo asumen que las personas que se preocupan por el rendimiento usarán la compilación de 64 bits.
David Schwartz

6

Fundamentalmente: sí. Suponiendo que nunca realice actualizaciones que sean solo de 4 bits, no estoy seguro de que incluso haya un servidor SQL de 32 bits más reciente que 2008.

Problemas con su pregunta: "Las versiones de 64 bits permiten el acceso a más de 4 GB de RAM", haga que 3 gb;) no 4. 1 gb siempre está reservado.


Si somos tan quisquillosos, ¿por qué no ser correctos y mencionar que un programa de 32 bits puede acceder fácilmente a cientos de GB de RAM? ;) Es solo el espacio de direcciones virtuales lo que es limitado.
Voo

3
@Voo: Y SQL Server es uno de los pocos programas que sabe cómo hacerlo.
joshudson

6

Problema potencial: las bibliotecas DLL de funciones definidas por el usuario (UDF) CLR requerirán sus versiones de 64 bits.

Si está utilizando una biblioteca de funciones definidas por el usuario CLR , será incompatible con los bits. Las DLL de 32 bits no se pueden usar generalmente en software de 64 bits y viceversa. Si no puede obtener la versión de 64 bits de alguna biblioteca UDF que usa, perderá esa extensión específica.

Básicamente es el mismo problema que actualizar cualquier software de 32 bits con sus complementos a su versión de 64 bits. También debe cambiar todos los complementos a sus versiones de 64 bits. En general, es fácil, pero el problema son los descontinuados donde los reemplazos no están disponibles.


3

¡Actuación!

Ya hay varias respuestas técnicas aquí, pero sin ser demasiado técnico, y dependiendo de su aplicación, debería ver una actualización de rendimiento.

Las piezas principales son:

Dirección de memoria grande: la arquitectura de 64 bits ofrece un espacio de memoria directamente direccionable más grande. SQL Server 2005 (64 bits) no está sujeto al límite de memoria de 4 GB de los sistemas de 32 bits. Por lo tanto, hay más memoria disponible para realizar consultas complejas y admitir operaciones esenciales de la base de datos. Esta mayor capacidad de procesamiento reduce las penalizaciones de latencia de E / S al utilizar más memoria que los sistemas tradicionales de 32 bits.

Paralelismo mejorado: la arquitectura de 64 bits proporciona paralelismo y subprocesos avanzados. Las mejoras en el procesamiento paralelo y las arquitecturas de bus permiten que las plataformas de 64 bits admitan un mayor número de procesadores (hasta 64) al tiempo que proporcionan una escalabilidad casi lineal con cada procesador adicional. Con un mayor número de procesadores, SQL Server puede admitir más procesos, aplicaciones y usuarios en un solo sistema.

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

Los resultados más dramáticos que vi al pasar de SQL Server de 32 bits a 64 bits (esto fue SQL Server 2005) fue aproximadamente un aumento de velocidad del 40% en la aplicación principal de un cliente. Todo lo que hicimos fue instalar el SQL Server de 64 bits, ¡todo lo demás era igual! Ese fue un gran impulso de rendimiento en el mundo real.


-2

Puede tener un mejor rendimiento de multitarea, especialmente con programas que tienen muchos subprocesos integrados. Además, puede instalar más RAM con sistema operativo de 64 bits. Pero haga esto solo si el procesador admite instrucciones de 64 bits.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.