Czy powinienem zainstalować 32-bitową bazę danych czy 64-bitową bazę danych?

16

(Dużo czytałem o 64-bitowym kontra 32-bitowym systemie operacyjnym / aplikacjach, ale to pytanie dotyczy w szczególności baz danych).

Próbuję zrozumieć zalety i wady 32-bitowych i 64-bitowych baz danych, a mianowicie, w jakich warunkach zacznie mieć sens używanie instalacji 64-bitowych.

Systemy baz danych, którymi jestem zainteresowany, to: SQL Server 2008, MySQL i PostgreSQL 9.0.

Przeczytałem, że wersje PostgreSQL w wersji wcześniejszej niż 9.0 są dostępne tylko w wersji 32-bitowej dla systemu Windows, a ten artykuł na temat uruchamiania 32-bitowej wersji PostgreSQL w 64-bitowym systemie Windows rozwiązuje niektóre moje problemy, ale szukam więcej informacji.

Kiedy skorzystam z korzystania z 64-bitowych baz danych (tj. Rozmiar bazy danych / miejsce na dysku, dostępna pamięć systemowa, typy sernariów danych, o których wiadomo, że z niej korzystają, jaki silnik bazy danych jest używany itp.)?

JohnB
źródło

Odpowiedzi:

20

w jakich warunkach korzystanie z instalacji 64-bitowych ma sens.

W ogóle poza byciem idiotą. Przepraszamy - po co instalować 32-bitową bazę danych na 64-bitowym serwerze? I - wyobraź sobie - SERVER 2008R2 jest dostępny TYLKO w wersji 64-bitowej.

Nie ma - na dzień dzisiejszy - scenariusza, w którym sensowne byłoby zainstalowanie 32-bitowej wersji SQL Server, jeśli jest taka szansa.

Bazy danych są w tym specyficzne - ponieważ w razie potrzeby chcą użyć dużej ilości pamięci jako pamięci podręcznej. O wiele więcej niż skromne 2 gb / 3 gb 32-bitowy proces może im dać. PAE to nie to samo. Nawet ignorując limity, pamięć PAE nie jest równa pamięci rzeczywistej dla SQL Servera (jest używana tylko do JEDNEJ rzeczy - buforowania stron db).

32-bitowy system operacyjny - jest na tym samym poziomie. na nowoczesnym sprzęcie nie ma sensu instalowanie 32-bitowego systemu operacyjnego.

TomTom
źródło
4
+1 Amen Bracie !!
DaniSQL,
6
Jeśli chodzi o 32-bitowy system operacyjny i aplikacje, istnieją pewne drobne zalety, takie jak mniejszy rozmiar pamięci.
JohnB
@TomTom: SQL Server 2008 R2 jest dostępny w wersji 32-bitowej (przewiń nieco w dół) msdn.microsoft.com/en-us/library/ms143506.aspx
JohnB
1
Tak, mniejszy ślad. SADLY, szczególnie w przypadku nieistotnych baz danych. Baza danych nie jest słowem. Zajmuje się - w większości instalacji - DUŻĄ ilością danych, więc dostęp do DUŻEJ pamięci RAM ma sens.
TomTom
1
... Dużo pamięci RAM ma więcej niż 4 GB w jednym procesie? Wiesz, ile serwerów SQL nie zapewnia tego dla całego serwera z wieloma procesami? Nie twierdzę, że to zły pomysł na 64-bitowy system operacyjny i serwer SQL, ale powiem, że istnieje wiele konfiguracji, w których to nie ma znaczenia / wcale /.
Evan Carroll
6

PostgreSQL korzysta z 64-bitowej wersji na dwa główne sposoby. Po pierwsze, typy danych, które mogą zmieścić się w 64-bitach (głównie większe liczby całkowite i typy znaczników czasu), mogą być bardziej efektywnie przekazywane bezpośrednio w rejestrach niż przy użyciu wskaźników. Po drugie, można przydzielić więcej pamięci na dedykowany bufor bufora bazy danych. Punkt malejących zwrotów z tego przestrajalnego (shared_buffers) wynosi zwykle około 8 GB, ale będzie ograniczony do <2 GB w systemie 32-bitowym.

Jednak w systemie Windows PostgreSQL nie obsługuje pamięci współużytkowanej tak skutecznie, jak na platformach UNIX. Punktem malejącego zwrotu jest zazwyczaj <= 512 MB pamięci dedykowanej dla bazy danych, niezależnie od tego, czy masz 32-bitową czy 64-bitową wersję PostgreSQL. Lepiej zostaw resztę pamięci podręcznej systemu operacyjnego niż dedykuj ją bazie danych. W związku z tym naprawdę nie ma tak dużego wzrostu wydajności z 32 do 64 bitów w przypadku PostgreSQL w systemie Windows; główny tuning, który normalnie skorzystałby z posiadania większej ilości pamięci RAM, w rzeczywistości nie wykorzystuje go zbyt dobrze.

