Ile pamięci należy zarezerwować na dedykowanym serwerze bazy danych dla systemu operacyjnego?


38

Zakładając, że masz dedykowany serwer do obsługi funkcji bazy danych - ile pamięci należy zarezerwować dla systemu operacyjnego?

Zdaję sobie sprawę, że prawdopodobnie będzie się to nieco różnić w zależności od konkretnego systemu operacyjnego, konkretnego oprogramowania bazy danych i tak dalej. Ponieważ jednak pamięć jest tak ważna dla wydajności bazy danych, chcę, aby baza danych miała maksymalny rozsądny poziom pamięci, bez głodzenia systemu operacyjnego hosta.

Więc

  • co jest dobrą ogólną zasadą na początek?
  • na jakie liczniki lub wskaźniki wydajności powinniśmy spojrzeć, aby stwierdzić, czy posunęliśmy się za daleko i czy baza danych w jakiś sposób głoduje system operacyjny?

czy kiedykolwiek poprawiliście te ustawienia? Co powiedział ci profilowanie?
jcolebrand

@jcole nic do dodania w tej chwili; zwykle rezerwujemy 4 - 6 GB na system operacyjny, który jest nieco bardziej konserwatywny niż chciałbym
Jeff Atwood

Odpowiedzi:


30

Zakładając Windows i SQL Server ...

Istnieją dwie szkoły myślenia.

  1. Pozostaw 2-4 Gigs dla Windows (w zależności od tego, co jest zainstalowane oprócz SQL Server).
  2. Pozostaw 10% dostępnej pamięci wolnej. Gdy zdobędziesz ponad 64 koncertów, stanie się to szaloną dużą ilością pamięci do pozostawienia dla systemu operacyjnego, której prawdopodobnie nie będzie potrzebować.

Osobiście jestem w pierwszej grupie. Windows zwykle potrzebuje tylko 2-4 koncertów, czasem nawet do 6.


2
Skonfiguruj 2 GB pamięci RAM dla systemu operacyjnego.
jcolebrand

Również się zgadzam. Zwykle zostawiam 2 GB dla systemu operacyjnego i zapewniam ciągłe miejsce na stronie. Oczywiście przebieg może się różnić, a najlepszym rozwiązaniem jest skonfigurowanie ustawienia, monitorowanie wydajności i wprowadzanie ostrożnych zmian w razie potrzeby.
Matt M.

2
@matt prawda, ale co konkretnie najlepiej monitorować, patrząc na „czy głoduję system operacyjny z pamięci?”
Jeff Atwood

1
@Jeff Mój komentarz nie był tak precyzyjny, jak powinien. Jeśli chodzi o pamięć, zwykle patrzę na następujące liczniki wydajności: Pamięć: Strony / sek. I Pamięć: Dostępne bajty. Sprawdź te strony, aby uzyskać więcej informacji: sql-server-performance.com/articles/audit/… i technet.microsoft.com/en-us/library/cc966540.aspx (konkretnie sekcja wąskich gardeł w pamięci)
Matt M

6
Odpowiedź @Jeff Denny jest prawidłowa, a dla liczników Perfmon obejrzyj Pamięć: dostępne bajty. Jeśli spadnie poniżej, powiedzmy, 512 MB, grozi ci głodzenie systemu operacyjnego. Należy jednak pamiętać o pamięci podręcznej plików w systemach 64-bitowych, która nadal pojawia się jako dostępna, nawet jeśli nie jest: blogs.msdn.com/b/ntdebugging/archive/2007/11/27/…
Brent

16

Zakładając, że Linux, jeśli wyłączysz swap, a jądro nadal zabija proces DB, ponieważ brakuje pamięci, jest to dobry wskaźnik głodu pamięci dla systemu operacyjnego. Cofaj się, aż to się skończy. Kilkaset megapikseli to zwykle dużo.


+1 za profil profilu profil ~ jednak będąc Jeffem pytam Domyślam się, że to SQLServer i Windows na pewno;)
jcolebrand

1
@jcolebrand, ale wiedząc, że to @ jeff rozpoznasz, że nie powiedział, co oznacza, że ​​celowo pozostawił to otwarte dla wszystkich platform i baz danych.
Xenoterracide

2
I wciąż wiedząc, że to @jeff ... dlaczego nie miałby nauczyć się przestać martwić i pokochać Linuksa? ;-)
Jürgen A. Erhard

8

Tutaj możesz wykorzystać doświadczenie Amazon z działaniem tysięcy serwerów baz danych klientów: w usłudze Amazon Relational Database Service ustawiają pulę buforów innodb MySQL na 3/4 pamięci systemu, niezależnie od tego, ile to jest pamięci. Dodaj do kilku megabajtów na połączenie dla różnych buforów zapytań i prawdopodobnie pozostawiają 10-20% pamięci w systemie operacyjnym.


5

Powinieneś przeczytać pamięć Brenta Ozara . Ma kilka dość standardowych odpowiedzi na pytanie, dlaczego powinieneś szukać pamięci i dlaczego więcej pamięci oznacza lepszą wydajność. Ogólnie 4 GB lub 10% zarezerwowane dla systemu operacyjnego.

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.