MySQL에서 자동 증가(AUTO_INCREMENT) 기본 키의 범위를 넓히고 싶다면 BIGINT 데이터 타입을 사용하면 됩니다. 물론 BIGINT도 무제한은 아니지만, 일반적인 용도로는 사실상 무한에 가까운 매우 큰 숫자까지 기본 키를 자동 증가시킬 수 있습니다.
BIGINT 자동 증가 컬럼 생성 문법
기본 문법은 다음과 같습니다.
yourColumnName BIGINT NOT NULL AUTO_INCREMENT;
예제 테이블 생성하기
실제로 어떻게 동작하는지 확인하기 위해 테이블을 하나 만들어 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.
mysql> create table LargeAutoIncrement
-> (
-> Id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY
-> );
Query OK, 0 rows affected (0.78 sec)
이렇게 생성된 테이블의 Id 컬럼은 BIGINT 타입으로 최대 9,223,372,036,854,775,807(약 922경)까지 값을 저장할 수 있습니다. 이 정도 규모면 초당 수백만 건씩 데이터가 쌓여도 수십만 년 동안 고갈되지 않는 수준입니다.
큰 값부터 레코드 삽입하기
이번에는 9223372036854775805부터 레코드를 삽입해 보겠습니다. 첫 번째 값만 직접 지정하고, 나머지는 빈 값으로 삽입합니다. 그러면 AUTO_INCREMENT 속성에 의해 나머지 값들이 자동으로 채워집니다.
mysql> insert into LargeAutoIncrement values(9223372036854775805);
Query OK, 1 row affected (0.19 sec)
mysql> insert into LargeAutoIncrement values();
Query OK, 1 row affected (0.81 sec)
mysql> insert into LargeAutoIncrement values();
Query OK, 1 row affected (0.16 sec)
결과 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from LargeAutoIncrement;
실행 결과는 다음과 같습니다. 마지막에 직접 입력한 값부터 자동으로 1씩 증가하는 것을 확인할 수 있습니다.
+---------------------+
| Id |
+---------------------+
| 9223372036854775805 |
| 9223372036854775806 |
| 9223372036854775807 |
+---------------------+
3 rows in set (0.00 sec)
정리
MySQL의 기본 INT 타입 자동 증가는 약 21억(2,147,483,647)까지만 사용할 수 있어 대규모 서비스에서는 부족할 수 있습니다. 반면 BIGINT NOT NULL AUTO_INCREMENT를 사용하면 약 922경까지 확장할 수 있어, 사실상 무제한에 가까운 기본 키 운영이 가능합니다. 대용량 데이터를 다루는 시스템이라면 처음부터 BIGINT를 선택하는 것이 좋습니다.