Enhanced Partition Pruning Capabilities

EXEM Knowledge Base

Jump to: navigation, 찾기

[편집] Partition Pruning

Partition Pruning은 DW의 성능을 개선하기 위한 아주 원천적인 기능이다. 이것은 옵티마이저가 partition access list를 만들때 SQL의 where과 from절에서 불필요한 파티션을 제거하기 위해 사용하는 방법이다. 즉 plan을 만들때 말 그대로 partition의 수많은 partition중 실제로 사용해야만 하는 partition을 남겨놓고 불필요한 것들을 가지치기하는 것이다. 이 기능으로 oracle은 partition의 사용할 때 IO나 수행 시간을 줄여주어 resource의 활용면에서나 수행면에서 성능을 좋게해 준다.

[편집] Enhanced Partition Pruning

지금까지 Oracle은 partition pruning에 subquery pruning을 사용해왔다고 한다. 이것은 각각의 partition을 subquery로 만들어 불필요한 것을 null값으로 나타나게 하는 방식으로 이해하고 있다. 그러나 oracle 11g에서는 이 subquery pruning 대신 bloom filter를 사용한다고 한다. subquery pruning을 사용하게 되면 cost-based decision을 하게 되어 internal (recursive) resource의 소비가 불가피한 반면 bloom filtring에 기초한 pruning은 부가적인 리소스의 소비가 전혀 없이 활성화가 가능하다. 이는 patition access list를 만들때 아주 가벼운 해쉬함수와 ㅠbit 연산(bit vector)를 가지고 해당 값이 특정 파티션에 있는지 없는지를 계산하여 pruning을 하기 때문에 상당한 성능 개선 효과가 있다고 한다.