<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
	<id>https://dbstudy.co.kr/w/index.php?action=history&amp;feed=atom&amp;title=%ED%8C%8C%ED%8B%B0%EC%85%98_%ED%85%8C%EC%9D%B4%EB%B8%94_%EC%B5%9C%EC%A0%81%ED%99%94_%EB%B0%A9%EB%B2%95</id>
	<title>파티션 테이블 최적화 방법 - 편집 역사</title>
	<link rel="self" type="application/atom+xml" href="https://dbstudy.co.kr/w/index.php?action=history&amp;feed=atom&amp;title=%ED%8C%8C%ED%8B%B0%EC%85%98_%ED%85%8C%EC%9D%B4%EB%B8%94_%EC%B5%9C%EC%A0%81%ED%99%94_%EB%B0%A9%EB%B2%95"/>
	<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%ED%8C%8C%ED%8B%B0%EC%85%98_%ED%85%8C%EC%9D%B4%EB%B8%94_%EC%B5%9C%EC%A0%81%ED%99%94_%EB%B0%A9%EB%B2%95&amp;action=history"/>
	<updated>2026-05-08T15:32:40Z</updated>
	<subtitle>이 문서의 편집 역사</subtitle>
	<generator>MediaWiki 1.39.10</generator>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%ED%8C%8C%ED%8B%B0%EC%85%98_%ED%85%8C%EC%9D%B4%EB%B8%94_%EC%B5%9C%EC%A0%81%ED%99%94_%EB%B0%A9%EB%B2%95&amp;diff=55&amp;oldid=prev</id>
		<title>Oracle: 새 문서: Oracle에서 파티셔닝 테이블은 대용량 데이터를 효율적으로 관리하고 성능을 향상시키며 유지 관리를 용이하게 만드는 강력한 전략입니다. 아래는 Oracle 파티셔닝 테이블의 모범 사례입니다:  1. 데이터와 작업 부하 이해하기  	•	데이터 분포, 쿼리 패턴, 데이터 접근 빈도를 분석하세요. 	•	파티셔닝이 적합한 경우: 	•	범위, 리스트, 해시 키로 나누어야 하는 대용...</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%ED%8C%8C%ED%8B%B0%EC%85%98_%ED%85%8C%EC%9D%B4%EB%B8%94_%EC%B5%9C%EC%A0%81%ED%99%94_%EB%B0%A9%EB%B2%95&amp;diff=55&amp;oldid=prev"/>
		<updated>2024-11-23T01:08:29Z</updated>

		<summary type="html">&lt;p&gt;새 문서: Oracle에서 파티셔닝 테이블은 대용량 데이터를 효율적으로 관리하고 성능을 향상시키며 유지 관리를 용이하게 만드는 강력한 전략입니다. 아래는 Oracle 파티셔닝 테이블의 모범 사례입니다:  1. 데이터와 작업 부하 이해하기  	•	데이터 분포, 쿼리 패턴, 데이터 접근 빈도를 분석하세요. 	•	파티셔닝이 적합한 경우: 	•	범위, 리스트, 해시 키로 나누어야 하는 대용...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;새 문서&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Oracle에서 파티셔닝 테이블은 대용량 데이터를 효율적으로 관리하고 성능을 향상시키며 유지 관리를 용이하게 만드는 강력한 전략입니다. 아래는 Oracle 파티셔닝 테이블의 모범 사례입니다:&lt;br /&gt;
&lt;br /&gt;
1. 데이터와 작업 부하 이해하기&lt;br /&gt;
&lt;br /&gt;
	•	데이터 분포, 쿼리 패턴, 데이터 접근 빈도를 분석하세요.&lt;br /&gt;
	•	파티셔닝이 적합한 경우:&lt;br /&gt;
	•	범위, 리스트, 해시 키로 나누어야 하는 대용량 테이블.&lt;br /&gt;
	•	시간 기반 데이터 또는 논리적 그룹화가 필요한 데이터.&lt;br /&gt;
	•	데이터 아카이빙 또는 삭제를 빠르게 수행해야 하는 경우.&lt;br /&gt;
