I assume you mean random_page_cost? It is currently set to 4.0 - is it better to increase or decrease this value?
Thank you Ogden On Sep 21, 2010, at 1:06 PM, Kenneth Marshall wrote: > You DB is more than likely cached. You should adjust your > page costs to better reflect reality and then the planner > can make more accurate estimates and then choose the proper > plan. > > Cheers, > Ken > > On Tue, Sep 21, 2010 at 12:32:01PM -0500, Ogden wrote: >> Hello, >> >> I have received some help from the IRC channel, however, the problem still >> exists. When running the following query with enable_seqscan set to 0, it >> takes less than a second, whereas with it set to 1, the query returns in 14 >> seconds. The machine itself has 8GB Ram and is running PostgreSQL 9.0 on >> Debian Lenny. The database size is about 7GB. >> >> >> Query: >> SELECT tr.id, tr.sid >> FROM >> test_registration tr, >> INNER JOIN test_registration_result r on (tr.id = >> r.test_registration_id) >> WHERE. >> >> tr.test_administration_id='32a22b12-aa21-11df-a606-96551e8f4e4c'::uuid >> GROUP BY tr.id, tr.sid >> >> >> >> demo=# \d test_registration >> Table "public.test_registration" >> Column | Type | Modifiers >> >> ------------------------+-----------------------------+------------------------ >> id | uuid | not null >> sid | character varying(36) | not null >> created_date | timestamp without time zone | not null default now() >> modified_date | timestamp without time zone | not null >> test_administration_id | uuid | not null >> teacher_number | character varying(15) | >> test_version_id | uuid | >> Indexes: >> "test_registration_pkey" PRIMARY KEY, btree (id) >> "test_registration_sid_key" UNIQUE, btree (sid, test_administration_id) >> "test_registration_teacher" btree (teacher_number) >> "test_registration_test_id" btree (test_administration_id) >> >> demo=# \d test_registration_result >> Table "public.test_registration_result" >> Column | Type | Modifiers >> ----------------------+-----------------------+----------- >> answer | character varying(15) | >> question_id | uuid | not null >> score | double precision | >> test_registration_id | uuid | not null >> Indexes: >> "test_registration_result_pkey" PRIMARY KEY, btree (question_id, >> test_registration_id) >> "test_registration_result_answer" btree (test_registration_id, answer, >> score) >> "test_registration_result_test" btree (test_registration_id) >> >> >> Explain Analyze: >> >> >> -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- >> HashAggregate (cost=951169.97..951198.37 rows=2840 width=25) (actual >> time=14669.039..14669.843 rows=2972 loops=1) >> -> Hash Join (cost=2988.07..939924.85 rows=2249024 width=25) (actual >> time=551.464..14400.061 rows=638980 loops=1) >> Hash Cond: (r.test_registration_id = tr.id) >> -> Seq Scan on test_registration_result r (cost=0.00..681946.72 >> rows=37199972 width=16) (actual time=0.015..6073.101 rows=37198734 loops=1) >> -> Hash (cost=2952.57..2952.57 rows=2840 width=25) (actual >> time=2.516..2.516 rows=2972 loops=1) >> Buckets: 1024 Batches: 1 Memory Usage: 160kB >> -> Bitmap Heap Scan on test_registration tr >> (cost=44.29..2952.57 rows=2840 width=25) (actual time=0.528..1.458 rows=2972 >> loops=1) >> Recheck Cond: (test_administration_id = >> 'e26a165a-c19f-11df-be2f-778af560e5a2'::uuid) >> -> Bitmap Index Scan on >> test_registration_test_administration_id (cost=0.00..43.58 rows=2840 >> width=0) (actual time=0.507..0.507 rows=2972 loops=1) >> Index Cond: (test_administration_id = >> 'e26a165a-c19f-11df-be2f-778af560e5a2'::uuid) >> Total runtime: 14670.337 ms >> (11 rows) >> >> >> real 0m14.698s >> user 0m0.000s >> sys 0m0.008s >> >> >> With "set enable_seqscan=0;" >> >> >> SET >> >> QUERY PLAN >> >> ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- >> HashAggregate (cost=1225400.19..1225428.59 rows=2840 width=25) (actual >> time=748.397..749.160 rows=2972 loops=1) >> -> Nested Loop (cost=0.00..1214155.07 rows=2249024 width=25) (actual >> time=0.107..465.165 rows=638980 loops=1) >> -> Index Scan using test_registration_test_administration_id on >> test_registration tr (cost=0.00..4413.96 rows=2840 width=25) (actual >> time=0.050..1.610 rows=2972 loops=1) >> Index Cond: (test_administration_id = >> 'e26a165a-c19f-11df-be2f-778af560e5a2'::uuid) >> -> Index Scan using test_registration_result_answer on >> test_registration_result r (cost=0.00..416.07 rows=792 width=16) (actual >> time=0.019..0.106 rows=215 loops=2972) >> Index Cond: (r.test_registration_id = tr.id) >> Total runtime: 749.745 ms >> (7 rows) >> >> >> real 0m0.759s >> user 0m0.008s >> sys 0m0.000s >> >> >> The following parameters are changed in postgresql.conf and I have routinely >> vacuum analyzed the tables and database: >> >> shared_buffers = 2048MB >> work_mem = 8MB >> maintenance_work_mem = 256MB >> wal_buffers = 640kB >> random_page_cost = 4.0 >> effective_cache_size = 7000MB >> default_statistics_target = 200 >> >> >> free -m: >> total used free shared buffers cached >> Mem: 8003 7849 153 0 25 7555 >> -/+ buffers/cache: 268 7735 >> Swap: 7640 0 7639 >> >> >> Any help would be appreciated. Thank you very much. >> >> Ogden > > -- > Sent via pgsql-performance mailing list (pgsql-performance@postgresql.org) > To make changes to your subscription: > http://www.postgresql.org/mailpref/pgsql-performance -- Sent via pgsql-performance mailing list (pgsql-performance@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-performance