REFRESH MATERIALIZED VIEW
REFRESH MATERIALIZED VIEW
구체화된 뷰(materialized view)의 내용을 완전히 교체하는 명령이에요. 이전 내용은 버려지고, 뷰의 정의 쿼리를 다시 실행해 새 데이터를 채워 넣어요. 구체화된 뷰를 최신 상태로 갱신하거나 저장 공간을 비울 때 사용해요.
출처: PostgreSQL 문서
본문
개요 (Synopsis)
REFRESH MATERIALIZED VIEW [ CONCURRENTLY ] name
[ WITH [ NO ] DATA ]
설명 (Description)
REFRESH MATERIALIZED VIEW는 구체화된 뷰의 내용을 완전히 교체해요. 이 명령을 실행하려면 구체화된 뷰에 대한 MAINTAIN 권한이 있어야 해요. 이전 내용은 버려져요. WITH DATA가 지정되면(또는 기본값) 새 데이터를 제공하기 위해 기본 쿼리가 실행되고, 구체화된 뷰는 스캔 가능한 상태로 남아요. WITH NO DATA가 지정되면 새 데이터가 생성되지 않고 구체화된 뷰는 스캔할 수 없는 상태로 남아요.
CONCURRENTLY와 WITH NO DATA는 함께 지정할 수 없어요.
파라미터 (Parameters)
CONCURRENTLY — 구체화된 뷰에 대한 동시 SELECT를 잠그지 않고 구체화된 뷰를 리프레시해요. 이 옵션이 없으면 많은 행을 다루는 리프레시는 더 적은 리소스를 사용하고 더 빨리 완료되는 경향이 있지만, 구체화된 뷰에서 읽으려는 다른 연결을 막을 수 있어요. 적은 수의 행이 영향받는 경우에는 이 옵션이 더 빠를 수 있어요.
이 옵션은 구체화된 뷰에 열 이름만 사용하고 모든 행을 포함하는 UNIQUE 인덱스가 하나 이상 있을 때만 허용돼요. 즉 표현식 인덱스가 아니어야 하고 WHERE 절을 포함하지 않아야 해요.
이 옵션은 구체화된 뷰가 이미 채워져 있을 때만 사용할 수 있어요.
이 옵션을 사용하더라도 어떤 구체화된 뷰 하나에 대해 한 번에 하나의 REFRESH만 실행될 수 있어요.
*name* — 리프레시할 구체화된 뷰의 이름이에요(선택적으로 스키마 한정).
참고 (Notes)
구체화된 뷰의 정의 쿼리에 ORDER BY 절이 있으면 구체화된 뷰의 원래 내용이 그렇게 정렬되지만, REFRESH MATERIALIZED VIEW는 그 정렬을 보존한다고 보장하지 않아요.
REFRESH MATERIALIZED VIEW가 실행되는 동안 search_path는 일시적으로 pg_catalog, pg_temp로 변경돼요.
예제 (Examples)
이 명령은 구체화된 뷰의 정의에 있는 쿼리를 사용해 order_summary라는 구체화된 뷰의 내용을 교체하고 스캔 가능한 상태로 남겨요.
REFRESH MATERIALIZED VIEW order_summary;
이 명령은 구체화된 뷰 annual_statistics_basis와 연관된 저장 공간을 비우고 스캔할 수 없는 상태로 남겨요.
REFRESH MATERIALIZED VIEW annual_statistics_basis WITH NO DATA;
호환성 (Compatibility)
REFRESH MATERIALIZED VIEW는 PostgreSQL 확장이에요.
더 알아보기 (Learn more)
구체화된 뷰를 만드는 방법은 CREATE MATERIALIZED VIEW 문서를, 삭제하는 방법은 DROP MATERIALIZED VIEW 문서를 함께 보면 좋아요.