Thanks, "The only thing that immediately comes to mind would be running a rather hacky DO function in 4 separate sessions:" You mean 8 sessions I guess. 8 separate sessions ? Have you any idea how to manage sessions ? Is it possible to create separate session internaly ? Do I have to make 8 external connection to database, to get 8 process. It would be great if I could manage session internaly, in a pl/sql by example. Le 04/04/2014 18:54, Thom Brown a écrit : > On 4 April 2014 17:29, Nicolas Paris <niparisco@xxxxxxxxx> wrote: >> Hello, >> >> My question is about multiprocess and materialized View. >> http://www.postgresql.org/docs/9.3/static/sql-creatematerializedview.html >> I (will) have something like 3600 materialised views, and I would like to >> know the way to refresh them in a multithread way >> (anderstand 8 cpu cores -> 8 refresh process in the same time) > > The only thing that immediately comes to mind would be running a > rather hacky DO function in 4 separate sessions: > > DO $$ > DECLARE > session CONSTANT BIGINT := 0; > rec RECORD; > BEGIN > FOR rec IN SELECT quote_ident(nspname) || '.' || > quote_ident(relname) AS mv FROM pg_class c INNER JOIN pg_namespace n > ON c.relnamespace = n.oid WHERE relkind = 'm' AND c.oid::bigint % 8 = > session LOOP > RAISE NOTICE 'Refreshing materialized view: %', rec.mv; > EXECUTE 'REFRESH MATERIALIZED VIEW ' || rec.mv || ';'; > END LOOP; > END$$ language plpgsql; > > Where you would set session to 0 for the first session, 1 for the > next, 2 for the next and 3 for the next, and so on until you reach 7 > for the last. These would each be run in a separate parallel session, > although someone may come up with a better solution. > -- Sent via pgsql-performance mailing list (pgsql-performance@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-performance