[HWM] High Water Mark

    High Water Mark 개념

    HWM(High Water Mark)은 테이블의 라이프 사이클에서 사용된 블록을 표시하기 위해서 사용되는 용어입니다. 모든 DB가 사용하지 않으며, 대표적으로 오라클(Oracle)에서 사용하는 용어입니다.

     

    기본적으로 HWM은 데이터의 가장 오른쪽(가장 최신)에 있는 블록을 뜻합니다. 그럼 이게 무엇이 중요한가? 바로 데이터가 많아지면 많아질수록 HWM의 개념이 중요지기 시작합니다.

     

    High Water Mark

     

    데이터를 Delete

    데이터를 삭제(Delete)하면 그 데이터는 어떻게 될까요? 우리 머리속에서는 그 공간을 쏙 없애버릴 것 같지만 사실은 그 공간을 비운채로 지나가게 되어 있습니다. 마치 현생으로 생각하면 빈집들이 있는 것처럼 구멍이 뽕뽕 뚫려버린 공간이 생기는 것이죠.

     

    문제는 이 놈들도 각각 데이터의 영역을 차지하게 됩니다. 어떤 테이블에 약 천만건의 데이터가 있다고 가정을 해보죠. 데이터가 너무 많아 성능에 문제가 발생하여 불필요한 데이터를 삭제 했다고 쳐보죠. 삭제를 했으니까 성능이 좋아질까요? 정답은 NO입니다.

     

    데이터를 Truncate

    Delete된 데이터가 많을 경우 DB는 성능이 점점 좋아지지 않기 때문에 마치 예전 하드의 조각모음과 같은 작업을 시작해야 하는데 이를 위해서는 데이터를 다른 테이블에 백업을 한 후 테이블을 날려야 됩니다.

     

    이때 사용하는 방법이 바로 Truncate입니다. Truncate는 내부적으로 테이블을 Drop 한후 다시 Create를 하는 로직이 들어있습니다. 그래서 Truncate를 한다면 모든 공간이 깨끗하게 사라지고, HWM은 헤더 블록으로 이동을 하게 됩니다.

    댓글

    Designed by JB FACTORY