&lt;br /&gt;
2. 적절한 파티셔닝 전략 선택&lt;br /&gt;
&lt;br /&gt;
2.1 범위 파티셔닝 (Range Partitioning)&lt;br /&gt;
&lt;br /&gt;
	•	순차적 데이터 또는 시간 기반 데이터에 가장 적합.&lt;br /&gt;
	•	특정 열의 값 범위를 기준으로 데이터를 나눕니다(예: 날짜, 숫자 범위).&lt;br /&gt;
	•	로그, 거래 기록, 히스토리 데이터 등에 적합.&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE sales (&lt;br /&gt;
    sale_id    NUMBER,&lt;br /&gt;
    sale_date  DATE,&lt;br /&gt;
    amount     NUMBER&lt;br /&gt;
)&lt;br /&gt;
PARTITION BY RANGE (sale_date) (&lt;br /&gt;
    PARTITION p_2023_q1 VALUES LESS THAN (TO_DATE(&amp;#039;2023-04-01&amp;#039;, &amp;#039;YYYY-MM-DD&amp;#039;)),&lt;br /&gt;
    PARTITION p_2023_q2 VALUES LESS THAN (TO_DATE(&amp;#039;2023-07-01&amp;#039;, &amp;#039;YYYY-MM-DD&amp;#039;)),&lt;br /&gt;
    PARTITION p_2023_q3 VALUES LESS THAN (TO_DATE(&amp;#039;2023-10-01&amp;#039;, &amp;#039;YYYY-MM-DD&amp;#039;)),&lt;br /&gt;
    PARTITION p_max VALUES LESS THAN (MAXVALUE)&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
2.2 리스트 파티셔닝 (List Partitioning)&lt;br /&gt;
&lt;br /&gt;
	•	특정 이산 값(예: 지역, 카테고리)으로 그룹화된 데이터에 적합.&lt;br /&gt;
	•	리스트를 기준으로 특정 파티션을 대상으로 쿼리할 수 있음.&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE orders (&lt;br /&gt;
    order_id    NUMBER,&lt;br /&gt;
    region      VARCHAR2(10),&lt;br /&gt;
    order_date  DATE&lt;br /&gt;
)&lt;br /&gt;
PARTITION BY LIST (region) (&lt;br /&gt;
    PARTITION p_us VALUES (&amp;#039;US&amp;#039;),&lt;br /&gt;
    PARTITION p_europe VALUES (&amp;#039;EUROPE&amp;#039;),&lt;br /&gt;
    PARTITION p_asia VALUES (&amp;#039;ASIA&amp;#039;)&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
2.3 해시 파티셔닝 (Hash Partitioning)&lt;br /&gt;
&lt;br /&gt;
	•	자연스러운 범위나 리스트로 그룹화할 수 없는 데이터를 고르게 분배하기에 적합.&lt;br /&gt;
	•	핫스팟을 방지하고 부하를 균등하게 분산.&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE employees (&lt;br /&gt;
    emp_id    NUMBER,&lt;br /&gt;
    dept_id   NUMBER,&lt;br /&gt;
    emp_name  VARCHAR2(100)&lt;br /&gt;
)&lt;br /&gt;
PARTITION BY HASH (dept_id) PARTITIONS 4;&lt;br /&gt;
&lt;br /&gt;
2.4 복합 파티셔닝 (Composite Partitioning)&lt;br /&gt;
&lt;br /&gt;
	•	두 가지 파티셔닝 전략을 결합(예: 범위 + 해시, 범위 + 리스트).&lt;br /&gt;
	•	복잡한 시나리오에 적합(예: 시간 기반 범위 파티셔닝 + 부하 분산을 위한 해시).&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE sales (&lt;br /&gt;
    sale_id    NUMBER,&lt;br /&gt;
    sale_date  DATE,&lt;br /&gt;
    region     VARCHAR2(10)&lt;br /&gt;
)&lt;br /&gt;
PARTITION BY RANGE (sale_date)&lt;br /&gt;
SUBPARTITION BY HASH (region) SUBPARTITIONS 4 (&lt;br /&gt;
    PARTITION p_2023_q1 VALUES LESS THAN (TO_DATE(&amp;#039;2023-04-01&amp;#039;, &amp;#039;YYYY-MM-DD&amp;#039;)),&lt;br /&gt;
    PARTITION p_2023_q2 VALUES LESS THAN (TO_DATE(&amp;#039;2023-07-01&amp;#039;, &amp;#039;YYYY-MM-DD&amp;#039;))&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
3. 쿼리 작업 부하에 맞게 파티셔닝 정렬&lt;br /&gt;
&lt;br /&gt;
	•	파티션을 자주 사용하는 쿼리 조건(예: 날짜, 지역)에 맞게 설계하세요.&lt;br /&gt;
	•	불필요한 파티션 스캔을 방지하도록 파티셔닝 전략을 선택하세요.&lt;br /&gt;
&lt;br /&gt;
4. 인덱스 파티셔닝&lt;br /&gt;
&lt;br /&gt;
	•	로컬 인덱스(Local Index): 파티션당 하나의 인덱스. 파티션 관리가 쉬우며 파티션 프루닝에 유리.&lt;br /&gt;
	•	글로벌 인덱스(Global Index): 모든 파티션에 걸친 단일 인덱스. 파티션 간 쿼리에 유용하지만 유지보수가 복잡.&lt;br /&gt;
&lt;br /&gt;
-- 로컬 인덱스&lt;br /&gt;
CREATE INDEX idx_sales_date ON sales(sale_date) LOCAL;&lt;br /&gt;
&lt;br /&gt;
-- 글로벌 인덱스&lt;br /&gt;
CREATE INDEX idx_sales_amount ON sales(amount) GLOBAL;&lt;br /&gt;
&lt;br /&gt;
5. 파티션 프루닝(Partition Pruning) 사용&lt;br /&gt;
&lt;br /&gt;
	•	쿼리에서 관련 파티션만 스캔하도록 설계하여 파티션 프루닝을 최대한 활용하세요.&lt;br /&gt;
	•	쿼리 조건이 파티션 키와 일치하도록 설계.&lt;br /&gt;
&lt;br /&gt;
6. 자동 파티셔닝 관리&lt;br /&gt;
&lt;br /&gt;
	•	Interval Partitioning을 사용하여 새로운 데이터가 추가될 때 자동으로 파티션을 생성하세요. 시간 기반 데이터에 적합.&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE logs (&lt;br /&gt;
    log_id    NUMBER,&lt;br /&gt;
    log_date  DATE,&lt;br /&gt;
    message   VARCHAR2(4000)&lt;br /&gt;
)&lt;br /&gt;
PARTITION BY RANGE (log_date) INTERVAL (NUMTOYMINTERVAL(1, &amp;#039;MONTH&amp;#039;)) (&lt;br /&gt;
    PARTITION p_start VALUES LESS THAN (TO_DATE(&amp;#039;2024-01-01&amp;#039;, &amp;#039;YYYY-MM-DD&amp;#039;))&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
7. 과도한 파티션 생성 방지&lt;br /&gt;
&lt;br /&gt;
	•	지나치게 세분화된 파티션은 메타데이터 오버헤드를 증가시킬 수 있습니다.&lt;br /&gt;
	•	워크로드와 쿼리에 맞게 적절한 파티션 수를 유지하세요.&lt;br /&gt;
&lt;br /&gt;
8. 파티션 유지보수&lt;br /&gt;
&lt;br /&gt;
	•	파티션 분할(Split): 큰 파티션을 더 작은 파티션으로 나눕니다.&lt;br /&gt;
	•	파티션 병합(Merge): 더 이상 분리할 필요가 없는 인접 파티션을 결합합니다.&lt;br /&gt;
	•	파티션 삭제(Drop): 아카이빙 또는 데이터 삭제가 간편해짐.&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE sales DROP PARTITION p_2023_q1;&lt;br /&gt;
&lt;br /&gt;
9. 파티션 성능 모니터링&lt;br /&gt;
&lt;br /&gt;
	•	SQL 모니터링, AWR 리포트 등을 활용해 파티션이 성능을 개선하고 있는지 확인하세요.&lt;br /&gt;
	•	DBA_TAB_PARTITIONS 및 DBA_TAB_SUBPARTITIONS를 통해 파티션 상태를 점검하세요.&lt;br /&gt;
&lt;br /&gt;
10. 파티션 키 설계 원칙&lt;br /&gt;
&lt;br /&gt;
	•	데이터가 고르게 분배되고 불균형 파티션이 발생하지 않도록 파티션 키를 선택하세요.&lt;br /&gt;
	•	쿼리 패턴을 지원하고 자주 업데이트되지 않는 열을 선택하세요.&lt;br /&gt;
&lt;br /&gt;
11. 파티션 작업의 영향 최소화&lt;br /&gt;
&lt;br /&gt;
	•	파티션 작업(분할, 병합, 삭제)은 특히 글로벌 인덱스와 함께 사용 시 성능에 영향을 줄 수 있습니다.&lt;br /&gt;
	•	온라인 파티션 유지보수를 활용하여 다운타임을 최소화하세요:&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE sales SPLIT PARTITION p_max AT (TO_DATE(&amp;#039;2024-01-01&amp;#039;, &amp;#039;YYYY-MM-DD&amp;#039;))&lt;br /&gt;
INTO (PARTITION p_2024_q1, PARTITION p_max) ONLINE;&lt;br /&gt;
&lt;br /&gt;
12. 파티션 통계&lt;br /&gt;
&lt;br /&gt;
	•	파티션 수준 통계를 수집하여 옵티마이저가 정확한 쿼리 계획을 생성하도록 보장합니다.&lt;br /&gt;
&lt;br /&gt;
BEGIN&lt;br /&gt;
    DBMS_STATS.GATHER_TABLE_STATS(&amp;#039;schema_name&amp;#039;, &amp;#039;table_name&amp;#039;, PARTNAME =&amp;gt; &amp;#039;partition_name&amp;#039;);&lt;br /&gt;
END;&lt;br /&gt;
&lt;br /&gt;
13. 읽기 및 쓰기 작업 고려&lt;br /&gt;
&lt;br /&gt;
	•	읽기 작업이 많은 경우 범위 또는 리스트 파티셔닝으로 선택도를 높이세요.&lt;br /&gt;
	•	쓰기 작업이 많은 경우 해시 파티셔닝으로 부하를 균등하게 분산하세요.&lt;br /&gt;
&lt;br /&gt;
14. 파티션을 활용한 데이터 아카이빙&lt;br /&gt;
&lt;br /&gt;
	•	파티션을 활용해 데이터 아카이빙과 삭제를 간소화하세요:&lt;br /&gt;
	•	행을 삭제하는 대신 오래된 파티션을 삭제.&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE logs DROP PARTITION p_2023;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	•	파티션을 내보내 백업 또는 외부 아카이빙을 수행.&lt;br /&gt;
&lt;br /&gt;
위의 모범 사례를 따르면, 데이터 모델, 쿼리 패턴, 성능 요구사항에 맞는 파티션 테이블을 설계할 수 있습니다. 파티셔닝은 데이터 관리와 확장성을 극대화하는 데 필수적인 도구입니다.&lt;/div&gt;</summary>
		<author><name>Oracle</name></author>
	</entry>
</feed>