PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Aktualizacje narzędzi testowych PostgreSQL z archiwum testów

Prowadzę szereg projektów, których celem w życiu jest ułatwienie testowania fragmentów PostgreSQL. Wszystkie te otrzymały przyzwoitą aktualizację w ciągu ostatniego tygodnia.

skalowanie strumienia testuje wzrost szybkości pamięci na serwerach w miarę wprowadzania do gry większej liczby rdzeni. To fascynujące dane, wystarczająco dużo, by zacząć dostrzegać prawdziwe trendy. Teraz działa poprawnie na systemach z dużą ilością pamięci podręcznej procesora, ponieważ mają one wiele rdzeni. Wcześniej możliwe było, że był tak agresywny w ustalaniu rozmiaru zestawu testowego, aby uniknąć wpływu na pamięć podręczną, że zużywał więcej pamięci, niż można było przydzielić przy obecnym projekcie kodu strumienia. To zostało zmniejszone. Jeśli masz serwer 48-rdzeniowy lub większy, mógłbym przeprowadzić więcej testów tego nowego kodu, aby sprawdzić, czy nowy sposób, w jaki sobie z tym poradzę, ma sens.

peg to skrypt, który napisałem, aby ułatwić budowanie PostgreSQL ze źródeł, zwykle do pracy programistycznej lub do tymczasowego wypróbowania nowszej wersji w systemie produkcyjnym. Bardzo łatwo było się pomylić z przełączaniem się między projektami i powiązanymi z nimi gałęziami git; dokumentacja w tym obszarze jest znacznie ulepszona.

pgbench-tools to moja pracownia testowania wydajności, która pozwala ustawić w kolejce dni wartości benchmarku, a następnie mieć wystarczającą ilość dostępnych narzędzi analitycznych, aby to zrozumieć. Program śledzi teraz ostatnio wprowadzony parametr pg_stat_bgwriter.buffers_backend_fsync, jeśli masz wersję, która go obsługuje (obecnie tylko ostatnia kompilacja soure – co sprowadza nas z powrotem do tego, dlaczego peg jest przydatny). Możesz również powiedzieć mu, aby uruchamiał każdy test przez określony czas, co znacznie ułatwia testowanie przy bardzo różnych wartościach klienta/rozmiaru.

Jeśli chodzi o to, co możesz zrobić z pgbench-tools… od dzisiaj dzielę się testami porównawczymi, które wykonuję na PostgreSQL 9.1 na najpotężniejszym serwerze, z którego mam nieograniczone korzystanie. 8 rdzeni, 16 GB RAM, 3 dyskowe dyski bazy danych RAID-0, 1 dyskowy wolumin WAL, pamięć podręczna Areca podtrzymywana bateryjnie. Możesz zobaczyć wyniki. Przebiegi są zorganizowane w zestawy testowe, z których każdy reprezentuje pewien rodzaj zmiany w konfiguracji. Na przykład, nr 1 w tych danych uruchamia tylko SELECT, nr 2 działa w stylu TPC-B, ale z 8 GB pamięci RAM i wcześniejszym kodem, podczas gdy gorące rzeczy to nr 3, uruchamiając TPC-B z 16 GB pamięci RAM i kodem, który śledzi buffers_backend_fsyncs.

W kolejce PostgreSQL 9.1 znajduje się kilka poprawek związanych z wydajnością w obszarach wyróżnionych przez te wyniki - że Linux może mieć wyjątkowo wysokie opóźnienia w najgorszym przypadku przy obciążeniach bazy danych o dużym natężeniu zapisu. Dobrym przeciętnym przykładem jest test 215:skala 1000, 32 klientów, 365 TPS. Ale najgorsze opóźnienie to 43 sekundy, a na wykresie TPS widać martwe punkty. To po prostu okropne i istnieje kilka koncepcji, jak to zrobić.

Jeśli ktoś, kto to czyta, ma potężny serwer dostępny przez kilka tygodni do przeprowadzania takich testów, z przyjemnością pomogę ci zreplikować to środowisko i zobaczyć, jakie wyniki widzisz. Jedyną magią, jaką mam, jest trochę praktyki w ustawianiu skalowania i obciążenia klientów, aby nie tracić dużo czasu na bezproduktywne testy. Reszta mojego procesu jest bezpłatna i udokumentowana.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lista kontrolna zgodności SOx dla PostgreSQL

  2. psql - zapisz wyniki polecenia do pliku

  3. Jak monitorować PostgreSQL za pomocą Nagios

  4. Nie można znaleźć biblioteki klienta PostgreSQL (libpq)

  5. Wskazówki dotyczące wdrażania PostgreSQL w chmurze hybrydowej