<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Forum PostgreSQL]]></title>
	<link rel="self" href="http://forum.postgresql.org.pl/extern.php?action=feed&amp;fid=7&amp;type=atom"/>
	<updated>2016-08-19T23:26:11Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.postgresql.org.pl/index.php</id>
		<entry>
			<title type="html"><![CDATA[Wydajność duże bazy, a ilość pamięci]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?id=14312&amp;action=new"/>
			<summary type="html"><![CDATA[Pewien CRM migruje z MS SQL do PostgreSQL.
Na razie migracja dotyczyła kilku pomniejszych moich klientów.

Mam obawy co do dużych klientów.

System ten używa dużą ilość osobnych baz danych.

Przykład dużego klienta przed migracją:

Główna baza ma na MS SQL około 6 GB 
Do tego dwie bazy po 2 GB 

Oraz kilkanaście baz 1 GB oraz kilkanaście baz 8 GB

W zasadzie tylko baza główna i te dwie 2 GBajtowe są mocno używane.
Pozostałe zawierają dokumenty w formie BLOBów w rozbiciu na kolejne lata.

Obecnie klient ma System Windows 2012 16 GB RAM (będzie rozszerzana do 32), XEON 3,5 GHz .

Klient w biurze ma 15 pracowników, którzy intensywnie pracują na bazie 6GB oraz na tych dwóch bazach 2GB
Do pozostałych baz dostęp nie jest intensywny ale co najmniej kilkaset operacji odczytów/zapisów na dzień wykonuje się na tych pozostałych bazach z każdego stanowiska roboczego.

Jak widzicie kwestię wydajności bazy ?

Chodzi ni o to że MS SQL przy pełnej wersji mógł mieć przydzielone na instancję powiedzmy 24 GB danych, co powodowało że całe 6GB+2GB+2GB było buforowane przez pamięć.

Jak rozumiem zarządzanie pamięcią w  PostgreSQL (jestem początkujący jeżeli chodzi o PostgreSQL) jest ukierunkowane na sesje.

Jeżeli każdy użytkownik (pracownik klienta) będzi etworzył co najmniej 10 sesji to razem będzie 150 sesji.
Jak więc mam ustawić parametry PostgreSQL i jakich parametrów serwera powinno w tym przypadku się użyć, by praca była co najmniej tak samo wydajna jak na MS SQL.

ps.
pomijam kwestie związane z strukturą bazy,
Chodzi mi tylko o kwestię buforowania danych w pamięci - zamiast bezpośrednie odwoływanie się do dysku.

Pozdrawiam
mLipok]]></summary>
			<author>
				<name><![CDATA[letni_deszczyk]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=3803</uri>
			</author>
			<updated>2016-08-19T23:26:11Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?id=14312&amp;action=new</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Testy wydajności PostgreSQL 9.5 dla tej samej liczby zapytań]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?id=14290&amp;action=new"/>
			<summary type="html"><![CDATA[Witam,

Czy jest ktoś w stanie udzielić odpowiedzi na pytanie, który z wariantów dla PostgreSQL 9.5 jest najbardziej wydajny lub dysponuje wynikami testu wydajności dla podanych niżej wariantów?

•	x baz po jednym schemacie
•	jedna baza z x schematów 
•	x(n) tabel prefiksowanych w jednej bazie z jednym schematem.]]></summary>
			<author>
				<name><![CDATA[lefunek]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=3594</uri>
			</author>
			<updated>2016-03-22T14:22:14Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?id=14290&amp;action=new</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Wolne działanie pomiędzy dwoma wirtualnymi maszynami]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?id=2304&amp;action=new"/>
			<summary type="html"><![CDATA[Witam wszystkich

Bardzo proszę o pomoc, mam problem z wydajnością - insertowanie rekordów do PostgreSQL(9.2.7). Przesyłanie danych odbywa się miedzy dwoma maszynami wirtualnymi(fizycznie jest to ta sama maszyna). Do ładowania danych używam narzędzia Pentaho - czytanie danych z pliku(maszyna A) i ładowanie do bazy danych(maszyna B) - niestety maksymalny rate to 200 rekordów/s i wąskim gardłem na 100% jest ładowanie do bazy bo robiłem kilka testów:

A -> A(z pliku do pliku) - 12 000 r/s
A -> B(z pliku do ORACLE) - 5000 r/s
B -> B(z pliku do postgres, plik i baza na tej samej VM) - 3000 r/s
A -> B(z pliku do postgres) - [b][color=red]200 r/s[/color][/b]
 
Nie jest to też na 100% problem połączenia sieciowego ponieważ transfer plików pomiędzy A i B spokojnie osiąga 50Mb - transmisja i tak nie powinna iść poprzez sieć bo VMware wykrywa, że jest to połączenie wewnątrz tej samej fizycznej maszyny.
Bardzo prosze o jakieś wskazówki ew. co jeszcze mógłbym przetestować.


pozdrawiam]]></summary>
			<author>
				<name><![CDATA[c_michal]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=2549</uri>
			</author>
			<updated>2015-09-13T17:26:05Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?id=2304&amp;action=new</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Vaccum full na mocnej maszynie]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?id=2235&amp;action=new"/>
			<summary type="html"><![CDATA[Cześć, 
chciał bym przyśpieszyć wykonanie procesu vaccum full na swoim systemie.

Głównym ograniczeniem na mojej maszynie jest procesor, a właciwie jego wykorzystanie przez postgresa.

Posiadam 24 rdzenie, a wykorzystywany jest tylko jeden wieć wpadłem na pomysł aby wykorzystać pętle for do tego zadania.

najpierw wrzucamy nazwy wszystkich tabel do pliku "tabele1.log"

a później należy wykonać coś w podobie do:

for i in `cat tabele1.log` ; do `./analiza_fork.sh $i & ` ; done

gdzie skrypt analiza_fork wygląda tak:

#!/bin/bash

psql -U user db << EOF

VACUUM FULL partitions.$1 ;

EOF


problem w tym że pętla nie przeskakuje do następnego procesu mimo znaku & na końću linii. Czy ktoś z was ma jakiś pomysł?]]></summary>
			<author>
				<name><![CDATA[depesz]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1512</uri>
			</author>
			<updated>2014-11-03T11:02:58Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?id=2235&amp;action=new</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Export/Import z wykorzystaniem wielu rdzeni. Pg 9.2]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?id=1500&amp;action=new"/>
			<summary type="html"><![CDATA[Witam,
Czy istnieje szansa aby wykorzystać więcej niż jeden rdzeń podczas exportu i importu baz?
Dysponuję mocną maszyną wyposażoną w 24rdzenie i 4dyski ssd w raidzie 10.
Podczas normalnej pracy widzę że są wykorzystywane różne rdzenie, natomiast podczas wyżej wspomnianych operacji używany jest tylko jeden rdzeń.
Przez co zrzut bazy liczącej ponad 90gb jest operacją która długo trwa.
Z tego co widziałem odczyt na dysku jest w granicach 30mb/s. (czyli dyski się nudzą)

Czy istnieje jakiś przełącznik, skrypt który pozwolił by robić import, export wykorzystując więcej niż jeden rdzeń?]]></summary>
			<author>
				<name><![CDATA[pietro54]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1512</uri>
			</author>
			<updated>2014-06-24T12:05:50Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?id=1500&amp;action=new</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Jakie wymagania sprzętowe PostrgreSQL?]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?id=424&amp;action=new"/>
			<summary type="html"><![CDATA[Witam

   Na wstępie chciałem napisać, że szukałem już trochę na ten temat i odpowiedzi jakie znajdywałem były mało zadowalające lub też mało rzetelne, więc pomyślałem że to jest najlepsze miejsce w którym mogę o to zapytać. Otóż czy wiadomo komuś jakie wymagania sprzętowe ma PostgreSQL, a dokładniej czy jest jakieś przedstawienie danych o tym ile może być połączeń z bazą PostgreSQL w stosunku do sprzętu na jakim zainstalowany jest serwer PosgreSQL.
   Jednymi słowy chciałbym wiedzieć np. jaka konfiguracja sprzętowa my być dla serwera PostgreSQL jeśli łączy się z nim w tym samym czasie np 20, 50, 100, 150 użytkowników którzy zadają po kilkadziesiąt zapytań SQL w ciągu minuty.
   Aby to zobrazować, załóżmy, że mam sklepik internetowy z którego w tym samym czasie korzysta 50-100 użytkowników, wiadomo, że przeglądają oni produkty i zamawiają je więc dziesiątki zapytań kierowane są do bazy, a mi jako administratorowi zależy, żeby owi użytkownicy nie odczuwali żadnych opóźnień związanych z pracą serwera. Jaki w takiej sytuacji powinienem zastosować sprzęt?

Pozdrawiam]]></summary>
			<author>
				<name><![CDATA[blackrose]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1094</uri>
			</author>
			<updated>2013-10-09T08:44:39Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?id=424&amp;action=new</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Dodanie nowego algoytmu do Postgreaql]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?id=1868&amp;action=new"/>
			<summary type="html"><![CDATA[Witam,
nie wiem gdzie napisać na naszym forum następujący problem. Chcę dodać nowy algorytm do planów egezkucji zapytań w silniiku. W jednym zdaniu: 
a)ściągnąłem source code
[url]http://www.postgresql.org/ftp/source/[/url]
b)w katalogu Executor chcę coś pozmieniać w jednym algorytmie, w klasie nodeHash.c
c)następnie chce skompilować projekt, a bibliotekę podmienić w instalacji PostgreSql. Za bardzo nie wiem jaką biblioteke i jak to skompilować. Na stronie Postgresql.org nie jest wszystko tak jasno opisane.

