mysql 의 auto_increment 특징 과 주의점들을 알아보자
# AUTO_INCREMENT의 특징, 최대 값
1) 자동 증가: 새로운 레코드가 삽입시 자동으로 고유한 숫자를 생성. 주로 기본 키로 사용, 각 행의 고유성을 보장
2) 초기값 및 증가값 설정 가능: 기본적으로 1부터 시작하며, 각 행이 추가될 때마다 1씩 증가.
3) 데이터 타입 제한: 주로 INT 타입으로 설정, 데이터 타입에 따라 최대값이 제한됩니다. 예를 들어, INT의 최대값은 약 21억입니다
4) 연속성: 삭제된 행의 ID는 재사용되지 않고 건너뛴다.
* mysql 에서 innodb 를 엔진으로 사용할때 auto_increment 컬럼을 pk 사용하는 것이 적절한가?
# 타입 별 최대 값
데이터 타입 | SIGNED 범위 | UNSIGNED 범위 |
TINYINT | -128 to 127 | 0 to 255 |
SMALLINT | -32,768 to 32,767 | 0 to 65,535 |
MEDIUMINT | -8,388,608 to 8,388,607 | 0 to 16,777,215 |
INT | -2,147,483,648 to 2,147,483,647 | 0 to 4,294,967,295 (42억) |
BIGINT | -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 | 0 to 18,446,744,073,709,551,615 (1800경, 18.44 엑사(E)) |
# 현재 값 확인하기
방법 1) SHOW TABLE STATUS
SHOW TABLE STATUS WHERE Name = '테이블명';
테이블의 상태 정보를 반환하며, 다음 AUTO_INCREMENT 값을 포함하여 테이블의 엔진, 행 수, 평균 행 길이 다양한 메타데이터를 제공
방법 2) INFORMATION_SCHEMA.TABLES
SELECT AUTO_INCREMENT
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = '데이터베이스명'
AND TABLE_NAME = '테이블명'
;
INFORMATION_SCHEMA.TABLES 뷰를 통해 특정 데이터베이스와 테이블에 대한 정보를 쿼리
방법 3) SELECT MAX()
SELECT MAX(컬럼명) + 1 AS next_auto_increment FROM 테이블명;
현재 존재하는 최대 값을 기반으로 다음 AUTO_INCREMENT 값을 추정
데이터가 삭제되거나 수동으로 삽입된 경우 정확하지 않을 수 있다.
* 이전 버전에서는 auto_increment 값을 메모리에서 관리했지만(서버 재시작시 초기화), 8.0부터는 디스크에 저장하여 영속성을 보장한다.
'생계 > MySQL' 카테고리의 다른 글
mysql 파티션 테이블의 유의점 들 (0) | 2024.11.19 |
---|---|
MYSQL 파라미터 innodb_read_only 와 read_only 차이 (0) | 2024.11.19 |
mysql 테이블 복사하는 방법 (0) | 2024.11.13 |
mysql 테이블명 대소문자 lower_case_table_names (0) | 2024.11.11 |
mysql dump 및 load 수행하는 여러가지 방법 (0) | 2024.11.10 |