저번 포스팅에서 DBMS Partitioning이 뭔지 파악하고 어떻게 생성하는지 살펴봤다. DBMS Partitioning은 내부 동작 원리상 오버헤드를 가져올 수밖에 없다. 그럼 언제부터 파티셔닝을 사용했을 때 비로소 성능 향상이 이루어지는지 알아보자.
그래서 db<>fiddle
을 사용해서 실제로 실험해 봤다.
코드는 여기서 실행할 수 있다. 로우 수를 조정하려면 1번 섹션 8번 줄의 connect by level < N
의 N 상수를 바꾸면 된다.
row수 | Partitioning 사용하지 않았을 때 | Partitioning을 사용했을 때 | 효율(절대값) | 효율(비율) |
---|---|---|---|---|
10000 | 0.004287초 | 0.006359초 | -0.002081초 | -48% |
100000 | 0.007668초 | 0.008167초 | -0.000499초 | -6% |
1000000 | 0.007812초 | 0.006601초 | 0.001211초 | 18% |
DB<>fiddle
은 웹에서 동작하는 시뮬레이터이고 서버의 상황에 따라 결과값이 달라질 수 있으며, 최대로 실험해 볼 수 있는 1000000row도 너무 작기 때문에 정확한 실험을 하고 싶으면 실제 Oracle에서 돌려봐야 한다.
하지만 row수가 많을수록 파티셔닝이 효과를 가져온다는 직관적인 결과를 얻을 수 있었다. 그럼에도, 실제 Oracle DB에서는 Partioning overhead가 더 클지도 모르고, 이렇게 이상적인 상황을 가정했지만 더 복잡한 상황이 있을지도 모른다.
그러니 각자에 상황에 맞게 DB 파티셔닝을 설계하고 실험을 통해 더 나은 모델을 만들면 된다.