Re: Performance of a large array access by position (tested version 9.1.3)
От | Marc Mamin |
---|---|
Тема | Re: Performance of a large array access by position (tested version 9.1.3) |
Дата | |
Msg-id | C4DAC901169B624F933534A26ED7DF310861B5E8@JENMAIL01.ad.intershop.net обсуждение исходный текст |
Ответ на | Re: Performance of a large array access by position (tested version 9.1.3) (Jesper Krogh <jesper@krogh.cc>) |
Ответы |
Re: Performance of a large array access by position (tested
version 9.1.3)
|
Список | pgsql-performance |
>> 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? > 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
В списке pgsql-performance по дате отправления: