본문 바로가기
MariaDB

MariaDB 계산된필드(Computed Column)이란?

by 향테크 2025. 1. 24.

MariaDB 계산된 필드란?

 

데이터베이스를 설계하거나 데이터를 효율적으로 관리할 때, 반복적인 계산을 최소화하고 데이터를 직관적으로 표현할 수 있는 방법이 필요합니다.

MariaDB의 계산된 필드(computed column)는 이런 요구를 충족시키는 기능 중 하나입니다.

오늘은 계산된 필드의 개념, 사용법, 장단점, 그리고 활용 사례를 다루겠습니다.

 

계산된 필드란?

계산된 필드는 테이블의 다른 열(Column) 값을 기반으로 계산된 결과를 저장하거나 조회되는 열입니다.

계산된 필드는 두 가지 형태로 나뉩니다.

 

가상 컬럼(Virtual Column)

  • 계산된 값을 저장하지 않고 필요할 때 동적으로 계산합니다.
  • 가상 컬럼은 데이터가 물리적으로 저장되지 않고 동적으로 계산되기 때문에, 직접적으로 인덱스를 생성할 수 없습니다.
  • 계산이 자주 변경되거나 저장 공간을 절약해야 하는 경우에 주로 선택됩니다.

저장 컬럼(Persistent Column)

  • 계산 결과를 테이블에 저장하여 반복적인 계산을 방지합니다.
  • 저장 컬럼은 계산 결과가 물리적으로 테이블에 저장되므로, 일반적인 컬럼처럼 인덱스를 생성할 수 있습니다. 따라서 저장 컬럼은 인덱스를 통해 검색 성능을 최적화하는 데 유용합니다.
  • 데이터를 자주 조회하거나 인덱스가 필요한 경우에 주로 선택됩니다.

 

계산된 필드의 장점

  • 데이터 일관성 유지 : 계산 규칙이 테이블 스키마에 정의되어 있어, 애플리케이션 코드에서 계산 로직을 중복적으로 구현할 필요가 없습니다.
  • 효율성 향상 : 저장 컬럼을 활용하면, 계산된 데이터를 다시 계산할 필요 없이 바로 조회할 수 있습니다.
  • 가독성 향상 : 데이터베이스 설계를 더 직관적으로 만들어 테이블을 사용하는 개발자들이 쉽게 이해할 수 있습니다.

 

계산된 필드 생성 방법

MariaDB에서 계산된 필드를 생성하려면 CREATE TABLE이나 ALTER TABLE 문을 사용합니다.

 

1. 가상 컬럼 생성하기

가상 컬럼은 AS 키워드를 사용하여 정의됩니다.

CREATE TABLE orders (
    ID          INT AUTO_INCREMENT PRIMARY KEY,
    PRICE       DECIMAL(10, 2),
    QUANTITY    INT,
    TOTAL       DECIMAL(10, 2) AS (PRICE * QUANTITY) VIRTUAL
);

 

위의 예제에서 TOTAL 컬럼은 PRICE와 QUANTITY 값을 곱한 결과를 계산합니다. 

이 값은 실제로 저장되지 않고, 조회 시에만 계산됩니다.

 

2. 저장 컬럼 생성하기

저장 컬럼은 STORED 키워드를 사용하여 생성합니다.

CREATE TABLE orders2 (
    ID          INT AUTO_INCREMENT PRIMARY KEY,
    PRICE       DECIMAL(10, 2),
    QUANTITY    INT,
    TOTAL       DECIMAL(10, 2) AS (PRICE * QUANTITY) STORED 
);

 

이 경우 TOTAL 값은 테이블에 물리적으로 저장되며, 삽입(INSERT) 또는 갱신(UPDATE) 시 자동으로 계산됩니다.

 

계산된 필드 관리

기존 테이블에 계산된 필드를 추가하거나 수정하려면 ALTER TABLE을 사용합니다.

 

계산된 필드 추가하기

ALTER TABLE orders
ADD COLUMN TOTAL DECIMAL(10,2) AS (PRICE * QUANTITY) STORED;

 

계산된 필드 삭제하기

ALTER TABLE orders DROP COLUMN TOTAL;

 

 

계산된 필드의 제약사항

  • 지원되지 않은 함수 : 계산된 필드에서는 일부 함수나 표현식이 제한될 수 있습니다.
  • 저장 컬럼 업데이트 제한 : 저장 컬럼은 직접 업데이트할 수 없으며, 이를 생성하는 기본 컬럼이 변경될 때만 값이 갱신됩니다.
  • 성능 문제 : 가상 컬럼은 대규모 데이터를 반복적으로 조회할 때 성능 이슈가 발생할 수 있습니다.

 

활용 사례

  • 전자상거래 : 제품 가격과 수량을 기반으로 주문 총액을 계산
  • 로그 분석 : 접속 시간 차이를 계산하여 사용자 세션의 지속 시간 추적
  • 금융 시스템 : 거래 수수료나 세금 계산

 

결론

MariaDB의 계산된 필드는 데이터베이스의 효율성과 일관성을 높이는 데 매우 유용한 기능입니다.

가상 컬럼과 저장 컬럼을 적절히 활용하면 반복적인 계산 작업을 줄이고, 데이터베이스 설계를 더 깔끔하게 유지할 수 있습니다.

 

MariaDB를 사용하면서 계산된 필드를 적극적으로 활용해시기 바랍니다.

반응형