Knowledge

MySQL AUTO_INCREMENT 컬럼 초기화

calvin.kim 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.

반응형