Vantagens de atualizar o Windows Server e o SQL Server de 32 bits para 64 bits?

13

Suponha que eu tenho uma caixa do Windows Server de 32 bits que opera vários aplicativos de servidor junto com o SQL Server, com um uso de RAM de cerca de 2 GB nos horários de pico.

Quais seriam as vantagens de atualizar o sistema operacional Windows Server e o SQL Server para as versões correspondentes de 64 bits, com os aplicativos de servidor permanecendo em 32 bits? As versões de 64 bits permitem acesso a mais de 4 GB de RAM, mas como 4 GB não estão sendo totalmente utilizados, isso tornaria a atualização irrelevante?

Versões: Windows Server 2008 R2, SQL Server 2008 R2 Datacenter Edition

obrigado

Alguém
fonte

Respostas:

19

Fortemente relacionado: Boas razões para manter os sistemas operacionais Microsoft Windows de 32 bits

Você está usando um sistema operacional de 64 bits. O Server 2008 R2 foi o primeiro a suportar apenas CPUs de 64 bits.

As versões "mais recentes" do Windows nem são projetadas para 32 bits. Talvez você não aproveite nada, mas não deve haver desvantagens. Dito isto: faça a atualização de qualquer maneira, pois o Server 2008 R2 SP1 (que espero que você esteja usando) será EOL de 2020-01-14 .

Quanto ao SQL Server 32 bits / 64 bits: Seu entendimento está correto, se você nunca precisar de> ~ 3,75 GB de RAM (ou> 2 GB por processo), poderá usar a versão de 32 bits sem problemas. Mas para versões mais recentes, não haverá nenhuma versão de 32 bits para instalar, pois a Microsoft mudou para apenas 64 bits.

Lenniey
fonte
6
O OP menciona "2 GB nos horários de pico"; portanto, é perfeitamente possível que o SQL Server queira usar mais de 2 GB, mas não pode devido ao limite do processo de 32 bits.
precisa saber é o seguinte
Poderia ser o caso, eu realmente não sei se o MS SQL Server 2008 usa múltiplos processos para diferentes tarefas / instâncias / bancos de dados / etc
Lenniey
11

Como já observado, você já está usando um sistema operacional de 64 bits. Há duas vantagens de mudar para uma versão de 64 bits do SQL Server e uma desvantagem.

A única desvantagem é que a versão de 64 bits do SQL Server usará ponteiros de 64 bits. Isso significa que os ponteiros ocuparão o dobro da memória, consumirão o dobro da largura de banda da memória e assim por diante. Provavelmente isso é insignificante, mas é uma desvantagem. É parcialmente compensado pelo fato de que a mudança para um aplicativo de 64 bits permitirá reduzir a sobrecarga da camada de compatibilidade que os aplicativos de 32 bits precisam usar para acessar as funções de um sistema operacional de 64 bits.

A principal vantagem é que inúmeras melhorias significativas foram feitas no conjunto de instruções da CPU ao longo do tempo. Alguns deles foram feitos juntamente com a alteração para 64 bits e outros foram feitos anteriormente.

Mas mesmo para as feitas anteriormente, a compilação de 32 bits precisa lidar com CPUs que não possuem esses recursos e evitar o incômodo de detecção e alternância entre várias instâncias, simplesmente não as utiliza mesmo onde estão presentes. Por exemplo, as CPUs de 64 bits devem ter SSE2, mas as de 32 bits podem não ter. Portanto, a maioria dos códigos de 32 bits simplesmente não se incomoda em verificar e não assume SSE2. O código de 64 bits garante a presença de instruções SSE2 e, portanto, será usado se for a melhor opção.

O maior deles é o aumento no número de registros de uso geral nomeados de 8 para 16. O número de registros XMM de 128 bits também foi dobrado, de 8 para 16.

Além disso, um processo de 64 bits pode fazer uso de grandes quantidades de memória virtual. Isso é especialmente importante nos processos que acessam grandes quantidades de dados estruturados no disco. E, é claro, eles podem usar operações inteiras de 64 bits que tendem a melhorar o desempenho da criptografia, compactação e até algumas operações do sistema de arquivos em grandes sistemas de arquivos.

