Re: dsa_allocate() faliure
От | Thomas Munro |
---|---|
Тема | Re: dsa_allocate() faliure |
Дата | |
Msg-id | CAEepm=1MvOE-Sfv1chudx5KEmw_qHYrj8F9Og_WmdBRhXSQ++w@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: dsa_allocate() faliure (Jakub Glapa <jakub.glapa@gmail.com>) |
Ответы |
Re: dsa_allocate() faliure
|
Список | pgsql-hackers |
On Thu, Feb 7, 2019 at 9:10 PM Jakub Glapa <jakub.glapa@gmail.com> wrote: > > Do you have query logging enabled ? If not, could you consider it on at least > one of those servers ? I'm interested to know what ELSE is running at the time > that query failed. > > Ok, I have configured that and will enable in the time window when the errors usually occur. I'll report as soon as I havesomething. I don't have the answer yet but I have some progress: I finally reproduced the "could not find %d free pages" error by running lots of concurrent parallel queries. Will investigate. Set up: create table foo (p int, a int, b int) partition by list (p); create table foo_1 partition of foo for values in (1); create table foo_2 partition of foo for values in (2); create table foo_3 partition of foo for values in (3); alter table foo_1 set (parallel_workers = 4); alter table foo_2 set (parallel_workers = 4); alter table foo_3 set (parallel_workers = 4); insert into foo select generate_series(1, 10000000)::int % 3 + 1, generate_series(1, 10000000)::int % 50, generate_series(1, 10000000)::int % 50; create index on foo_1(a); create index on foo_2(a); create index on foo_3(a); create index on foo_1(b); create index on foo_2(b); create index on foo_3(b); analyze; Then I ran three copies of : #!/bin/sh ( echo "set max_parallel_workers_per_gather = 4;" for I in `seq 1 100000`; do echo "explain analyze select count(*) from foo where a between 5 and 6 or b between 5 and 6;" done ) | psql postgres -- Thomas Munro http://www.enterprisedb.com
В списке pgsql-hackers по дате отправления: