Wpis z mikrobloga

Cześć Mirko #programowanie #sql #debian #linux. Mam postawioną baze w postgresql, i skrypty które odpalają się cyklicznie i wrzucają do bazy jakieś tam dane (troche ważne). Problem w tym, że po niecałych ~~12h działania skryptów muszę restartować baze, bo zapytania wykonują się strasznie długo (właściwie wcale sie nie wykonują). Po restarcie service`u wszystko jest super ok, ale jakoś nie widzi mi się restartowanie bazy co chwila, bo wpłynie to na moje analizy na danych (są one praktycznie cały czas uploadowane do bazy, więc musiałbym się liczyć z utratą niektórych informacji). Ma ktoś z Was pomysł co zrobiłem źle? Jak naprawić ten błąd? Na pierwszy rzut oka wygląda to troche jak nie zamknięcie sesji czy coś w tym stylu, ale nie wydaje mnie sie. Ratujcie proszę!

Dobiero się uczę administrowania bazami, proszę o wyrozumiałość ( ͡° ͜ʖ ͡°)
  • 16
@Ginden: Słuchaj, napotykam jeszcze taki problem: próbuje w postgresql.conf włączyć opcje statscommandstring = true tak jak mówią w 1 linku, restartuje bazę, ale po dopisaniu tej funkcji już nie mogę się połączyć, bo serwer odrzuca połączenia (mimo, że lsiten_addresses = "*") i przed dodaniem opcji łączę się normalnie. Gdzie robię błąd?
@Ginden: dzięki, udało się włączyć statystyki. Zarzuciłem skrypta żeby updateował dane, i wygląda na to, że kończy transakcje (jak działa skrypt w pętli jest ich ok 4-5, z czego 3 zajmuje pgAdmin), czyli można przypuszczać, że skrypt konćzy wszystko tak jak trzeba?
@Ginden: Skrypt insertuje dane do bazy, które zbierze z różnych czeluści internetu, najwięcej czasu zajmuje mu:

INSERT INTO v.abc
(id, stronka)
SELECT 2148, 'google.com.'
WHERE
NOT EXISTS(
SELECT id FROM v.url WHERE stronka = 'google.com.'
);

Co ciekawe, selecty idą mu i tak i tak dobrze, nie moze przemielić tylko tego inserta. Zyżycie nie w normie, jakieś 2-2.5GB zjada postgres.
@player11one: Hm, ty wstawiasz po jednym wierszu naraz?

Zużycie - chodziło mi o zmianę zużycia gdy serwer zaczyna działać wolno. Zużycie pamięci jest dobre, bo to znaczy, że najczęściej używane dane z dysku są trzymane w RAMie.
@Ginden: tak, wstawiam po jednym wierszu, tak łatwiej było skleić skrypt który był mi potrzebny. Cykl jest taki -> odpytuje strone o różne rzeczy które mnie interesują i wrzucam do bazy to, czego się dowiedziałem.
@Ginden: Możliwe ze znalazłem błąd, nie commitowałem i nie zamykałem transakcji gdy rzucałem wyjątek. mam nadzieje, że to to, wielkie dzięki za pomoc ( ͡° ͜ʖ ͡°) A z tym wrzucaniem jednego wiersza to dobrze, czy źle, czy jak?
@Ginden: może spróbuje przerzucić obsługę wczytywania plików conf na pythona, wtedy możliwe będzie wrzucanie po ~~10 wierszy. To "wrzucanie kilku wierszy na raz" to parallel query? Bo zastanawiam się, czy nie będę musiał przebudowywać funkcji. (tak, jestem zielonką z postgresa)
@Ginden: Jakby ktoś był zainteresowany co to było:
sprawdzałem czy stronka odpowiada pobierając jej zawartość GETem, ale nie miałem timeoutu. Cron odpalał kolejne skrypty i rura sie zapychała. Ustawienie timeoutu stronki załatwiło problem. ( ͡° ͜ʖ ͡°)