David Schwartz
fonte
As instruções AVX e co realmente têm um impacto perceptível no desempenho do SQL Server? Eu assumiria (mas nunca o testei ou o comparou) que seria principalmente o subsistema de E / S do qual depende.
Voo
Alguns código de 32 bits moderna não assumir SSE2, especialmente quando rodando em um sistema operacional que suporta apenas CPUs novo o suficiente para ter SSE2 (juntamente com alguns outros recursos necessários). Presumo que a Microsoft compila seus itens com o MSVC, que tem uma /arch:SSE2opção para código de 32 bits, equivalente a gcc / clang / ICC -msse2. Eu acho que o SQL não tem muitos loops vetorizados SIMD, mas copiar pequenas estruturas com cargas / lojas SIMD de 16 bytes é bom.
Peter Cordes
Uma das mudanças mais importantes no x86-64 é o endereçamento relativo ao PC para obter um código independente de posição eficiente. As bibliotecas PIC de 32 bits geralmente têm uma desaceleração de ~ 10% ou ~ 15% (IIRC) vs. não PIC de 32 bits. Ter mais registros inteiros também ajuda muito. Uma grande vantagem em 64 bits é uma convenção de chamadas mais agradável, mas no Windows (ao contrário do Linux), o código de 32 bits __fastcallpassa os argumentos nos registradores para muitas funções. A convenção de chamada de 32 bits do Linux está puramente na pilha, por isso é uma porcaria para pequenas funções que não estão alinhadas.
Peter Cordes
Se a vetorização realmente importa muito para o desempenho, em vez de assumir / exigir algum nível de suporte específico, o código provavelmente está verificando a versão mais recente do SSE / AVX que a CPU suporta e chamando a implementação apropriada para obter o máximo de velocidade de qualquer sistema em execução em.
Dan is Fiddling por Firelight
@DanNeely Isso pressupõe que quem fez a compilação se esforçou para melhorar o desempenho da versão de 32 bits. Minha experiência, pelo menos, foi que eles geralmente assumem que as pessoas que se preocupam com o desempenho usarão a compilação de 64 bits.
David Schwartz
6

Fundamentalmente: Sim. Supondo que você nunca faça atualizações com apenas 4 bits - não há certeza de que exista um SQL Server de 32 bits mais recente que 2008.

Problemas com a sua pergunta: "As versões de 64 bits permitem acesso a mais de 4 GB de RAM" - faça com que 3 gb;) não 4. 1 gb é sempre reservado.

TomTom
fonte
Se somos tão cuidadosos, por que não estarmos corretos e mencionar que um programa de 32 bits pode acessar facilmente centenas de GB de RAM? ;) É apenas o espaço de endereço virtual que é limitado.
Voo
3
@Voo: E o SQL Server é um dos poucos programas que sabe como.
joshudson
6

Problema potencial: as bibliotecas DLL de UDFs (CLR) definidas pelo usuário exigirão suas versões de 64 bits.

Se você estiver usando uma biblioteca de funções definidas pelo usuário do CLR , ela se tornará incompatível com os bits. As DLLs de 32 bits geralmente não podem ser usadas no software de 64 bits e vice-versa. Se não conseguir obter a versão de 64 bits de alguma biblioteca UDF usada, você perderá essa extensão específica.

Basicamente, é o mesmo problema que a atualização de qualquer software de 32 bits com seus complementos para a versão de 64 bits. Você também precisa mudar todos os complementos para as versões de 64 bits. Geralmente é fácil, mas o problema é descontinuado onde as substituições não estão disponíveis.

miroxlav
fonte
3

Atuação!

Já existem várias respostas técnicas aqui, mas sem ser muito técnico e, dependendo do seu aplicativo, você deverá ver uma atualização de desempenho.

As peças principais são:

Grande endereçamento de memória: a arquitetura de 64 bits oferece um espaço de memória endereçável diretamente maior. O SQL Server 2005 (64 bits) não está vinculado ao limite de 4 GB de memória de sistemas de 32 bits. Portanto, mais memória está disponível para executar consultas complexas e dar suporte a operações essenciais do banco de dados. Essa maior capacidade de processamento reduz as penalidades de latência de E / S, utilizando mais memória do que os sistemas tradicionais de 32 bits.

Paralelismo aprimorado: a arquitetura de 64 bits fornece paralelismo e encadeamento avançados. As melhorias no processamento paralelo e nas arquiteturas de barramento permitem que as plataformas de 64 bits suportem um número maior de processadores (até 64), proporcionando escalabilidade quase linear com cada processador adicional. Com um número maior de processadores, o SQL Server pode suportar mais processos, aplicativos e usuários em um único sistema.

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

Os resultados mais dramáticos que vi ao passar do SQL Server de 32 bits para 64 bits (este era o SQL Server 2005) foram cerca de 40% de aumento de velocidade no aplicativo principal de um cliente. Tudo o que fizemos foi instalar o SQL Server de 64 bits, tudo o mais foi o mesmo! Esse foi um grande aumento de desempenho no mundo real.

yourcomputergenius
fonte
-2

Você pode ter um melhor desempenho multitarefa, especialmente em programas com multithreading pesado embutido. Além disso, você pode instalar mais ram com sistemas operacionais de 64 bits. Mas faça isso apenas se o processador suportar instruções de 64 bits.

Arvind Bakshi
fonte