2014-02-15 21:52 GMT+01:00 AlexK <alk...@gmail.com>:

> Hi Pavel,
>
> 1. I believe we have lots of memory. How much is needed to read one array
> of 30K float number?
>

it is not too much - about 120KB


> 2. What do we need to avoid possible repeated detost, and what it is?
>

any access to array emits detoast - so repeated access to any field in
array is wrong. You can read a complete array as one block, or you can
evaluate a array as table - and then detost is processed only once.


> 3. We are not going to update individual elements of the arrays. We might
> occasionally replace the whole thing. When we benchmarked, we did not
> notice slowness. Can you explain how to reproduce slowness?
>

you can see this example

postgres=# do
$$
declare a int[] := '{}';
begin
  for i in 1..1000
  loop
    a := a || i;
  end loop;
end;
$$;

This code is fast only for small arrays

10K ~ 100ms
100K ~ 10000ms

postgres=# do
$$
declare a int := 0;
begin
  for i in 1..100000
  loop
    a := a + 1;
  end loop;
end;
$$;
DO
Time: 88.481 ms

overhead of plpgsql cycle is about 100ms

but you can generate a array by fast way (but should not be by update)

postgres=# select array_upper(array(select generate_series(1,100000)),1);
 array_upper
─────────────
      100000
(1 row)
Time: 19.441 ms

Pg can manipulate with large arrays relatively fast

postgres=# select max(unnest) from (select unnest(array(select
generate_series(1,100000)))) x;
  max
────────
 100000
(1 row)

Time: 96.644 ms

but it should be a block operations

Regards

Pavel



>
> TIA!
>
>
> On Fri, Feb 14, 2014 at 11:03 PM, Pavel Stehule [via PostgreSQL] <[hidden
> email] <http://user/SendEmail.jtp?type=node&node=5792236&i=0>> wrote:
>
>> Hello
>>
>>
>> I worked with 80K float fields without any problem.
>>
>> There are possible issues:
>>
>> * needs lot of memory for detoast - it can be problem with more parallel
>> queries
>> * there is a risk of possible repeated detost - some unhappy usage in
>> plpgsql can be slow - it is solvable, but you have to identify this issue
>> * any update of large array is slow - so these arrays are good for write
>> once data
>>
>> Regards
>>
>> Pavel
>>
>>
>> 2014-02-14 23:07 GMT+01:00 lup <[hidden 
>> email]<http://user/SendEmail.jtp?type=node&node=5792144&i=0>
>> >:
>>
>>> Would 10K elements of float[3] make any difference in terms of read/write
>>> performance?
>>> Or 240K byte array?
>>>
>>> Or are these all functionally the same issue for the server? If so,
>>> intriguing possibilities abound. :)
>>>
>>>
>>>
>>>
>>>
>>> --
>>> View this message in context:
>>> http://postgresql.1045698.n5.nabble.com/Is-it-reasonable-to-store-double-arrays-of-30K-elements-tp5790562p5792099.html
>>> Sent from the PostgreSQL - general mailing list archive at Nabble.com.
>>>
>>>
>>> --
>>> Sent via pgsql-general mailing list ([hidden 
>>> email]<http://user/SendEmail.jtp?type=node&node=5792144&i=1>
>>> )
>>>
>>> To make changes to your subscription:
>>> http://www.postgresql.org/mailpref/pgsql-general
>>>
>>
>>
>>
>> ------------------------------
>>  If you reply to this email, your message will be added to the
>> discussion below:
>>
>> http://postgresql.1045698.n5.nabble.com/Is-it-reasonable-to-store-double-arrays-of-30K-elements-tp5790562p5792144.html
>>  To unsubscribe from Is it reasonable to store double[] arrays of 30K
>> elements, click here.
>> NAML<http://postgresql.1045698.n5.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>
>>
>
>
> ------------------------------
> View this message in context: Re: Is it reasonable to store double[]
> arrays of 30K 
> elements<http://postgresql.1045698.n5.nabble.com/Is-it-reasonable-to-store-double-arrays-of-30K-elements-tp5790562p5792236.html>
>
> Sent from the PostgreSQL - general mailing list 
> archive<http://postgresql.1045698.n5.nabble.com/PostgreSQL-general-f1843780.html>at
>  Nabble.com.
>

Reply via email to