MATERIALIZED VIEW는 특정 시점의 데이터를 저장해두고, 이후 필요할 때 이를 참조할 수 있는 구조로, 성능 향상을 위해 자주 사용됩니다.
CREATE MATERIALIZED VIEW employee_summary_mv
BUILD IMMEDIATE
REFRESH FAST ON COMMIT
AS
SELECT department_id,
COUNT(employee_id) AS employee_count,
AVG(salary) AS avg_salary
FROM employees
GROUP BY department_id;
|
--BUILD IMMEDIATE: 뷰를 즉시 생성하고 데이터를 채웁니다.
-- REFRESH FAST ON COMMIT: 변경사항이 커밋될 때마다 빠르게 데이터를 갱신합니다. 이 옵션을 사용하려면 기본 테이블에 Materialized View Log가 필요합니다.
REFRESH FAST ON COMMIT 옵션을 사용하려면, 기본 테이블에 Materialized View Log를 생성해야 합니다.
CREATE MATERIALIZED VIEW LOG ON employees
WITH ROWID, PRIMARY KEY, SEQUENCE (department_id, salary)
INCLUDING NEW VALUES; |
--ROWID, PRIMARY KEY, SEQUENCE를 사용하여 데이터 변경을 보다 정확하고 효율적으로 추적하며, 새로운 값을 포함함으로써 뷰의 최신성을 유지합니다.
--ROWID를 기반으로 변경사항을 추적합니다.
--기본 키를 사용하여 테이블의 행을 추적합니다.
--department_id와 salary 열의 변경을 추적할 때 SEQUENCE 번호를 사용합니다. 이 옵션은 Oracle이 변경된 데이터를 순차적으로 추적하고 갱신할 수 있도록 도와줍니다. 이 열들이 뷰 갱신에 중요한 역할을 할 경우, SEQUENCE 번호를 사용하는 것이 유용합니다.
--INCLUDING NEW VALUES 옵션은 변경된 행의 새로운 값을 로그에 기록합니다. 기본적으로, MATERIALIZED VIEW LOG는 변경된 행의 이전 값만 기록하지만, 이 옵션을 사용하면 갱신 시점에 새로운 값도 기록되어, 뷰 갱신 시 최신 데이터를 반영할 수 있습니다.
USER_MVIEWS : 현재 사용자가 소유한 materialized views에 대한 정보를 제공합니다
USER_MVIEW_REFRESH_TIMES : 사용자가 소유한 materialized view의 갱신 시간에 대한 정보를 제공합니다.
USER_MVIEW_LOGS : 사용자가 소유한 materialized view에 대해 로그 정보를 제공합니다.
SELECT MVIEW_NAME, QUERY_HASH, REFRESH_MODE, BUILD_MODE, LAST_REFRESH_TYPE , LAST_REFRESH_DATE FROM DBA_MVIEWS; |
'DB & SQL' 카테고리의 다른 글
[MS SQL Server ] 실행계획 (0) | 2024.09.24 |
---|---|
SQL Server, PostgreSQL, MariaDB의 연결 관리 방식 (0) | 2024.08.14 |
MS-SQL Server , PostgreSQL, MariaDB Connection (0) | 2024.08.12 |
오라클 사용자를 위한 DB2 가이드 (0) | 2024.02.09 |
MongoDB 완벽 가이드 (0) | 2024.01.30 |