web-dev-qa-db-fra.com

Postgres Actualiser les serrures de la vue matérialisée

J'ai une vue matérialisée à Postgres et je veux savoir quels serrures (le cas échéant) sont retirés lorsque vous rafraîchissez cette vue.

CREATE TABLE people ( name VARCHAR(30) );
INSERT INTO people VALUES ('Alice'), ('Bob'), ('Cher');
CREATE MATERIALIZED VIEW test AS SELECT * FROM people;
REFRESH MATERIALIZED VIEW test;

Plus précisément, j'essaie de comprendre si le REFRESH MATERIALIZED VIEW la commande sort un ACCESS EXCLUSIVE serrure.

J'ai essayé une explication sans succès:

#> EXPLAIN REFRESH MATERIALIZED VIEW test;

                QUERY PLAN                 
-------------------------------------------
Utility statements have no plan structure
5
supyo

REFRESH MATERIALIZED VIEW CONCURRENTLY prend un verrouille EXCLUSIVE, alors SELECTs peut toujours exécuter. Par le manuel .

Il semble y avoir une surveillance avec REFRESH MATERIALIZED VIEW (sans CONCURRENTLY) car il n'est pas répertorié là-bas. Une recherche du code source montre que ExecRefreshMatView prendre un ACCESS EXCLUSIVE Verrouiller, comme vous pouviez vous attendre, aucune autre question ne peut fonctionner sur la vue.

J'ai soumis un correctif Documents pour la répertorier.

8
Craig Ringer