ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MySQL AUTO_INCREMENT 컬럼 초기화
    Knowledge 2019. 11. 5. 16:48

    MySQL을 이용해서 개발 중에 Primary Key, AUTO_INCREMENT로 설정한 한 컬럼이 있었다.

    그리고 이 테이블은 레코드가 추가되고 삭제되기를 반복하는 테이블이었다.

    그런데 시나리오가 추가되며 이 컬럼의 값이 처음 예상보다 빠른 속도로 증가하는 문제가 발생했다.

    실제 레코드는 4000개쯤 되는데, 신규로 추가된 레코드의 컬럼값은 10만단위였다.

     

    처음 생각한 해결책은 INT로 되어있는 컬럼 타입을 unsigned로 변환하는 것이었다.

    이 경우 보수적으로 계산해도 충분한 값이 나와서 사실상 사용에 문제가 없었다.

     

    그런데, 사실 이 id값이 내부적으로만 사용되고 외부에는 참조가 되지 않는 값이기에...

    기존 값들을 1부터 오름차순으로 반영하고 추가되는 값은 다시 그 이후로 증가하도록 리셋하는 방법을 생각하게 되었다.

    이 방법을 주기적으로 사용할 경우, 딱 저장된 레코드의 숫자까지 컬럼값이 증가할 것이다.

     

    ALTER TABLE <table_name> AUTO_INCREMENT=1; 
    SET @COUNT = 0;
    UPDATE <table_name> SET <column_name> = @COUNT:=@COUNT+1;

     

    첫 라인을 통해 테이블의 AUTO_INCREMENT 시작값을 조정한다. 만약 빈 테이블이라면 이것만으로 충분하다.

    두 번째와 세 번째 라인을 통해 기존 테이블의 컬럼값을 1부터 오름차순으로 변경한다.

     

    Fin.

    반응형

    댓글

Calvin's Memo