Baza danych i pamiec - pytanie
Piotrek_20 - 01-09-2007 00:17
Baza danych i pamiec - pytanie
Witam, Z gory powiem ze nie jestem specjalista od baz danych, wiec prosze zrozumiec jesli komus wyda sie pytani glupie. Duzo osob zwykle mowi ze baza danych potrzebuje duzych ilosci. Czy ktoś moglby mi wytlumaczyc w jakim celu potrzeba duzo pamieci? Jesli chodzi o duzo to znow ile jest zalecane. Dziwie sie otoz dlatego, ze mam zainstalowanego postgresa i z moją bazą (co prawda mala jest, ok 2mln rekordow) pobieranych jest 8504k ram, tak przynajmniej pokazuje mi proces z windowsa.
=?ISO-8859-2?Q?S=B3awomir_Szysz=B3o?= - 01-09-2007 00:17
Dnia Fri, 31 Aug 2007 11:11:00 -0700, Piotrek_20 <anna_kotek@o2.pl> wklepał(-a):
>Witam, >Z gory powiem ze nie jestem specjalista od baz danych, wiec prosze >zrozumiec jesli komus wyda sie pytani glupie. >Duzo osob zwykle mowi ze baza danych potrzebuje duzych ilosci. Czy >ktoś moglby mi wytlumaczyc w jakim celu potrzeba duzo pamieci?
Przede wszystkim do cache'owania pobranych danych - żeby nie czytać wielokrotnie z dysku. Ponadto do łączenia, sortowania danych, zapamiętywania stanu sesji z bazą.
>Jesli chodzi o duzo to znow ile jest zalecane. >Dziwie sie otoz dlatego, ze mam zainstalowanego postgresa i z moją >bazą (co prawda mala jest, ok 2mln rekordow) pobieranych jest 8504k >ram, >tak przynajmniej pokazuje mi proces z windowsa.
Nieważne ile rekordów, ważne jaka jest konfiguracja i w jaki sposób korzysta się z bazy. -- Sławomir Szyszło mailto:slaszysz@poczta.onet.pl Primus inter FAQires & Grand Inquisitor no.0 of pl.comp.bazy-danych FAQ pl.comp.bazy-danych http://www.dbf.pl/faq/ Archiwum http://groups.google.com/groups?grou...mp.bazy-danych
=?iso-8859-2?Q?Bart=B3omiej_Bochi=F1ski?= - 02-09-2007 00:14
> Nieważne ile rekordów, ważne jaka jest konfiguracja i w jaki sposób korzysta się > z bazy.
podlacze sie pod temat. apropo konfiguracji to czy mozna robic to inaczej niz na czuja i idac za poradnikami w internecie? takie jakby statystyki, ktore mi powiedza co jak najlepiej ustawic. przy zmianie roznych ustawien load skacze od 0.5 do 4
-- Bartłomiej
=?ISO-8859-2?Q?S=B3awomir_Szysz=B3o?= - 02-09-2007 00:14
Dnia Sat, 1 Sep 2007 23:06:55 +0200, Bartłomiej Bochiński <adresik@gmail.com> wklepał(-a):
>podlacze sie pod temat. >apropo konfiguracji to czy mozna robic to inaczej niz na czuja i idac za >poradnikami w internecie? takie jakby statystyki, ktore mi powiedza co jak >najlepiej ustawic. przy zmianie roznych ustawien load skacze od 0.5 do 4
No najlepiej to rozumieć te ustawienia i wtedy dopiero zmieniać. :D Ale jak pokazuje praktyka, nie zawsze zmiana przynosi oczekiwane efekty - wtedy liczy się doświadczenie.
A po pierwsze to trzeba pisać o jakiej bazie mowa... w temacie! -- Sławomir Szyszło mailto:slaszysz@poczta.onet.pl Primus inter FAQires & Grand Inquisitor no.0 of pl.comp.bazy-danych FAQ pl.comp.bazy-danych http://www.dbf.pl/faq/ Archiwum http://groups.google.com/groups?grou...mp.bazy-danych
Dawid Kuroczko - 03-09-2007 00:06
Piotrek_20 o adresie anna_kotek@o2.pl (hmmm?!) napisał: > Witam, > Z gory powiem ze nie jestem specjalista od baz danych, wiec prosze > zrozumiec jesli komus wyda sie pytani glupie. > Duzo osob zwykle mowi ze baza danych potrzebuje duzych ilosci. Czy > ktoś moglby mi wytlumaczyc w jakim celu potrzeba duzo pamieci? > Jesli chodzi o duzo to znow ile jest zalecane.
Hm. Mniej więcej po to samo po co Twojemu komputerowi przydaje się dużo pamięci. Gdy czegoś nie ma w pamięci, zwykle trzeba to odczytać z dysku -- a dysk jest o kilka rzędów wielkości wolniejszy niż pamięć. To samo dotyczy bazy danych -- jeśli coś jest w pamięci, dostęp do tego jest bardzo szybki -- jeśli nie ma, trzeba się wybrać do dysku po odczytanie tych danych... Baza oprócz zwracania wyników wykonuje też inne operacje -- łączenie tabel (JOIN) sortowania (ORDER BY) czy grupowanie (GROUP BY) trzeba gdzieś wykonać -- jeśli mamy dużo pamięci, wszystko zrobi się (szybko) w pamięci. Jeśli nie -- baza będzie starała się wykonać tyle ile się da w pamięci, co jakiś czas posiłkując się (wolnym) dyskiem.
A teraz wyobraź sobie bazę, której dane na dysku zajmują 100 GB (np. dane o zamówieniach firmy X), przy czym użytkownicy najaktywniej pytają o zamówienia z okresu ostatniego tygodnia. Jeśli mamy BARDZO mało pamięci -- prawie każde zapytanie o zamówienie musi być odczytane z dysku. Dysk jest pytany tak wiele razy o tak różne dane, że wszyscy czekają wieeeki na potrzebne informacje. Jeśli mamy bardzo dużo RAM-u (np. 32GB) -- to praktycznie wszystkie dane o które zwykle pytają klienci są w pamięci, a dysk praktycznie się nudzi -- tylko co jakiś czas odczyta jakąś informację, której było brak w pamięci. Pomiędzy tymi dwoma przypadkami masz całe pole do popisu dla DBA (jak to ustawić, żeby i baza działała sprawnie, i żeby nie marnować niepotrzebnie zasobów).
Dodam, że dałem tu specyficzny przypadek -- odczyt danych. Podałem akurat taki bo powinien intuicyjnie pokazywać po co dużo pamięci.
Dalej, dajmy na to, że nasza firma chce zrobić zestawienie, w jakich dniach, jacy klienci składali ile zamówień (np. GROUP BY klient_id,data). Jeśli mamy dane z ostatnich 5 lat (ponad 1800 dni) a średnio dziennie zamówienia składało 10 klientów -- to wynik będzie się składał z około 1800 * 10 = 18 000 wierszy). Jak mamy dużo pamięci to będziemy wszystko trzymać w pamięci (pamiętać 18 000 wartości? pikuś). Jeśli mamy mało, baza musi kombinować (najpierw sobie posortuje (korzystając z dysku, gdy nie będą się mieścić w pamięci) po klient_id,data, następnie jeszcze raz przeczyta posortowane już wyniki (znów z dysku! przecież nie mieści się w pamięci!), zliczając powtórzenia każdej pary klient_id,data.
Mam nadzieję, że jakoś rozjaśniłem dlaczego. Dodatkowo dodam, że oprócz pamięci drugą rzeczą, o którą trzeba dbać to dysk twardy. A właściwie macierz RAID. RAID daje z jednej strony wydajność (24 dyski są "troszkę" wydajniejsze niż jeden, zwłaszcza jeśli mają pamięć podręczną podtrzymywaną z baterii; nie dotyczy kiepskich kontrolerów), z drugiej strony bezpieczeństwo danych.
> Dziwie sie otoz dlatego, ze mam zainstalowanego postgresa i z moją > bazą (co prawda mala jest, ok 2mln rekordow) pobieranych jest 8504k > ram, tak przynajmniej pokazuje mi proces z windowsa.
PostgreSQL będzie wykorzystywał tyle pamięci ile mu podasz w pliku konfiguracjnym. Trzy najważniejsze zmienne tam to: * shared_buffers -- ile pamięci ma być wykorzysywane na wspólny bufor (podręczna kopia danych). * work_mem -- ile pamięci ma być wykorzystywane na trzymanie tymczasowych danych na sortowania itp. (ORDER BY, GRUP BY, też JOIN) (uwaga! ta wartość to max. per sesja) * maintenance_work_mem -- ile pamięci wykorzystywać na tymczasowe dane potrzebne do budowania indeksów itp. (też max. per sesja).
Pozdrawiam, Dawid
kenubi - 04-09-2007 00:08
Bartłomiej Bochiński wrote:
>> Nieważne ile rekordów, ważne jaka jest konfiguracja i w jaki sposób >> korzysta się z bazy. > > podlacze sie pod temat. > apropo konfiguracji to czy mozna robic to inaczej niz na czuja i idac za > poradnikami w internecie? takie jakby statystyki, ktore mi powiedza co jak > najlepiej ustawic. przy zmianie roznych ustawien load skacze od 0.5 do 4 > > dobrze jest sprawdzic na google wpis
+Adam+Buraczewski+postgresql
m.
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[MSSQL2000] Problem z =?ISO-8859-2?Q?tabel=B1/indeksem/zapytanie?==?ISO-8859-2?Q?m_czy_b=B3=B1d_w_bazie_danych=2E=2E=2E?=
=?iso-8859-2?Q?=5BMySQL=5D_Wy=B6wietlenie_wszystkich_rekordow _zawierajacy?==?iso-8859-2?Q?ch_duplikat_a__moze_inna_struktura_bazy_danych ?=
Konwesja znaków w dump'ie bazy danych - ISO -> utf-8 -> ISO -> utf-8
[laik]Jak =?ISO-8859-2?Q?stworzy=E6/zaczac_tworzyc__ma=B3=B1?==?ISO-8859-2?Q?__baz=EA_danych_na_potrzeby_www=3F?=
[mysql] przenoszenie danych =?ISO-8859-2?Q?mi=EAdzy_tabelami_?==?ISO-8859-2?Q?w_r=F3=BFnych_bazach?=
Ksiazka - "Podstawowy =?ISO-8859-2?Q?wyk=B3ad_z_system=F3w_?==?ISO-8859-2?Q?baz_danych=22?=
Połączenie bazy danych z wykonaniem polaczenia telefonicznego
[mssql] insert do tabeli na podstawie danych z innej tabeli
[MySQL] - Wstawianie aktualnej daty do bazy danych - PHP i MySQL
=?ISO-8859-2?Q?kto_zrobi_baz=EA_danych=3F=3F?=
zanotowane.pldoc.pisz.plpdf.pisz.plczterowers.keep.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|