PodtgreSQL: Ważne parametry serwera

2020-11-01

PostgreSQL ma mnóstwo parametrów określających jego pracę, ale kilka jest na prawdę kluczowych:

  • listen_addresses – adres na którym nasłuchuje serwer i pozwala się łączyć. Można go ustawić na konkretny adres IP, albo zmienić na *, co oznacza każdy interfejs
  • port – określa port, na którym serwer nasłuchuje. Domyślny port to 5432 – chyba programista wybrał z klawiatury kolejne liczby….
  • max_connections – ile maksymalnie może być nawiązanych połączeń. Jeśli wartość jest przekroczona, to połączenie koOperationalError: FATAL: sorry, too many clients already
  • log_destination – określa format generowanych danych i sposób ich generowania. Domyślna opcja stderr określa, że informacje są wysyłane na standardowe wyjście, a pozmianie na csvlog, generowane dane będą w postaci nadającej się do dalszej analizy. Parametr może wymagać włączenia opcji logging_collection
  • shared_buffers – współdzielona między sesjami pamięć cache, w której są przechowywane strony odczytane z dysku. Zazwyczaj wartość powinna być duża – zależnie od systemu np 25% wielkości pamięci RAM
  • effective_cache_size – planowana ilość pamięci przewidziana do wykorzystania przez serwer. Wartość wpływa na to, jak serwer zdecyduje się wykonywać zapytania, np. niska ilość pamięci sprawia, że postgres będzie tak planował wykonywanie zapytań, aby w jak najmniejszym stopniu korzystać z pamięci, co zazwyczaj spowoduje wolną pracę serwera
  • work_mem – maksymalna ilość pamięci przewidziana do wykonania pojedynczej czynności takiej jak sortowanie, join lub scan. Z jednej strony wysoka wartość tego parametru pozwala na szybkie wykonanie zadanej czynności, z drugiej ta wartość musi być pomnożona przez liczbę jednocześnie pracujących użytkowników. Zbyt wysoka wartość spowoduje więc szybką konsumpcję dostęnych zasobów
  • maintenance_work_mem – opcja podobna do work_mem, ale dotyczy czynności administracyjnych i związanych z housekeepingiem. Nie powinna przekraczać 1GB
  • max_parallel_workers_per_gather, max_parallel_workers – pozwalają zdefiniować liczbę wątków, które mogą być jednocześnie wykorzystane do wykonania jednego zapytania. Wartość nie może przekraczać max_parallel_workers
By Rafał Kraik in PostgreSQL

PostgreSQL: Jak zmieniać konfigurację serwera – postgres.conf

2020-11-01

Serwer PostgreSQL jest konfigurowany za pomocą plików konfiguracyjnych. Te pliki można konfigurować bezpośrednio na poziomie systemu operacyjnego, ale coraz częściej takie podejście nie jest zalecane.

Np. zamiast modyfikować plik postgresql.conf można utworzyć nowy plik o nazwie postgresql.auto.conf i w nim umieścić przedefiniowane wartości parametrów. Jednak i to nie jest najlepsze rozwiązanie. Dodana w kolejnych wersjach posgresa komenda ALTER SYSTEM pozwala wprowadzać modyfikacje systemu z poziomu SQL:

ALTER SYSTEM SET max_connections = 130;

Dzięki temu ważne pliki konfiguracyjne pozostają w swojej oryginalnej postaci i co za tym idzie przechowują początkowe ustawienia. Modyfikacja plików wykonywana za pomocą komend pozwala unikać literówek, bądź wprowadzenia nonsensownych ustawień, które pozostają w konflikcie z innymi ustawieniami – polecenie ALTER SYSTEM chroni po prostu administratora przed niepoprawnymi modyfikacjami plików.

(Można też tworzyć własne pliki konfiguracyjne i dołączać je korzystając ze słowa include. Ta możliwość przyda się gdy modyfikujesz dużą liczbę parametrów).

Aktualne wartości parametrów można sprawdzić poleceniem

