Re: Performance of a large array access by position (tested version 9.1.3) - Mailing list pgsql-performance

From Pavel Stehule
Subject Re: Performance of a large array access by position (tested version 9.1.3)
Date
Msg-id CAFj8pRD4jxJxr5i6WOCtRLGAwecXg-i6=taMpseuDxZh=NVx7g@mail.gmail.com
Whole thread Raw
In response to Re: Performance of a large array access by position (tested version 9.1.3)  ("Marc Mamin" <M.Mamin@intershop.de>)
Responses Re: Performance of a large array access by position (tested version 9.1.3)  ("Marc Mamin" <M.Mamin@intershop.de>)
List pgsql-performance
2012/6/26 Marc Mamin <M.Mamin@intershop.de>:
>
>>> On 22/06/12 09:02, Maxim Boguk wrote:
>
>>> May be I completely wrong but I always assumed that the access speed to the array element in PostgreSQL should be
closeto constant time. 
>>> But in tests I found that access speed degrade as O(N) of array size.
>
>>> Is that behaviour is correct?

yes - access to n position means in postgresql - skip n-1 elements

Regards

Pavel

>
>
>> From: pgsql-performance-owner@postgresql.org On Behalf Of Jesper Krogh
>
>> Default column storage is to "compress it, and store in TOAST" with large values.
>> This it what is causing the shift. Try to change the column storage of the column
>> to EXTERNAL instead and rerun the test.
>
>
> Hello,
>
> I've repeated your test in a simplified form:
> you are right :-(
>
> create table t1 ( _array int[]);
> alter table t1 alter _array set storage external;
> insert into t1 SELECT ARRAY(SELECT * FROM generate_series(1,50000));
>
> create table t2 ( _array int[]);
> alter table t2 alter _array set storage external;
> insert into t2 SELECT ARRAY(SELECT * FROM generate_series(1,5000000));
>
> explain analyze SELECT _array[1] FROM t1;
> Total runtime: 0.125 ms
>
> explain analyze SELECT _array[1] FROM t2;
> Total runtime: 8.649 ms
>
>
> best regards,
>
> Marc Mamin
>
>
>
> --
> Sent via pgsql-performance mailing list (pgsql-performance@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-performance

pgsql-performance by date:

Previous
From: "Marc Mamin"
Date:
Subject: Re: Performance of a large array access by position (tested version 9.1.3)
Next
From: "Marc Mamin"
Date:
Subject: Re: Performance of a large array access by position (tested version 9.1.3)