On Oct 1, 2010, at 8:36 PM, Josh Kupershmidt <schmi...@gmail.com> wrote:
> On Fri, Oct 1, 2010 at 4:33 AM, Leonardo Francalanci <m_li...@yahoo.it> wrote:
>>> I ran a few more performance tests on this patch. Here's what  I got
>>> for the tests Leonardo posted originally:
>>>    * 2M  rows:  22 seconds for seq. scan, 24 seconds for index scan
>>>    * 5M  rows:  139 seconds for seq. scan, 97 seconds for index scan
>>>    *  10M rows: 256 seconds seq. scan, 611 seconds for index scan
>> 
>> I don't have time right now to run more tests, I'll try to make some by
>> next week.
>> 
>> Would it mean that doing:
>> 
>> create table p as select * from atable order by akey
>> 
>> (where akey is random distributed)
>> with 5M rows is faster with enable_seqscan=0 and
>> enable_indexscan=1??? That would be weird, especially on a
>> laptop hard drive! (assuming there's a reasonable amount of
>> memory set in work_mem/maintenance_work_mem)
> 
> Hrm, this is interesting. I set up a test table with 5M rows like so:
> 
> CREATE TABLE atable (
>   akey   int
> );
> INSERT INTO atable (akey)
> SELECT (RANDOM() * 100000)::int FROM generate_series(1,5000000);
> CREATE INDEX akey_idx ON atable(akey);
> ANALYZE atable;
> 
> And then I tested table creation times. First, using a normal:
> 
> BEGIN;
>   SET enable_seqscan = on;
>   SET enable_indexscan = on;
>   EXPLAIN ANALYZE CREATE TABLE idxscanned AS SELECT * FROM atable
> ORDER BY akey;
> ROLLBACK;
> 
> and I get:
>   Index Scan using akey_idx on atable
>     (cost=0.00..218347.89 rows=5000000 width=4)
>     (actual time=0.058..23612.020 rows=5000000 loops=1)
>  Total runtime: 33029.884 ms
> 
> Then, I tried forcing a sequential scan by changing "SET
> enable_indexscan = off;", and it's significantly faster, as I would
> expect:
> 
> Sort  (cost=696823.42..709323.42 rows=5000000 width=4)
>          (actual time=8664.699..13533.131 rows=5000000 loops=1)
>   Sort Key: akey
>   Sort Method:  external merge  Disk: 68304kB
>   ->  Seq Scan on atable  (cost=0.00..72124.00 rows=5000000 width=4)
>          (actual time=0.012..838.092 rows=5000000 loops=1)
> Total runtime: 21015.501 ms
> 
> I've ran both of these several times, and get 30-32 seconds for the
> index scan and 20-21 seconds for the seq. scan each time.
> 
> My seq_page_cost and random_page_cost were left at the defaults for
> these tests. Oddly, I tried turning seq_page_cost down to 0.01 and
> EXPLAIN ANALYZE told me that an index scan was still being chosen. Is
> there maybe some other setting I'm forgetting?

Did you also adjust random_page_cost?

...Robert
-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to