Greg Smith
źródło
1
Zauważ, że niektóre osoby zgłosiły korzyści z 64-bitowego Windows PostgreSQL poprzez ustawienie bardzo dużych wartości dla work_mem, co pozwala serwerowi sortować większe ilości danych w pamięci.
Greg Smith
4

Używam MySQL na architekturze 64-bitowej, ponieważ chcę, aby najbardziej efektywnie wykorzystywały ponad 4 GB pamięci na wątek. Ogólnie rzecz biorąc, powinno to dotyczyć wszystkich baz danych.

Jedną z podstawowych różnic między architekturami jest zwiększone adresowanie, które pozwala na lepszą obsługę pamięci. Chociaż rozszerzenie adresu fizycznego firmy Intel umożliwia adresowanie powyżej 4 GB, nadal jest ograniczone do 4 GB na wątek. PAE pozwala na maksymalnie 64 GB.

Wikipedia ma porównanie wersji 64-bitowej i 32-bitowej, która zawiera więcej szczegółów na niskim poziomie.

Warner
źródło
2
Jest na proces, a nie na wątek. Wątki dzielą tę samą przestrzeń pamięci.
Evan Carroll
3

Pamiętaj, że jeśli masz tylko 64-bitowe biblioteki klienta MySQL, podczas próby połączenia ich z 32-bitowym kodem wystąpią błędy „niewłaściwej architektury”. Zdarzyło mi się to, gdy próbowałem zainstalować powiązania Pythona („pip install MySQL-python”).

Można używać 64-bitowego serwera MySQL z 32-bitowym klientem MySQL i szkoda, że ​​serwer społeczności MySQL nie zawiera 32-bitowej i 64-bitowej wersji biblioteki klienta. Poprawne rozwiązaniem jest zainstalowanie dodatkowych 32-bitowych bibliotek klienta MySQL. Ponieważ jednak najłatwiejszym sposobem zainstalowania MySQL jest pobieranie binarne MySQL Community Server , a biorąc pod uwagę, że 64-bitowy instalator jest wyposażony tylko w 64-bitowe biblioteki klienta, ścieżką najmniejszego oporu jest po prostu pobranie 32-bitowego instalatora .

(wszystko to przy założeniu, że zawsze będziesz używać bardzo małych zestawów danych)

Amit Moscovich
źródło
2

W przypadku tak wielu rzeczy 32-bitowy wygrywa (pod warunkiem, że możesz żyć z przestrzenią adresową), ale DB to jedna rzecz, w której nawet małe bazy danych mogą uzyskać prawdziwy wzrost wydajności w 64-bitowym. To prawda, że ​​nie wiem nic o serwerze MS SQL, ale widziałem testy porównawcze (na przykład na Sun 5 (starszy 64-bitowy pulpit Sun), 32-bitowy był ogólnie nieco szybszy, z wyjątkiem mysql, który miał 30 % szybciej w 64 bitach.

Ronald Pottol
źródło
2
„Tak wiele rzeczy daje 32-bit” - Przykłady?
Chris S
1
Jedyny przypadek, jaki mogę sobie wyobrazić, gdzie 32-bitowa baza danych byłaby szybsza niż 64-bitowa, to jeśli kod nie został skompilowany z odpowiednimi optymalizacjami. Jeśli chodzi o oprogramowanie biznesowe, bazy danych są prawdopodobnie czymś, co najlepiej wykorzystać oferty 64-bitowe.
John Gardeniers
1
Cóż, duża liczba testów porównawczych w erze przejścia na RISC 32> 64, a przynajmniej wczesna wersja x86 wykazała niewielką, jeśli w ogóle, korzyść dla wersji 64-bitowej, chyba że potrzebujesz przestrzeni adresowej i db. Też nie chciałem w to wierzyć i dzisiaj stawiam na x86, 64-bit jest zawsze szybszy (tylko dlatego, że uciekasz od zestawu instrukcji i32). Anandtech.com ma wzorce do momentu krwawienia gałek ocznych. Pamiętaj: POKAŻ MI DANE.
Ronald Pottol,
1
Wszystkie pozostałe są równe, główną wadą, którą mogę wymyślić dla wersji 64-bitowej, są większe wskaźniki (64-bity), które zajmą więcej miejsca w pamięci podręcznej niż równoważna 32-bitowa dynamiczna struktura danych (tj. Listy połączone, drzewa ...) Zmniejsza to ilość dostępnej pamięci podręcznej. Ten objaw utrzymuje się również w pamięci głównej. Mój 64-bitowy serwer Debian z zaledwie 64 MB pamięci RAM używa więcej swapów i działa mniej aplikacji niż podobnie skonfigurowany serwer 32-bitowy.
sybreon
3
@sybreon: Myślę, że mam starą 128 MB, jeśli jej potrzebujesz!
JohnB