syscat.tables의 OVERFLOW 라는 컬럼은 정확히 무엇을 설명하는지요
문서를 보니 아래와 같이 나오던데 도무지 이해가 가지 않아서요
이 컬럼의 값은 원래의 페이지 수와 맞지 않는 행 수를 나타냅니다. 행 데이터는 VARCHAR 컬럼이 초기값보다 더 긴 값을 가지고 갱신될 때 오버플로우될 수 있습니다. 이런 경우에 포인터는 행의 원래 위치에 보존되고 실제 값은 포인터가 가리키는 다른 위치에 저장됩니다.
varchar column update시에 기존 page에 데이터를 저장할 수 없는경우가 발생하면 record 전체를 다른 page로 옮기게 되는것을 말합니다. 이때 index는 처음 저장된 reocord의 주소를 가지고 있기때문데 원하는 데이터를 찾으려면 한단계를 더 거쳐야 하므로 속도가 떨어지게 됩니다.
alter talbe로 pctfree를 알맞게 지정해주면 overflow가 덜 발생합니다.
table reorg를 해주면 overflow는 모두 없어집니다. pctfree를 지정한 테이블은 reorg전에 pctfree를 0으로 지정한 후 reorg를 하는것이 좋습니다. reorg 작업이 끝난 후 다시 pctfree를 지정하게 되면 페이지 사용 효율을 높일수 있습니다. table의 default pctfree는 0이고 index는 10입니다.