Skip to content

Latest commit

 

History

History
45 lines (32 loc) · 3.25 KB

view.md

File metadata and controls

45 lines (32 loc) · 3.25 KB

ViewEntity

view

ViewEntity는 데이터베이스의 **가상 테이블(View)**을 정의하는 데 사용됩니다.
이 가상 테이블은 데이터베이스 내에서 실시간으로 쿼리 결과를 제공하며, 복잡한 쿼리 로직을 미리 정의된 형태로 저장하고 필요할 때마다 간단한 쿼리로 데이터를 조회할 수 있게 해줍니다.
View는 특히 PostgreSQL과 같은 일부 데이터베이스 시스템에서만 지원합니다.(mysql은 안되는걸로 암)

주요 특징

  1. 가상 테이블: View는 실제로 물리적인 데이터가 저장되지 않으며, 실시간으로 쿼리 결과를 제공하는 가상의 테이블입니다.
  2. 미리 계산된 데이터 제공: 복잡한 계산이나 여러 테이블을 조인해야 하는 데이터를 미리 계산해 둠으로써, 반복적인 조회 시 성능을 최적화할 수 있습니다.
  3. 복잡한 쿼리의 간소화: 여러 테이블을 조인하거나 복잡한 조건을 가진 쿼리를 미리 View로 정의해 두면, 실제로 사용할 때는 간단한 쿼리로 원하는 결과를 얻을 수 있습니다.
  4. expression: View를 정의할 때 필요한 필수 파라미터로, SQL 쿼리문이나 queryBuilder 체이닝 메서드를 사용할 수 있습니다.

장단점

장점:
성능 향상: 구조가 복잡하고 여러 곳에서 호출되는 데이터를 미리 View로 만들어 두면 조회 성능이 크게 향상됩니다.
재사용성: 복잡한 쿼리를 여러 곳에서 재사용할 수 있어, 코드의 간결성과 유지보수성이 향상됩니다.

단점:
CUD 작업 시 성능 저하: View는 조회 성능을 최적화하지만, Create, Update, Delete 작업(CUD)에서는 성능이 떨어질 수 있습니다.
특히, 인덱스가 없는 경우 성능 저하가 더 두드러질 수 있습니다.


Materialized View

Materialized View는 실제 데이터를 물리적으로 저장하는 특수한 형태의 View입니다.
일반적인 View와 달리, Materialized View는 데이터를 저장하고 이를 필요할 때마다 갱신할 수 있어 성능을 크게 향상시킬 수 있습니다.
그러나 자동으로 갱신되지 않기 때문에, 데이터가 변경될 때마다 수동으로 갱신해야 합니다.

주요 특징

  1. 물리적 저장: Materialized View는 쿼리 결과를 물리적으로 저장하여, 반복적인 조회 시 더 빠른 성능을 제공합니다.
  2. 수동 갱신: 일반적인 View와 달리, Materialized View는 자동으로 갱신되지 않으며, 데이터가 변경될 때마다 REFRESH MATERIALIZED VIEW 명령어를 사용해 수동으로 갱신해야 합니다.
  3. PostgreSQL 지원: Materialized View는 PostgreSQL에서 지원되며, 다른 데이터베이스 시스템에서는 다르게 구현될 수 있습니다.
  4. 갱신 및 동시성 REFRESH: Materialized View를 갱신하는 명령어로, 저장된 데이터를 최신 상태로 유지할 수 있습니다.
    CONCURRENTLY: 갱신 작업이 동시 실행될 수 있도록 하는 옵션으로, 기존 데이터를 유지하면서 갱신할 수 있습니다. 이 옵션을 사용하면 갱신 도중에도 다른 트랜잭션이 View에 접근할 수 있게 됩니다.
REFRESH MATERIALIZED VIEW CONCURRENTLY user_queue_view;