Zalety uaktualnienia 32-bitowego systemu Windows Server i SQL Server do 64-bitowego?

13

Załóżmy, że mam 32-bitowy system Windows Server, który obsługuje kilka aplikacji serwerowych wraz z serwerem SQL Server, z wykorzystaniem pamięci RAM około 2 GB w godzinach szczytu.

Jakie byłyby zalety uaktualnienia systemu operacyjnego Windows Server i SQL Server do odpowiednich wersji 64-bitowych, a aplikacje serwera pozostały jako 32-bitowe? Wersje 64-bitowe umożliwiają dostęp do ponad 4 GB pamięci RAM, ale skoro 4 GB nie jest w pełni wykorzystywane, czy to oznaczałoby, że uaktualnienie jest dyskusyjne?

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

Dzięki

Ktoś
źródło

Odpowiedzi:

19

Silnie powiązane: Dobre powody, aby zachować 32-bitowe systemy operacyjne Microsoft Windows

Ci za pomocą 64-bitowym systemie operacyjnym. Server 2008 R2 był pierwszym, który obsługiwał tylko 64-bitowe procesory.

„Nowsze” wersje systemu Windows nie są nawet przeznaczone dla wersji 32-bitowej. Być może nic nie skorzystasz, ale nie powinno być żadnych wad. To powiedziawszy: Zaktualizuj mimo to, ponieważ Server 2008 R2 SP1 (mam nadzieję, że używasz) będzie EOL od 2020-01-14 .

Jeśli chodzi o SQL Server 32-bitowy / 64-bitowy: Twoje zrozumienie jest prawidłowe, jeśli nigdy nie będziesz potrzebować> ~ 3,75 GB pamięci RAM (lub> 2 GB na proces), możesz używać wersji 32-bitowej bez problemów. Ale w nowszych wersjach nie będzie żadnej wersji 32-bitowej do zainstalowania, ponieważ Microsoft przeszedł tylko na wersję 64-bitową.

Lenniey
źródło
6
OP wspomina o „2 GB w godzinach szczytu”, więc jest całkowicie możliwe, że SQL Server chce użyć więcej niż 2 GB, ale nie jest to możliwe ze względu na 32-bitowy limit procesu.
MonkeyZeus
Może być przypadek, ja naprawdę nie wiem, czy MS SQL Server 2008 korzysta z wielu procesów dla różnych zadań / wystąpień / baz danych / itp
Lenniey
11

Jak już wspomniano, używasz już 64-bitowego systemu operacyjnego. Istnieją dwie zalety przejścia na 64-bitową wersję programu SQL Server i jedna wada.

Jedyną wadą jest to, że 64-bitowa wersja SQL Server będzie używać 64-bitowych wskaźników. Oznacza to, że wskaźniki zajmą dwa razy więcej pamięci, zużyją dwa razy więcej pasma pamięci i tak dalej. Jest to prawdopodobnie dość nieistotne, ale jest to wada. Częściowo rekompensuje to fakt, że przejście na aplikację 64-bitową pozwoli na zrzucenie narzutu warstwy kompatybilności, z której muszą korzystać 32-bitowe aplikacje, aby uzyskać dostęp do funkcji 64-bitowego systemu operacyjnego.

Główną zaletą jest to, że z czasem wprowadzono wiele znaczących ulepszeń w zestawie instrukcji procesora. Niektóre z nich zostały wykonane wraz ze zmianą na 64-bitowe, a niektóre zostały wykonane wcześniej.

Ale nawet w przypadku tych wykonanych wcześniej, wersja 32-bitowa musi obsługiwać procesory, które nie mają tych funkcji i aby uniknąć kłopotów z wykrywaniem i przełączaniem między wieloma instancjami, po prostu nie używa ich nawet tam, gdzie są obecne. Na przykład 64-bitowe procesory muszą mieć SSE2, ale 32-bitowe procesory mogą tego nie robić. Dlatego większość 32-bitowego kodu po prostu nie przeszkadza w sprawdzaniu i nie zakłada SSE2. Zapewniony jest 64-bitowy kod Instrukcje SSE2 są obecne, więc użyje go, jeśli jest to najlepsza opcja.

Największym jest wzrost liczby nazwanych rejestrów ogólnego przeznaczenia z 8 do 16. Podwojono również liczbę 128-bitowych rejestrów XMM, z 8 do 16.

Ponadto proces 64-bitowy może korzystać z dużej ilości pamięci wirtualnej. Jest to szczególnie ważne w przypadku procesów, które uzyskują dostęp do dużych ilości ustrukturyzowanych danych na dysku. I oczywiście mogą korzystać z 64-bitowych operacji na liczbach całkowitych, które mają tendencję do poprawiania wydajności szyfrowania, kompresji, a nawet niektórych operacji systemu plików na dużych systemach plików.

