Czy mogę zmieścić cały DB w pamięci?

9

Moja baza danych ma rozmiar około 1 GB (zgodnie z plikiem mdf mojej bazy danych). Mój serwer bazy danych ma 4 GB pamięci RAM. Patrząc na zużycie pamięci na komputerze, gdy jest on aktywny, jest w około 85% używany (w tym system operacyjny itp.)

Czy to oznacza, że ​​cała aktywność odczytu DB działa tylko w pamięci (tzn. Cała baza danych siedzi w pamięci)? czy jest jeszcze przypadek, w którym musiałby przejść na dysk?


źródło
1
Dla porównania, jakie jest zastosowanie, gdy aplikacja nie jest aktywna? Zasadniczo jedną z zalet systemu bazy danych jest to, że nie potrzebuje on pełnego pliku w pamięci, ale zmieści to, co wyciągniesz z niego do pamięci, dopóki nie opróżnisz go w innym miejscu. Będę musiał zadeklarować „nie”.
Grant Thomas
@Pan. Rozczarowanie: Zgadzam się, że jest to korzyść, ale czy w przypadku, gdy może on zapisać cały plik w pamięci (tak jak w tym przypadku), prawda?
Jeśli to konieczne, to tak. Ale na żądanie dzwoniących i wymaganych przez nich danych, oczywiście nie natywnie. Ogólnie rzecz biorąc, jeśli masz problem z pamięcią bazy danych, będzie to związane z kodem wywołującym lub oprogramowaniem obsługującym lub ich kombinacją.
Grant Thomas
1
Przykład perspektywy: znam bardzo dużą firmę internetową posiadającą kilka bardzo dużych stron portalu. Dostarczają ok. 300 milionów reklam od ich własnych adserverów dla tych portali. Struktura serwerów reklamowych jest taka, że ​​istnieje jedna duża baza danych Oracle ze wszystkimi informacjami do rozliczania i kierowania, ale istnieją 32 duże (32 GB pamięci RAM) serwery przechowujące mniejsze bazy danych (tylko aktualnie aktywne reklamy) w pamięci RAM . Nie dotykają dysku, nie mogą: mają tylko 1/1000 sekundy, aby znaleźć reklamę do umieszczenia po zapytaniu o nią, dostęp do dysku uniemożliwiłby osiągnięcie tego celu.

Odpowiedzi:

5

Tak, cała baza danych jest prawdopodobnie przechowywana w pamięci. Spłukuje brudne strony na dysk w odstępach kontrolnych. Zauważ jednak, że wszystkie aktualizacje będą musiały zapisać do dziennika i poczekać, aż rekordy dziennika zostaną zahartowane na trwałym nośniku przed zatwierdzeniem. Ta stara papierowa podstawa We / Wy programu SQL Server 2000 zawiera wszystkie potrzebne informacje i jeszcze więcej.

Ale nie musisz zgadywać, możesz dokładnie to zmierzyć i sprawdzić, czy to się stanie, czy nie. Odpowiednimi licznikami wydajności są:

  • Oczekiwana długość życia strony Liczba sekund, przez które strona pozostanie w puli buforów bez odniesień.
  • Odczyty strony / s Liczba fizycznych odczytów strony bazy danych, które są wysyłane na sekundę. Ta statystyka wyświetla całkowitą liczbę fizycznych odczytów stron we wszystkich bazach danych. Ponieważ fizyczne operacje we / wy są drogie, możesz zminimalizować koszty, albo używając większej pamięci podręcznej danych, inteligentnych indeksów i wydajniejszych zapytań, albo zmieniając projekt bazy danych.
  • Liczba zapisów strony / s Liczba fizycznych zapisów stron bazy danych na sekundę.
Remus Rusanu
źródło
„Tak, cała baza danych jest prawdopodobnie przechowywana w pamięci”. Tak więc, w przypadku naszego serwera produkcyjnego, z co najmniej ~ 60 stron internetowych wykorzystujących dedykowaną bazę danych w SQL Server Master, gdzie nawet tylko kilka z nich odpowiada wielkości większej niż dostępna pamięć maszyny, jak to działa ? Kusi mnie, aby powiedzieć, że nie ma definitywnego domyślnego ustawienia ani prawdopodobieństwa któregokolwiek ze scenariuszy - zgodnie z moim wcześniejszym komentarzem jest on bardziej zależny od środowiska niż silnika.
Grant Thomas
@Pan. Rozczarowanie: stosujecie moją odpowiedź na inne pytanie. PO powiedział My database is about 1gb in size (according to the mdf file of my db). My database server has 4gb of ram.. Jeśli chcesz uzyskać odpowiedź na tę sprawę, gdy masz 60 stron internetowych i jak działa buforowanie puli buforów w tym przypadku, zadaj to pytanie :)
Remus Rusanu
Jesteś tutaj ekspertem, ale przepraszam za moją dociekliwą naturę: czy więc ta teoria zakłada (ponieważ nie mamy konkretnych danych), że maszyna robi nic innego? A może stanowi pewien próg pamięci wykorzystywany przez nieznanych konsumentów?
Grant Thomas
Jak powiedziałem: you don't have to guess, you can measure this exactly.
Remus Rusanu,
-5

Cała baza danych (tj. Dane) nie byłaby przechowywana w pamięci (serwer sql). Po zbadaniu indeksów i / lub kluczy, pobierze wskaźnik do miejsca w pliku danych, którego szukasz, i prawdopodobnie pójdzie na dysk, aby go odzyskać. Jeśli nie ma kluczy ani indeksów, musiałby przeskanować całą stertę.

W zależności od używanej wersji programu SQL Server mogą istnieć strategie buforowania dobrze używanych danych w celu zminimalizowania odczytu płyt.

MOŻESZ uzyskać bazy danych w pamięci, np. Bazę danych MySql Cluster .... Zostało to zaprojektowane tak, aby zmieścić CAŁĄ bazę danych w pamięci w klastrze serwerów w celu zapewnienia wysokiej dostępności / odzyskiwania po awarii i szybkiego pobierania danych.


źródło
1
Nie mam wystarczającej liczby przedstawicieli, aby zagłosować w dół, ale nie jestem pewien, dlaczego mówisz, że kategorycznie nie będzie przechowywany w pamięci. Gdy strona zostanie wczytana do bufora pamięci podręcznej, pozostanie tam, dopóki nacisk pamięci wewnętrznej lub zewnętrznej nie spowoduje przycięcia pamięci podręcznej.
Martin Smith