데이터 모델 측면에서의 검토 

 - 튜닝 과정에서 조사된 SQL에 group by, union, distinct 같은 연산자가 불필요하게 많이 

   사용되는 패턴을 보인다면 대게 데이터 모델이 잘 정규화되지 않았음을 암시한다. 


사례 1 

 - M:M 관계를 갖도록 테이블을 설계한 경우가 대표적이다. 

 - 잘못된 데이터 모델링으로 인하여 group by를 사용하지 않아도 되는 경우에도 

   M:M으로 표시되어서 불필요한 group by를 사용하고 있었음  


사례 2

 - PK 외에 관리할 속성이 아예 없거나 소수일 때, 테이블 개수를 줄인다는 이유로 자식 테이블에

   통합시키는 경우를 종종 볼 수 있다. 


사례 3 

 - 순번 컬럼을 증가시키면서 순서대로 데이터를 적재하는 점이력 모델은 선분이력에 비해 

   DML 부하를 최소화할 수 있는 장점이 있지만, 대량 집합의 이력을 조회할 때 소트를 많이 

   발생시키는 단점이 있다.특히, 마지막 이력만 조회하는 업무가 대부분 일 때 비효율이 크다. 

 - 비효율이 있다고 해서 모델이 잘못됐다고 말할 수는 없지만 어떤 데이터 모델을 선택하느냐에 

   따라 성능에 차이가 생길 수 있음을 잘 보여준다. 

   * 나는 아직도 점 이력모델이 선분이력에 비해 DML 부하를 최소할 수 있다는 것이 

      어떠한 케이스에서 설명 될 수 있는지 모르겠다. 

+ Recent posts