David Schwartz
źródło
Czy instrukcje AVX i co tak naprawdę mają zauważalny wpływ na wydajność programu SQL Server? Zakładałbym (ale nigdy go nie testowałem ani nie testowałem), że będzie to głównie podsystem IO, od którego zależy.
Voo,
Niektóre nowoczesne kod 32-bitowy nie zakładamy SSE2, zwłaszcza gdy działa na systemie operacyjnym, który obsługuje tylko procesorów nowy wystarczy mieć SSE2 (wraz z innymi wymaganymi funkcjami). Zakładam, że Microsoft kompiluje swoje rzeczy z MSVC, które mają /arch:SSE2opcję dla kodu 32-bitowego, równoważnego gcc / clang / ICC -msse2. Domyślam się, że SQL nie ma wielu wektoryzowanych pętli SIMD, ale kopiowanie małych struktur za pomocą 16-bajtowych ładowań / sklepów SIMD jest przyjemne.
Peter Cordes,
Jedną z ważniejszych zmian w architekturze x86-64 jest adresowanie względne dla komputerów PC w celu uzyskania wydajnego kodu niezależnego od pozycji. Biblioteki 32-bitowe PIC zwykle mają ~ 10% lub ~ 15% spowolnienia (IIRC) w porównaniu z 32-bitowymi wersjami bez PIC. Posiadanie większej liczby rejestrów liczb całkowitych również bardzo pomaga. Dużą zaletą w wersji 64-bitowej jest ładniejsza konwencja wywoływania, ale w systemie Windows (w przeciwieństwie do Linuksa) kod 32-bitowy __fastcallprzekazuje argumenty do rejestrów wielu funkcji. 32-bitowa konwencja wywoływania Linuksa jest czysto stosowa, więc jest to bzdura dla małych funkcji, które nie są wbudowane.
Peter Cordes,
Jeśli wektoryzacja naprawdę ma duże znaczenie dla wydajności, zamiast zakładać / wymagać określonego poziomu wsparcia, kod prawdopodobnie sprawdza najnowszą wersję SSE / AVX obsługiwaną przez procesor i wywołuje odpowiednią implementację, aby uzyskać jak największą prędkość z dowolnego uruchomionego systemu na.
Dan bawi się Firelight
@ DanNeely That zakłada, że ​​ktokolwiek poczynił kompilację, włożył wysiłek w poprawę wydajności wersji 32-bitowej. Przynajmniej z mojego doświadczenia wynika, że ​​często zakładają, że ludzie, którym zależy na wydajności, będą używać wersji 64-bitowej.
David Schwartz
6

Zasadniczo: tak. Zakładając, że nigdy nie wprowadzasz aktualizacji, które są wtedy tylko 4-bitowe - nie jestem pewien, czy istnieje nawet 32-bitowy SQL Server nowszy niż 2008.

Problemy z pytaniem: „Wersje 64-bitowe umożliwiają dostęp do więcej niż 4 GB pamięci RAM” - uczyń to 3 GB;) nie 4. 1 GB jest zawsze zarezerwowane.

TomTom
źródło
Jeśli jesteśmy tak wybredni, dlaczego nie mieć racji i wspomnieć, że 32-bitowy program może łatwo uzyskać dostęp do setek GB pamięci RAM? ;) Tylko wirtualna przestrzeń adresowa jest ograniczona.
Voo,
3
@Voo: A SQL Server jest jednym z niewielu programów, które wiedzą, jak to zrobić.
joshudson
6

Potencjalny problem: biblioteki DLL funkcji zdefiniowanych przez użytkownika CLR (UDF) będą wymagały ich 64-bitowych wersji.

Jeśli używasz biblioteki funkcji zdefiniowanych przez użytkownika CLR , stanie się ona nieco niezgodna. 32-bitowych bibliotek DLL nie można generalnie używać w oprogramowaniu 64-bitowym i odwrotnie. Jeśli nie możesz uzyskać 64-bitowej wersji używanej biblioteki UDF, utracisz to konkretne rozszerzenie.

Zasadniczo jest to ten sam problem, co aktualizacja dowolnego oprogramowania 32-bitowego z dodatkami do wersji 64-bitowej. Musisz także przełączyć wszystkie dodatki na ich wersje 64-bitowe. Zasadniczo jest to łatwe, ale problem rozwiązuje się, gdy zamienniki nie są dostępne.

miroxlav
źródło
3

Występ!

Istnieje już kilka technicznych odpowiedzi, ale bez nadmiernej wiedzy technicznej iw zależności od aplikacji powinieneś zobaczyć ulepszenie wydajności.

Główne elementy to:

Adresowanie dużej pamięci: 64-bitowa architektura oferuje większą pamięć bezpośrednio adresowalną. SQL Server 2005 (64-bitowy) nie jest ograniczony limitem 4 GB pamięci w systemach 32-bitowych. Dlatego dostępna jest większa pamięć do wykonywania złożonych zapytań i obsługi podstawowych operacji na bazie danych. Ta większa wydajność przetwarzania zmniejsza kary za opóźnienie we / wy, wykorzystując więcej pamięci niż tradycyjne systemy 32-bitowe.

Zwiększona równoległość: 64-bitowa architektura zapewnia zaawansowaną równoległość i wątkowanie. Udoskonalenia w architekturze przetwarzania równoległego i magistrali umożliwiają platformom 64-bitowym obsługę większej liczby procesorów (do 64), zapewniając jednocześnie niemal liniową skalowalność z każdym dodatkowym procesorem. Dzięki większej liczbie procesorów SQL Server może obsługiwać więcej procesów, aplikacji i użytkowników w jednym systemie.

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

Najbardziej dramatyczne wyniki, jakie widziałem, przechodząc z 32-bitowego na 64-bitowy SQL Server (był to SQL Server 2005), to wzrost o około 40% w głównej aplikacji klienta. Wszystko, co zrobiliśmy, to zainstalowanie 64-bitowego programu SQL Server, wszystko inne było takie samo! To był znaczący wzrost wydajności w prawdziwym świecie.

twój komputerowy
źródło
-2

Możesz uzyskać lepszą wydajność wielozadaniowości, szczególnie w przypadku programów, które mają wbudowane intensywne wielowątkowość. Ponadto możesz zainstalować więcej pamięci RAM z 64-bitowym systemem operacyjnym. Ale rób to tylko wtedy, gdy procesor obsługuje instrukcje 64-bitowe.

Arvind Bakshi
źródło