Database/RDBMS

[PostgreSQL] VIEW vs MVIEW(Materialized View)

빈쿵바라기 2022. 8. 19. 12:31

Meterialized View(MVIEW) 란?

MVIEW는 말 그대로 VIEW입니다. 하지만 일반 VIEW가상으로 존재하는 논리적 테이블이고, MVIEW는 실제 존재하는 TABLE처럼 물리적으로 존재하는 테이블입니다. 데이터가 물리적으로 존재하기 때문에 쿼리 실행 시간의 수행속도를 향상 시킬 수 있습니다. 그리고 SUM, MIN, MAX, AVG, COUNT등 그룹 함수를 미리 계산해 놓을 때 많이 사용하고, INDEX를 사용할 수 있다는 것도 장점이 됩니다.

 

VIEW와 Materialized View의 차이점

VIEW Materialized View
disk에 저장되지 않는 가상 테이블 기초 테이블을 물리적으로 복사를 하며 디스크에 저장
기초 테이블이 업데이트 될 때마다 VIEW도 업데이트 됨 수동으로 업데이트하거나 Trigger를 사용해서 업데이트 해야함
조회 처리 속도가 느림(VIEW를 조회 할때마다 계산) 빠른 처리 속도(미리 계산 되어 물리적으로 저장 했기 때문)
저장 공간이 필요 없음 저장 공간이 필요

 

실무에서 그룹 함수를 사용하여 빠른 처리 속도가 필요 할 때에는 MVIEW를 사용하는 것이 좋을 것 같습니다. 또는 VIEW 컬럼 내에서 INDEX를 사용해서 성능을 올려야한다면 MVIEW를 사용하는 것이 좋겠습니다. (대신 업데이트에 대한 고민이 필요)

  • 여러 테이블을 통합(JOIN)
  • 일부 행 필터링
  • 그룹 함수로 집계할 때