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
REFRESH MATERIALIZED VIEW CONCURRENTLY
prend un verrouille EXCLUSIVE
, alors SELECT
s 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.