7

Właśnie zaktualizowałem bazę danych postgres Heroku z planu Kappa (800MB RAM, Postgres 9.1) do planu Ronina (1.7GB RAM, Postgres 9.2), ale wydajność spadła.Niski współczynnik Posts po Cache - rozmiar danych czy coś innego?

Postępując zgodnie z instrukcją here, sprawdziłem i współczynnik trafień w pamięci podręcznej jest jeszcze niższy niż w naszej bazie danych Kappa (obecnie ~ 57%, poprzednio ~ 69%). Nasz projekt aplikacji powinien być przyzwoicie w porządku, ponieważ już wcześniej widzieliśmy współczynnik trafień w pamięci podręcznej około 99%.

Zaleca się, aby zestaw danych był w stanie zmieścić się w pamięci, co nie powinno być teraz problemem - nasz rozmiar danych wynosi 1,27 GB (przynajmniej większość z nich powinna pasować).

Czy częstość trafień w pamięci podręcznej jest niska z powodu rozmiaru danych, czy jest coś, na co mogę zaglądnąć? Czy jest to po prostu przypadek pamięci podręcznej bazy danych, który nie został całkowicie rozgrzany? (minęło prawie 2 dni).

+1

Jaka jest stara i aktualna wartość * effective_cache_size *? I * work_mem *? – Beryllium

+3

Ponadto: czy Twoje statystyki są aktualne? (czy po imporcie/konwersji uruchamiasz 'VACUUM ANALYZE'?) – wildplasser

+0

@Beryllium effective_cache_size 900000kB/1170000kB, work_mem 50MB/10MB (przed/po) – Daniel

Odpowiedz

3

Jeśli masz dużo pamięci i nie używasz zbyt dużo na bazie danych, jedną rzeczą, która może ulec zmianie, są shared_buffers. To, co robią współużytkowane bufory, polega na przechowywaniu w pamięci podręcznej często używanych danych, tak aby maksymalizować je w czasie, gdy nie wszystkie bazy danych zmieszczą się w pamięci.

Niestety ta pamięć podręczna nie działa tak dobrze, jak pamięć podręczna systemu operacyjnego. Jeśli dane będą z łatwością zmieszczą się w pamięci, upewnij się, że effective_cache_size jest wystarczająco wysokie, a następnie spróbuj zmniejszenieshared_buffers

Należy pamiętać, że to nie jest magiczna kula. Odpowiedni rozmiar shared_buffers zależy od ilości posiadanych danych, ilości zajmowanej przez nie przestrzeni, typów zapytań, ilości pamięci przeznaczonej na sortowanie i tym podobne. Od czasu do czasu można się z tym bawić, aby znaleźć odpowiednie miejsce do bieżącej konfiguracji i bazy danych.