2016. 1. 14. 14:18 IT/MySQL

hwm와 truncate.

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

high water mark라는 것은 우유를 예를 들어 설명해 보자면... 

우리가 컵에다가 우유를 따른 후 빨대로 우유를 다 먹더라도 처음에 우유가 차 있던 표시선이 나타나게 되죠? 

그 표시선이 high water mark 입니다. 


즉, 어떤 테이블에 데이터를 입력 한 후 delete로 데이터를 모두 지우게 되더라도 

테이블의 사이즈는 줄어들지 않고 지우기 전의 사이즈를 그대로 유지하게 됩니다. 

이럴때 테이블 풀스캔을 하게 되면 0건을 읽어 오지만 테이블 전체를 읽기 때문에 시간이 오래 걸립니다. 

이 high water mark를 없애기 위해서는 몇가지 방법이 있는데 그중에 하나가 truncate 입니다. delete로 전체 데이터를 지우게 되면 이 high water mark가 그대로 유지가 되어 테이블의 용량은 변하지 않지만 truncate로 테이블 데이터를 지우게 되면 high water mark는 테이블의 초기상태로 환원되게 됩니다.


delete시 남아 있는 용량의 경우 나중에 재사용이 되긴 합니다. 단 commit한 데이터에 한해..


참고로 truncate가 delete보다 속도가 빠릅니다.


truncate 는 identity컬럼을 초기화 시킵니다. 이 컬럼의 카운트를 보존해야 한다면 delete를 사용해서 삭제하길 바랍니다.


또, truncate는 로그를 사용하지 않는 명령어. 로그를 남기지 않으므로 아래와 같은 경우에는 사용할 수 없습니다.

- 다른테이블에서 참조되는 경우

- 트리거가 설정되어 있는 경우

- 복제작업(Replication)에 참여하고 있는 경우

- Index View에 참여하고 있는 테이블

Posted by 당양부부34

블로그 이미지
주요 토렌트를 블로깅하고 있습니다. 토렌트 순위 등은 다른 사이트를 찾아보세요. 주요 웹툰 순위도 게재했어요 경제를 좋아하는 일산의 행복한 프로그래머입니다.
당양부부34
Yesterday
Today
Total

달력

 « |  » 2024.4
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함