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

Odpowiedzi:


19

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

Ci są 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ą.


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.


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.


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.


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.


-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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.