Size: a a a

pgsql – PostgreSQL

2021 February 09

AL

Alexey Lesovsky in pgsql – PostgreSQL
высокий systime обычно показатель того что большой fork rate из-за того что приложение криво работает с БД, и на каждый запрос делает отдельный коннект
источник

VG

Viktor Grigorev in pgsql – PostgreSQL
pgbouncer настроен, все клиенты ходят через пул из 16 соединений (хотя может проглядел что в его настройках)
источник

АА

Артур Асриян... in pgsql – PostgreSQL
The2lb3oz4dr10½grOfHedgehogs
Вот так добился желаемого результата, но очень смущает cross join

with my_jsonb_table as (
 select unnest(array['[[], [1, 2], [3]]'::jsonb, '[[4, 5], [6], []]'::jsonb]) as val
)
select (select array_agg(values)
       from jsonb_array_elements(my_jsonb_table.val) as elements
       cross join jsonb_array_elements(elements) as values)
from my_jsonb_table;



array_agg
-----------
{1,2,3}
{4,5,6}
(2 rows)
можно вот так с row_number и без джоина.
with
 tr_data as (
              select unnest(array['[[], [1, 2], [3]]'::jsonb, '[[4,5],[6],[]]'::jsonb]) as mm
      ),
  unn1 as (
            select jsonb_array_elements(mm) as n, row_number() over() vv
        from tr_data a),
  unn2 as (
            select jsonb_array_elements(n) as n, vv
        from unn1 a)  
select vv, array_agg(n)::jsonb[]
 from unn2 group by vv;

vv | array_agg
----+-----------
 2 | {4,5,6}
 1 | {1,2,3}
источник

T

The2lb3oz4dr10½grOfH... in pgsql – PostgreSQL
Артур Асриян
можно вот так с row_number и без джоина.
with
 tr_data as (
              select unnest(array['[[], [1, 2], [3]]'::jsonb, '[[4,5],[6],[]]'::jsonb]) as mm
      ),
  unn1 as (
            select jsonb_array_elements(mm) as n, row_number() over() vv
        from tr_data a),
  unn2 as (
            select jsonb_array_elements(n) as n, vv
        from unn1 a)  
select vv, array_agg(n)::jsonb[]
 from unn2 group by vv;

vv | array_agg
----+-----------
 2 | {4,5,6}
 1 | {1,2,3}
А что лучше group by или cross join?...
источник

AL

Alexey Lesovsky in pgsql – PostgreSQL
Viktor Grigorev
pgbouncer настроен, все клиенты ходят через пул из 16 соединений (хотя может проглядел что в его настройках)
навскидку, посмотрите pidstat -w -p $PID 1 - где $PID это пид постмастера
источник

VG

Viktor Grigorev in pgsql – PostgreSQL
за минуту максимально 8 cswch/s, а так в основном около 0
источник

AL

Alexey Lesovsky in pgsql – PostgreSQL
также посмотрите через pidtstat -u -p $PID 1 на процесс баунсера, не они ли случаем показывают выскоий sy
источник

AL

Alexey Lesovsky in pgsql – PostgreSQL
Viktor Grigorev
за минуту максимально 8 cswch/s, а так в основном около 0
это ок
источник

VG

Viktor Grigorev in pgsql – PostgreSQL
440-500 cswch/s на pgbouncer
источник

VG

Viktor Grigorev in pgsql – PostgreSQL
спасибо за наводку
источник

AL

Alexey Lesovsky in pgsql – PostgreSQL
не не, погодите там во второй команде ключ -u
источник

VG

Viktor Grigorev in pgsql – PostgreSQL
Alexey Lesovsky
не не, погодите там во второй команде ключ -u
проглядел. system 1-2%, до 4
источник

AL

Alexey Lesovsky in pgsql – PostgreSQL
ну это тоже ок
источник

АА

Артур Асриян... in pgsql – PostgreSQL
The2lb3oz4dr10½grOfHedgehogs
А что лучше group by или cross join?...
а твой пример с кросс джоином с тремя записями норм сработает?
источник

VG

Viktor Grigorev in pgsql – PostgreSQL
pidstat -u -p <worker> показывает 20-30% system
источник

AL

Alexey Lesovsky in pgsql – PostgreSQL
это один конкретный процесс так штормит?
источник

AL

Alexey Lesovsky in pgsql – PostgreSQL
или разные?
источник

T

The2lb3oz4dr10½grOfH... in pgsql – PostgreSQL
Артур Асриян
а твой пример с кросс джоином с тремя записями норм сработает?
угу
источник

AL

Alexey Lesovsky in pgsql – PostgreSQL
как вариант может быть параллельные воркеры запускаются, быстро отрабатывают и завершаюся.
источник

АА

Артур Асриян... in pgsql – PostgreSQL
ну я хз что лучше. в sql всегда есть множество разных способов решить задачу. если интересует скорость то лучше всего покажут замеры.
источник