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
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.
źródło
/arch:SSE2
opcję 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.__fastcall
przekazuje 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.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.
źródło
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.
źródło
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:
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.
źródło
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.
źródło