SELECT * FROM pg_settings

Tych ustawień jest całkiem sporo, dlatego aby zobaczyć te najważniejsze i najczęściej stosowane można uruchomić komendę: Czytaj dalej »

By Rafał Kraik in PostgreSQL

PostgreSQL: Jak zrestartować usługę?

2020-11-01

Czy to Windows, czy to Linux – postgres jest procesem, który w pewnych przypadkach trzeba zrestartować. W takim przypadku skorzystaj z polecenia restart. Tak wygląda to na Windows:

"C:\Program Files\PostgreSQL\13\bin\pg_ctl.exe" restart -D "C:/Program Files/PostgreSQL/13/data/"

a tak na Linuxie:

service postgresql-X.Y restart

Jeśli z jakiegoś powodu (np. źle zdefiniowanych parametrów uruchomieniowych) serwer nie startuje, to przyczyny należy szukać w  plikach logów, które znajdują się w podkatalogu log katalogu data:

C:\Program Files\PostgreSQL\13\data\log

By Rafał Kraik in PostgreSQL

PostgreSQL: Gdzie znajdują się pliki konfiguracyjne?

2020-11-01

Konfigurację postgres-a zapisuje sie w plikach konfiguracyjnych. W zależności od tego, jak została przeprowadzona instalacja, te pliki mogą się znajdować w różnych lokalizacjach. Jeśli trzeba ustalić dokładne ścieżki do tych plików, to uruchom następujące polecenie:

SELECT name, setting FROM pg_settings WHERE category = 'File Locations';

Czytaj dalej »

By Rafał Kraik in PostgreSQL

Linux: program bwm-ng na Centos 8

2020-10-30

Teoretycznie można założyć, że instalacja pakietów na Centos jest prosta, bo wystarczy znać program yum, ale… prawda jest brutalna. Yum pracuje w oparciu o skonfigurowane repozytoria pakietów, czyli zbiory dostępnych pakietów przewidzianych dla dystrybucji. Gdy jednak chcesz zainstalować coś bardziej wyrafinowanego, a nie chcesz się bawić w kompilację… to też się da!

Weźmy pakiet bwm-ng pozwalający na żywo śledzić przepustowość łączy. Domyślnie w Centos 8 go nie ma. Jest jednak specjalne rozbudowane repozytorium pakietów zwane EPEL (Extra Packages for Enterprise Linux). Tylko żeby z niego skorzystać należy go zainstalować. Jak opisano tutaj https://fedoraproject.org/wiki/EPEL służy do tego:

sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

Teraz można już instalować „po nazwie pakietu”:

 sudo yum install bwm-ng

Gotowe!

 

By Rafał Kraik in Linuxy

Python: skrótowe zapisy operacji matematycznych

2020-10-04

Powiem coś w tajemnicy. Programiści to straszne lenie! Opłaca im się główkować tylko po to, żeby nacisnąć mniej klawiszy! Może nie do końca jest to prawda, ale przynajmniej plotka brzmi wiarygodnie? Prawdziwym celem skrócenia pewnych zapisów jest często uproszczenie czytelności kodu, zobacz:

Zamiast pisać

n = n +1

(czyli zwiększ o 1), można napisać

n += 1

zamiast pisać

n = n * 3

(czyli powiększ o 3), można napisać

n *= 3

Pewnie sam się domyślasz, jak zapisać

n = n – 2

albo

n = n / 3

By Rafał Kraik in Python

Python: Znaczenie parametru origin w funkcji imshow()

2020-10-04

Funkcja imshow ma parametr origin, który określa kierunek rysowania. Interpretacja danych zapisanych w macierzy może być naniesiona na wykres na różne sposoby. Przecież macierz (pomijając jej kształt) to po prostu jakiś ciąg liczb. Ten ciąg liczb można odwzorowywać na wykrsie tak, że początkowe wartości będą narysowane po lewej na dole, albo u góry. Za to właśnie odpowiada ten parametr.  Czytaj dalej »

By Rafał Kraik in Python