Czy ktoś wie jak to zrobić albo zna dobre anglojęzyczne forum?

Użytkownik]]></summary>
			<author>
				<name><![CDATA[yogitubadzin]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1613</uri>
			</author>
			<updated>2013-07-19T13:44:45Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?id=1868&amp;action=new</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Refcurcor jako typ zwracany przez funkcje składowe]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?id=1473&amp;action=new"/>
			<summary type="html"><![CDATA[Używam refcusorów jako typ zwracany przez funkcje składowane. Niestety przy wyciąganiu większej ilości danych całość zaczyna działać bardzo wolno. Dane zwracane są po kilkadziesiąt rekordów i odczytanie kilku tysięcy rekordów zajmuje kilka minut. Czy jest jakieś ustawienie, jakiś parametr w konfiguracji postgresql, który odpowiada za bufor dla refcursorów ?? Lub jakiekolwiek inne, które jest w stanie przyspieszyć pobieranie danych w ten sposób. Rozwiązanie potrzebne mi jest na wczoraj, please help]]></summary>
			<author>
				<name><![CDATA[Gabriel]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1554</uri>
			</author>
			<updated>2013-03-18T18:11:13Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?id=1473&amp;action=new</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Index częściowy na kluczu obcym]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?id=1322&amp;action=new"/>
			<summary type="html"><![CDATA[Witam

Chciałbym Was zapytać o opinię stosowania indexu częściowego na kluczu obcym.
Mam tabele a i b.
Tabela a ma około 30mln rekordów, tabela b 5,5mln.
Klucz obcy na tabeli a do tabeli b wypełniony jest dla około miliona rekordów, dla pozostałych jest NULL. Czy są jakieś przeciwwskazania, żeby zastosować w tym przypadku index częściowy na tym kluczu obcym do tabeli b (where id_b IS NOT NULL) ?
Dodam, że index normalny na tym polu zajmuje 638MB a index częściowy 25MB.

Z góry dziękuję za odpowiedź.]]></summary>
			<author>
				<name><![CDATA[albertstien3329]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1398</uri>
			</author>
			<updated>2012-12-21T06:37:02Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?id=1322&amp;action=new</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Dziwne zachowanie postgres]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?id=1414&amp;action=new"/>
			<summary type="html"><![CDATA[Witam,

mam taki dziwny przypadek:
Baza danych około 8 GB w tabelach po kilka milionow rekordów i puszczam funkcje do wyliczania określonych wartość dużo operacji insert  select.

Operacje czasami mi się wykonują w 2 min a czasami nie chce się wykonać w godzinę. 
Jak zrobię kobię bazy z przykładu to kobia działa dobrze przez jakiś czas.
Jak miałem ustawione autovacum na on to wykonywało się wolno jak wyłączyłem operacje przyspieszyły ale co jakiś czas problem się powtarza i muszę zrobić kopię bazy.

Próbowałem reindex vacumanlize i jest to samo.

Serwer win 2008 postgres 9.1.

Procesor obciążony jest tylko chwię poźniej już 0-1 procent 

Ma może ktoś jakiś pomysł ?]]></summary>
			<author>
				<name><![CDATA[c_michal]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1332</uri>
			</author>
			<updated>2012-11-08T21:43:06Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?id=1414&amp;action=new</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[wydajność postgres a plik postgres.conf]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?id=1350&amp;action=new"/>
			<summary type="html"><![CDATA[Witam,

z godnie z tym co poczytałem necie na różnych stronach oraz książkach wysokowydajny postgressql skonfigurowałem serwer z zalecniami. Mam serwer 10 GB RAM procesor 4 cory Win 2008 r2
Zrobiłem tak każdym dysku umieściłem inny tablespace aby rozłożyć obciązenie na dyskach, dałem osobna na pg_xlog i temp.

i ustawiłem takie parametry:
Shared_buffers 2,2GB
Efective_cash_s = 6,6 Gb
Chech_point_segm = 10
Chcek_point = 4
DEFA_STATIS_TARGET = 100
AUTOVACUM = ON
WORk_MEN = 4
WAL_BUFFORS 0.5
RANDOM PAGE COST = 4
MAINTENANCE_WORK_MEM = 450

Jest to baza transakcyjna dużo operacji na dużych zbiorach danych jest na kursorach. Teraz chciałbym się dowiedzieć co myślicie o takiej konfiguracji i czy może zalecacie coś zmienić.]]></summary>
			<author>
				<name><![CDATA[Rafik83]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1332</uri>
			</author>
			<updated>2012-06-12T08:28:42Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?id=1350&amp;action=new</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Usuwanie dużej ilość rekordów]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?id=661&amp;action=new"/>
			<summary type="html"><![CDATA[Witam
Mam taki problem
Podczas kasowania dużej ilości (ok 30ys rekordów)w jednej transakcji i mam ogromne opóźnienia działania serwera CPU obciążone do 100%
nie pomaga żadne vacuum ani vacuum full ani włączone autovacuum w postgersql.conf
Gdy baza zawierała mniej rekordów problem z obciążeniem CPU występował ale kasowanie nie trwało bardzo długo (ok 3 min), teraz gdy baza się rozrasta kasowanie trwa nawet 60 min i więcej
Baza ma indeksy na tabelach na klucze własne i obce no i niestety na tabelach pozakładane są trigery kontrolujące różne zdarzenia. 
postgresql jakiego używam aktualnie to 8.3 , 8.4 
proszę o jakies wskazówki]]></summary>
			<author>
				<name><![CDATA[ptx]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1291</uri>
			</author>
			<updated>2011-10-21T07:54:12Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?id=661&amp;action=new</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Problem z przywróceniem dump'a bazy danych.]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?id=630&amp;action=new"/>
			<summary type="html"><![CDATA[Witam wszystkich!
Mam zapytanie odnośnie przywrócenia dump'a bazy danych. A mianowicie moja baza składa się z wielu tabel (około 6k- 7k). Archiwizacja bazy trwa około 20 minut. Jednak ponowne jej odtworzenie jest bardzo długie - trwa często powyżej 90 minut. Moje pytanie związane jest z optymalizacją konfiguracji postgresa. Czy jest jakiś parametr, który przyspieszyłby szybkość odtwarzania danych?
Zaznaczam, że wydajność komputera jest wystarczająca - procesor i3 2.53 GHz, 3 GB RAM.

Przeszukując tematy skonfigurowałem dodatkowo parametr max_locks_per_transaction w pliku postgresql.conf. Jednak pomogło to tylko w przypadku archiwizacji bazy, a nie jej odtwarzania.

Będę wdzięczny za wszelkie sugestie!]]></summary>
			<author>
				<name><![CDATA[gszpetkowski]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1271</uri>
			</author>
			<updated>2011-09-02T15:32:15Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?id=630&amp;action=new</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[VACUUM FULL zacina się?]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?id=313&amp;action=new"/>
			<summary type="html"><![CDATA[Witam,

Mam problem z dużą tabelą, nie działa na niej VACUUM FULL a dokładniej zacina się po vacuumowaniu indexa pg_toast

[code]
db1=# reindex index pg_toast.pg_toast_17929229_index; reindex table pg_toast.pg_toast_17929229; vacuum full verbose sch1.myobjects;
REINDEX
REINDEX
VACUUM
INFO:  vacuuming "sch1.myobjects"
INFO:  "myobjects": found 8359 removable, 265619 nonremovable row versions in 25899 pages
DETAIL:  0 dead row versions cannot be removed yet.
Nonremovable row versions range from 96 to 2032 bytes long.
There were 286682 unused item pointers.
Total free space (including removable row versions) is 81949164 bytes.
5540 pages are or will become empty, including 1 at the end of the table.
18640 pages containing 81678752 free bytes are potential move destinations.
CPU 0.47s/0.06u sec elapsed 1.69 sec.
INFO:  index "myobjects_pkey" now contains 265619 row versions in 1503 pages
DETAIL:  8359 index row versions were removed.
70 index pages have been deleted, 70 are currently reusable.
CPU 0.05s/0.10u sec elapsed 1.55 sec.
INFO:  index "mob" now contains 265619 row versions in 4855 pages
DETAIL:  8359 index row versions were removed.
358 index pages have been deleted, 358 are currently reusable.
CPU 0.20s/0.12u sec elapsed 9.42 sec.
INFO:  index "so_idt" now contains 265619 row versions in 1506 pages
DETAIL:  8359 index row versions were removed.
75 index pages have been deleted, 75 are currently reusable.
CPU 0.07s/0.12u sec elapsed 1.44 sec.
INFO:  index "so_obclass" now contains 265619 row versions in 1938 pages
DETAIL:  8359 index row versions were removed.
10 index pages have been deleted, 10 are currently reusable.
CPU 0.04s/0.10u sec elapsed 3.74 sec.
INFO:  index "so_obstring" now contains 265619 row versions in 3240 pages
DETAIL:  8359 index row versions were removed.
218 index pages have been deleted, 218 are currently reusable.
CPU 0.09s/0.15u sec elapsed 5.03 sec.
INFO:  "myobjects": moved 8244 row versions, truncated 25899 to 15998 pages
DETAIL:  CPU 1.98s/2.05u sec elapsed 25.51 sec.
INFO:  index "myobjects_pkey" now contains 265619 row versions in 1503 pages
DETAIL:  8244 index row versions were removed.
76 index pages have been deleted, 76 are currently reusable.
CPU 0.04s/0.05u sec elapsed 0.09 sec.
INFO:  index "mob" now contains 265619 row versions in 4855 pages
DETAIL:  8244 index row versions were removed.
397 index pages have been deleted, 397 are currently reusable.
CPU 0.13s/0.05u sec elapsed 0.19 sec.
INFO:  index "so_idt" now contains 265619 row versions in 1506 pages
DETAIL:  8244 index row versions were removed.
81 index pages have been deleted, 81 are currently reusable.
CPU 0.04s/0.05u sec elapsed 0.09 sec.
INFO:  index "so_obclass" now contains 265619 row versions in 1964 pages
DETAIL:  8244 index row versions were removed.
690 index pages have been deleted, 690 are currently reusable.
CPU 0.07s/0.04u sec elapsed 0.12 sec.
INFO:  index "so_obstring" now contains 265619 row versions in 3240 pages
DETAIL:  8244 index row versions were removed.
240 index pages have been deleted, 240 are currently reusable.
CPU 0.08s/0.06u sec elapsed 0.14 sec.
INFO:  vacuuming "pg_toast.pg_toast_17929229"
INFO:  "pg_toast_17929229": found 6203 removable, 257509 nonremovable row versions in 20509016 pages
DETAIL:  0 dead row versions cannot be removed yet.
Nonremovable row versions range from 45 to 2030 bytes long.
There were 87521183 unused item pointers.
Total free space (including removable row versions) is 166910212580 bytes.
20384082 pages are or will become empty, including 3 at the end of the table.
20507826 pages containing 166910155528 free bytes are potential move destinations.
CPU 412.14s/58.08u sec elapsed 3632.16 sec.
INFO:  index "pg_toast_17929229_index" now contains 257509 row versions in 709 pages
DETAIL:  0 index row versions were removed.
0 index pages have been deleted, 0 are currently reusable.
CPU 0.02s/0.15u sec elapsed 0.22 sec.
[/code]
i tak stoi...
Po wyświetleniu ostatniego komunikatu status vacuuma wygląda tak:
[code]
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
25948 postgres  18   0 3543m 3.2g 1.9g D    2 20.6  20:09.29 postgres: postgres db1 [local] VACUUM
[/code]

Około 8 godzin później żaden nowy komunikat się nie pojawia, a proces wygląda tak:

[code]
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
25948 postgres  17   0 3544m 3.2g 1.9g D    2 20.7  27:55.63 postgres: postgres db1 [local] VACUUM
[/code]

Na tej tabeli jedynie vacuum FULL się "zawiesza", pozostałe kończą się prawidłowo.
Czy ten vacuum się zakończy? Dodam, że żadne transakcje wtedy nie są przeprowadzane (nie ma w procesach "idle in transaction").

Vacuum analyze kończy się bez problemu:
[code]
(...)
INFO:  vacuuming "pg_toast.pg_toast_17929229"
INFO:  index "pg_toast_17929229_index" now contains 260391 row versions in 1279 pages
DETAIL:  194099 index row versions were removed.
0 index pages have been deleted, 0 are currently reusable.
CPU 0.01s/0.16u sec elapsed 0.18 sec.
INFO:  "pg_toast_17929229": removed 196567 row versions in 42846 pages
DETAIL:  CPU 0.05s/0.32u sec elapsed 1.24 sec.
INFO:  "pg_toast_17929229": found 196567 removable, 257570 nonremovable row versions in 20510280 pages
DETAIL:  321 dead row versions cannot be removed yet.
There were 87339448 unused item pointers.
0 pages are entirely empty.
CPU 266.24s/51.49u sec elapsed 1920.18 sec.
INFO:  analyzing "sch1.myobjects"
INFO:  "myobjects": scanned 3000 of 16620 pages, containing 48341 live rows and 1107 dead rows; 3000 rows in sample, 267809 estimated total rows
[/code]

[code]
STATYSTYKA TABELI               WARTOŚĆ
Sekwencyjne Skanowanie          447
Sekwencyjne czytanie krotek     112970571
Skanowanie Indeksu              134224142
Otrzymane krotki z indeksu      150731640
Krotki Wstawione                2264237
Krotki Zmodyfikowane            66627716
Krotki Usunięte                 2251604
Czytane Bloki Sterty            449134812
Trafione Bloki Sterty           2961264210
Czytane Bloki Indeksu           171414088
Trafione Bloki Indeksu          2925322632
Czytane Bloki Toast             7023198390
Trafione Bloki Toast            149901760
Czytane Bloki Indeks Toast      59609445
Trafione Bloki Indeks Toast     674523766
Rozmiar Tabeli                  129 MB
Rozmiar Tabeli Toast            156 GB
Rozmiar Indeksu                 102 MB
[/code]

PostgreSQL 8.1.18]]></summary>
			<author>
				<name><![CDATA[krajewskis]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=989</uri>
			</author>
			<updated>2010-04-12T07:09:26Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?id=313&amp;action=new</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Problem z wydajnoscia podzapytania]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?id=127&amp;action=new"/>
			<summary type="html"><![CDATA[Witam wszystkich, to jest moj pierwszy post na tym forum.

Problem polega na tym ze dodanie dodatkowego warunku w podzapytaniu zabija wydajnosc.
Sa trzy tabele:
select count(*) from booklet_matrix ;
 15086

select count(*) from booklet ;
  2846

select count(*) from booklet_elements ;
  6729

Tabelka booklet_matrix to zlaczenie obu tabel:
\d booklet_matrix;
Table "public.booklet_matrix"
 Column |  Type   | Modifiers 
--------+---------+-----------
 id_b   | integer | 
 id_e   | integer | 
 name   | text    | 
Indexes:
    "booklet_matrix_idb" btree (id_b)
    "booklet_matrix_ide" btree (id_e)
Foreign-key constraints:
    "booklet_matrix_id_b_fkey" FOREIGN KEY (id_b) REFERENCES booklet(id)
    "booklet_matrix_id_e_fkey" FOREIGN KEY (id_e) REFERENCES booklet_elements(id)


Tabela booklet:
\d booklet;
                            Table "public.booklet"
   Column    |  Type   |                      Modifiers                       
-------------+---------+------------------------------------------------------
 id          | integer | not null default nextval('booklet_id_seq'::regclass)
 id_f        | integer | 
 code        | text    | 
 description | text    | 
 issue       | text    | 
 status      | integer | 
 job         | integer | 
 old_issue   | integer | default 0
 snapshot    | boolean | default false
 n_status    | integer | 
 type        | integer | default 1
Indexes:
    "booklet_pkey" PRIMARY KEY, btree (id)
    "booklet_family_idx" btree (id_f)
    "booklet_status_key" btree (status)
Triggers:
    issue AFTER UPDATE ON booklet FOR EACH ROW EXECUTE PROCEDURE old_issue()


Tabela booklet_elements jest malo istotna, nie sprawia problemow (narazie).


Laczenie
Lacze wszystkie trzy tabele, szukajac rekordow ktore spelniaja warunek w jednej lub drugiej, zwraca mi to czego szukalem, ale pojawia sie problem z wydajnoscia

Zapytanie szybkie:
explain ANALYZE select id_f
from
booklet_matrix bm
RIGHT JOIN (select * from booklet_elements be where be.status in (1)) be on be.id = bm.id_e
RIGHT JOIN (select * from booklet b where b.type=1 and b.status in (1,2)) b on b.id = bm.id_b;
                                                                              QUERY PLAN                                                                               
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
 Hash Left Join  (cost=336.10..432.68 rows=106 width=4) (actual time=0.411..0.567 rows=56 loops=1)
   Hash Cond: (b.id = bm.id_b)
   ->  Bitmap Heap Scan on booklet b  (cost=9.32..105.49 rows=106 width=8) (actual time=0.354..0.424 rows=56 loops=1)
         Recheck Cond: (status = ANY ('{1,2}'::integer[]))
         Filter: ("type" = 1)
         ->  Bitmap Index Scan on booklet_status_key  (cost=0.00..9.30 rows=106 width=0) (actual time=0.155..0.155 rows=809 loops=1)
               Index Cond: (status = ANY ('{1,2}'::integer[]))
   ->  Hash  (cost=325.58..325.58 rows=96 width=4) (actual time=0.045..0.045 rows=0 loops=1)
         ->  Hash Join  (cost=11.18..325.58 rows=96 width=4) (actual time=0.044..0.044 rows=0 loops=1)
               Hash Cond: (bm.id_e = be.id)
               ->  Seq Scan on booklet_matrix bm  (cost=0.00..256.86 rows=15086 width=8) (actual time=0.014..0.014 rows=1 loops=1)
               ->  Hash  (cost=10.65..10.65 rows=43 width=4) (actual time=0.024..0.024 rows=0 loops=1)
                     ->  Index Scan using booklet_elements_status on booklet_elements be  (cost=0.00..10.65 rows=43 width=4) (actual time=0.023..0.023 rows=0 loops=1)
                           Index Cond: (status = 1)
 Total runtime: 0.662 ms
(15 rows)


Dodanie jednego warunku w podzapytaniu przeszkadza:
pcss=# explain ANALYZE select id_f
from
booklet_matrix bm
RIGHT JOIN (select * from booklet_elements be where be.status in (1)) be on be.id = bm.id_e
RIGHT JOIN (select * from booklet b where [b]b.id_f=229[/b] and b.status in (1,2)) b on b.id = bm.id_b;
                                                                           QUERY PLAN                                                                            
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
 Nested Loop Left Join  (cost=20.48..432.24 rows=1 width=4) (actual time=0.449..996.961 rows=42 loops=1)
   Join Filter: (b.id = bm.id_b)
   ->  Bitmap Heap Scan on booklet b  (cost=9.30..105.46 rows=1 width=8) (actual time=0.395..0.509 rows=42 loops=1)
         Recheck Cond: (status = ANY ('{1,2}'::integer[]))
         Filter: (id_f = 229)
         ->  Bitmap Index Scan on booklet_status_key  (cost=0.00..9.30 rows=106 width=0) (actual time=0.159..0.159 rows=809 loops=1)
               Index Cond: (status = ANY ('{1,2}'::integer[]))
   ->  Hash Join  (cost=11.18..325.58 rows=96 width=4) (actual time=23.721..23.721 rows=0 loops=42)
         Hash Cond: (bm.id_e = be.id)
         ->  Seq Scan on booklet_matrix bm  (cost=0.00..256.86 rows=15086 width=8) (actual time=0.006..11.845 rows=14727 loops=42)
         ->  Hash  (cost=10.65..10.65 rows=43 width=4) (actual time=0.025..0.025 rows=0 loops=1)
               ->  Index Scan using booklet_elements_status on booklet_elements be  (cost=0.00..10.65 rows=43 width=4) (actual time=0.023..0.023 rows=0 loops=1)
                     Index Cond: (status = 1)
 Total runtime: 997.060 ms
(14 rows)

Co poradzic?]]></summary>
			<author>
				<name><![CDATA[teosb]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=583</uri>
			</author>
			<updated>2010-03-02T06:52:20Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?id=127&amp;action=new</id>
		</entry>
</feed>
