1

Temat: Zacinający się postgresql

Mam zainstalowanego  postgresql(8.1.11) na centos 5.1.

Wszytko niby działa poprawnie ale:

Gdy włączam zapytanie:

SELECT count(id_muarab_rosliny) FROM muarab_rosliny; (odpowiedzi: 27891 po 35 sekndach)

SELECT count(id_muarab_przedmioty) FROM muarab_przedmioty; (odpowiedzi: 48990 po 2 sekndach)

No właśnie z kąd ta różnica ?? W skryptach PHP jest tak samo wszędzie gdzie użyję muarab_rosliny skrypt "Wisi" ok 70 sekund a gdy jest użyta tabela przedmioty skrypt generuje się 0,06 s .

Obie tabele są prawie identyczne różnią się końcówką nazwy.

2

Odp: Zacinający się postgresql

Pokaz plan wykonania polecenia.

3

Odp: Zacinający się postgresql

Hmmm próbowałem tak:

muarab=# EXPLAIN SET STATEMENT_ID = ‘z1’ FOR Select login,email from user_cfg where a IN ('A');                                              ERROR:  syntax error at or near "SET" znak 9
LINE 1: EXPLAIN SET STATEMENT_ID = ‘z1’ FOR Select login,email from ...

ale coś nie idzie.

4

Odp: Zacinający się postgresql

??
Spodziewalem sie wynikow polecen

explain SELECT count(id_muarab_rosliny) FROM muarab_rosliny;

explain SELECT count(id_muarab_przedmioty) FROM muarab_przedmioty;

Zrob tez

vacuum analyze;

i jeszcze raz explain'y

5

Odp: Zacinający się postgresql

Pierwszy raz:

q=# explain SELECT count(id_muarab_rosliny) FROM muarab_rosliny;
                                   QUERY PLAN
--------------------------------------------------------------------------------
Aggregate  (cost=596901.02..596901.03 rows=1 width=4)
   ->  Seq Scan on muarab_rosliny  (cost=0.00..547800.01 rows=19640401 width=4)

q=# explain SELECT count(id_muarab_przedmiot) FROM muarab_przedmiot;
                                  QUERY PLAN
------------------------------------------------------------------------------
Aggregate  (cost=2676.80..2676.81 rows=1 width=4)
   ->  Seq Scan on muarab_przedmiot  (cost=0.00..2401.24 rows=110224 width=4)

6

Odp: Zacinający się postgresql

q=# vacuum analyze;
NOTICE:  number of page slots needed (30992) exceeds max_fsm_pages (20000)
PODPOWIEDŹ:  Consider increasing the configuration parameter "max_fsm_pages" to a value over 30992.
VACUUM

7

Odp: Zacinający się postgresql

q=# explain SELECT count(id_muarab_przedmiot) FROM muarab_przedmiot;
                                 QUERY PLAN
-----------------------------------------------------------------------------
Aggregate  (cost=1999.90..1999.91 rows=1 width=4)
   ->  Seq Scan on muarab_przedmiot  (cost=0.00..1859.72 rows=56072 width=4)
(2 rows)

q=# explain SELECT count(id_muarab_rosliny) FROM muarab_rosliny;
                                 QUERY PLAN
-----------------------------------------------------------------------------
Aggregate  (cost=353300.05..353300.06 rows=1 width=4)
   ->  Seq Scan on muarab_rosliny  (cost=0.00..353200.84 rows=39684 width=4)
(2 rows)

8

Odp: Zacinający się postgresql

explain analyze SELECT count(id_muarab_rosliny) FROM muarab_rosliny;

explain analyze SELECT count(id_muarab_przedmioty) FROM muarab_przedmioty;

9

Odp: Zacinający się postgresql

Tzn zwiększyłem :

max_fsm_pages (20000) do 50000 tylko jeszcze musze doczytać co to robi smile

10

Odp: Zacinający się postgresql

q=# explain analyze SELECT count(id_muarab_rosliny) FROM muarab_rosliny;
                                                           QUERY PLAN
---------------------------------------------------------------------------------------------------------------------------------
Aggregate  (cost=353300.05..353300.06 rows=1 width=4) (actual time=48656.152..48656.153 rows=1 loops=1)
   ->  Seq Scan on muarab_rosliny  (cost=0.00..353200.84 rows=39684 width=4) (actual time=405.285..48602.345 rows=40612 loops=1)
Total runtime: 48656.311 ms
(3 rows)

11

Odp: Zacinający się postgresql

q=# explain analyze SELECT count(id_muarab_przedmiot) FROM muarab_przedmiot;
                                                         QUERY PLAN
-----------------------------------------------------------------------------------------------------------------------------
Aggregate  (cost=1999.90..1999.91 rows=1 width=4) (actual time=217.278..217.279 rows=1 loops=1)
   ->  Seq Scan on muarab_przedmiot  (cost=0.00..1859.72 rows=56072 width=4) (actual time=0.012..143.361 rows=56924 loops=1)
Total runtime: 217.389 ms
(3 rows)

12

Odp: Zacinający się postgresql

Muszę zaznaczyć że do tej pory się tak nie działo, czasy odpowiedzi są takie długie tylko na tej tabeli a jest ich w tej bazie około 120

13

Odp: Zacinający się postgresql

Ok. Rozwiązałem problem. Nie wiem co to do końca było ale zrobiłem tak:

pg_dump pec -t muarab_rosliny > 28.11.2008_pec_muarab_rosliny.sql

DROP TABLE muarab_rosliny;

\i 28.11.2008_pec_muarab_rosliny.sql

CZasy już są normalne.

DZięki rski za POMOC ! Jak będziesz w pobliżu Legionowa to zajrzyj po pivko smile

14

Odp: Zacinający się postgresql

Hmm. Zawsze to jakieś rozwiązanie, średnio się tylko nadaje dla duuuuzych tabel smile. Jak bede w okolicy to na pewno wpadne ale na pivko wink.