반응형
mysql8에서 sequence table이 아래와 같음
CREATE TABLE `regt_seq` (
`seq` bigint(20) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`seq`)
) ENGINE=InnoDB AUTO_INCREMENT=50151372 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
해당 auto increment가 메타 데이터에 있을 것 같아 조회해봄
SELECT AUTO_INCREMENT
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'regt_seq';
// 50151359
SHOW TABLE STATUS LIKE 'regt_seq';
// 50151359
auto increment 값이 테이블은 계속 늘어나는데 메타 데이터 쪽은 변함이 없음
찾아보니 통계 업데이트 주기가 있다고 함..(근데 이건 통계가 아니잖슴??)
SHOW VARIABLES LIKE 'information_schema_stats_expiry';
// 86400 = 24시간
mySQL 8에서 SHOW TABLE STATUS는 Performance Schema의 통계 캐시를 읽음
information_schema_stats_expiry 설정에 따라 갱신 주기가 결정됨
기본값: 86400초 (24시간!) 0으로 설정할 수 있으나 성능 저하 가능성 있음
즉 24시간 뒤에 맞게 되는지 확인해보면 되나...
MySQL 8.0 이상
InnoDB Data Dictionary (영구 저장)
└─ 테이블 메타데이터: AUTO_INCREMENT 값 저장
- 디스크에 영구 저장
- 서버 재시작해도 유지
- SHOW CREATE TABLE로 확인 가능(테이블 ddl에 있는 값)
- MySQL 8.0의 Data Dictionary 직접 조회
- 권한 없음..
SELECT
name,
se_private_data
FROM mysql.tables
WHERE name = 'regt_seq';
MySQL 5.7 이하
메모리 (휘발성)
└─ InnoDB 내부 카운터
- 서버 재시작 시 MAX(id) + 1로 재계산
- 롤백된 값은 재사용 안 됨
728x90
반응형
'개발 > sql' 카테고리의 다른 글
| [mysql] string to uuid (0) | 2025.05.09 |
|---|---|
| 클러스터 인덱스, 논 클러스터 인덱스, 외래키 (0) | 2025.04.11 |
| [mysql] 복합 인덱스와 explain (0) | 2025.02.03 |
| [mysql] order by null (0) | 2024.12.19 |
| [파티셔닝] 하는법, 쓰는법 (0) | 2024.11.25 |