1. 파티션 테이블 생성 방법
파티션 테이블은 대량의 데이터를 효율적으로 관리하기 위해 데이터를 논리적 또는 물리적 기준에 따라 분할하는 방법입니다. 이를 통해 데이터 검색 성능을 향상시킬 수 있습니다.
Oracle 데이터베이스에서 파티션 테이블을 생성하려면 다음의 단계를 따릅니다:
CREATE TABLE 문을 사용하여 새로운 테이블을 생성합니다.
- 예를 들어, 다음과 같은 구문을 사용하여 'employees'라는 테이블을 생성합니다:
CREATE TABLE employees ( employee_id NUMBER(10), first_name VARCHAR2(50), last_name VARCHAR2(50), hire_date DATE );
- 예를 들어, 다음과 같은 구문을 사용하여 'employees'라는 테이블을 생성합니다:
생성한 테이블에 파티션을 적용하려면 PARTITION BY 절을 사용합니다.
- PARTITION BY 절의 기준으로는 일반적으로 날짜, 범위, 목록 등을 선택합니다.
- 예를 들어, hire_date 열을 기준으로 월별 파티션을 생성하려면 다음과 같이 PARTITION BY RANGE 구문을 사용합니다:
CREATE TABLE employees ( employee_id NUMBER(10), first_name VARCHAR2(50), last_name VARCHAR2(50), hire_date DATE ) PARTITION BY RANGE (hire_date) ( PARTITION p1 VALUES LESS THAN (TO_DATE('2000-01-01', 'YYYY-MM-DD')), PARTITION p2 VALUES LESS THAN (TO_DATE('2001-01-01', 'YYYY-MM-DD')), PARTITION p3 VALUES LESS THAN (TO_DATE('2002-01-01', 'YYYY-MM-DD')), ... );
필요한 경우 각 파티션에 대한 추가 속성을 지정할 수 있습니다. 이는 파티션 테이블의 성능 및 관리를 향상시키는 데 도움이 됩니다.
- 예를 들어, 다음과 같은 구문을 사용하여 특정 파티션에 대한 테이블스페이스 및 인덱스를 지정할 수 있습니다:
CREATE TABLE employees ( employee_id NUMBER(10), first_name VARCHAR2(50), last_name VARCHAR2(50), hire_date DATE ) PARTITION BY RANGE (hire_date) ( PARTITION p1 VALUES LESS THAN (TO_DATE('2000-01-01', 'YYYY-MM-DD')) TABLESPACE ts1, PARTITION p2 VALUES LESS THAN (TO_DATE('2001-01-01', 'YYYY-MM-DD')) TABLESPACE ts2, PARTITION p3 VALUES LESS THAN (TO_DATE('2002-01-01', 'YYYY-MM-DD')) TABLESPACE ts3, ... );
- 예를 들어, 다음과 같은 구문을 사용하여 특정 파티션에 대한 테이블스페이스 및 인덱스를 지정할 수 있습니다:
이렇게 하면 파티션 테이블을 성공적으로 생성할 수 있습니다. 파티션 테이블은 대량의 데이터를 효율적으로 관리하는 데 도움이 되며, 데이터베이스 성능을 향상시키는 데 중요한 역할을 합니다.
2. 파티션 테이블 조회 방법
파티션 테이블을 조회하려면 사용 가능한 시스템 뷰 또는 쿼리를 사용하여 파티션 정보를 확인할 수 있습니다. 여러가지 방법이 있지만 일반적으로 다음의 단계를 따릅니다:
USER_TABLES 시스템 뷰를 사용하여 사용자가 소유한 테이블의 목록을 조회합니다.
SELECT table_name FROM user_tables;
특정 테이블의 파티션 정보를 조회하려면 USER_TAB_PARTITIONS 시스템 뷰를 사용합니다.
- 이 뷰는 테이블의 각 파티션에 대한 정보를 제공합니다.
SELECT partition_name, partition_position, high_value FROM user_tab_partitions WHERE table_name = 'employees';
- 이 뷰는 테이블의 각 파티션에 대한 정보를 제공합니다.
파티션 테이블의 파티션 키에 따라 데이터 검색을 수행할 수도 있습니다.
- 예를 들어, hire_date 열을 기준으로 년도별로 파티셔닝된 employees 테이블에서 2020년에 입사한 직원을 조회하려면 다음과 같이 쿼리를 작성할 수 있습니다:
SELECT * FROM employees PARTITION (p1_2020) WHERE hire_date BETWEEN TO_DATE('2020-01-01', 'YYYY-MM-DD') AND TO_DATE('2020-12-31', 'YYYY-MM-DD');
- 예를 들어, hire_date 열을 기준으로 년도별로 파티셔닝된 employees 테이블에서 2020년에 입사한 직원을 조회하려면 다음과 같이 쿼리를 작성할 수 있습니다:
파티션 테이블을 조회하는 방법은 이렇게 매우 간단합니다. 시스템 뷰나 쿼리를 사용하여 파티션 정보를 확인하고 원하는 데이터를 검색할 수 있습니다. 이는 파티션 테이블을 효율적으로 활용하기 위해 중요한 단계입니다.
3. 파티션 테이블 수정 및 삭제 방법
파티션 테이블을 수정하거나 삭제해야 할 때는 다음의 방법을 사용할 수 있습니다:
3.1. 파티션 테이블 수정 방법
파티션 테이블에 새로운 파티션을 추가하려면 ALTER TABLE 문을 사용합니다.
ALTER TABLE employees ADD PARTITION p4 VALUES LESS THAN (TO_DATE('2003-01-01', 'YYYY-MM-DD'));
이미 존재하는 파티션을 수정하거나 이동해야 하는 경우에는 먼저 해당 파티션을 분할하고, 데이터를 이동시킨 후, 원하는 변경사항을 적용합니다.
파티션 분할:
ALTER TABLE employees SPLIT PARTITION p1 INTO (PARTITION p1_old VALUES LESS THAN (TO_DATE('2000-06-01', 'YYYY-MM-DD')), PARTITION p1_new VALUES LESS THAN (TO_DATE('2001-01-01', 'YYYY-MM-DD')));
데이터 이동:
ALTER TABLE employees MOVE PARTITION p1_old TABLESPACE new_ts;
분할된 파티션을 합치거나 병합할 수도 있습니다:
ALTER TABLE employees MERGE PARTITIONS p1_new, p2 INTO PARTITION p1p2;
테이블의 일부 파티션을 삭제하거나 비활성화해야 하는 경우에는 DROP PARTITION 문을 사용합니다.
ALTER TABLE employees DROP PARTITION p3;
필요한 경우 테이블 내의 파티션을 리네임할 수도 있습니다.
ALTER TABLE employees RENAME PARTITION p1 TO p1_renamed;
3.2. 파티션 테이블 삭제 방법
파티션 테이블 전체를 삭제하려면 DROP TABLE 문을 사용합니다.
DROP TABLE employees;
파티션 테이블의 일부 파티션만 삭제하려면 DROP PARTITION 문을 사용합니다.
ALTER TABLE employees DROP PARTITION p1;
파티션 테이블을 수정하거나 삭제하는 방법은 이렇게 간단합니다. ALTER TABLE 문을 사용하여 파티션을 추가하거나 수정하고, DROP PARTITION 문을 사용하여 파티션을 삭제할 수 있습니다. 이를 통해 파티션 테이블을 유연하게 조정할 수 있습니다.