자동 증가가 mysql에서 생성할 수 있는 가장 큰 ID 번호는 무엇입니까?
하루에 10~20,000 행에 대한 데이터로 빠르게 채워지는 데이터베이스가 있습니다.
및 auto-increment 옵션이 있는 ID의 제한은 얼마입니까?ID가 INTEGER로 작성되면 부호 없는 값에 대해 2,147,483,647의 최대값을 할 수 있습니까?
하지만 자동 증가가 이 값을 초과하면 어떻게 될까요?다 무너져?그렇다면 해결책은 무엇일까요?
많은 사람들이 큰 데이터베이스를 가지고 있을 거라고 확신하고, 나는 그들의 이야기를 듣고 싶다.
감사해요.
너무 빨리 범위를 벗어나는 것이 걱정된다면 PK를 UNSIGNED BIGINT로 설정하겠습니다.그러면 최대값은 18446744073709551615로 충분합니다.
| Min. (inclusive) | Max. (inclusive)
-----------------------------------------------------------------------------
INT Signed (+|-) | -2,147,483,648 | 2,147,483,647
-----------------------------------------------------------------------------
INT Unsigned (+) | 0 | 4,294,967,295
-----------------------------------------------------------------------------
BIGINT Signed (+|-) | -9,223,372,036,854,775,807 | 9,223,372,036,854,775,806
-----------------------------------------------------------------------------
BIGINT Unsigned (+) | 0 | 18,446,744,073,709,551,615
MySQL 참조
컬럼 ID가 auto_increment인 MySQL 테이블(INT unsigned)이 있고 테이블에 4,294,967,295 레코드가 있는 경우 레코드를 1개 더 삽입하려고 하면 새 레코드의 ID가 자동으로 변경되어 "4,294,967,295" 최대값으로 설정되므로 MySQL 오류 메시지가 나타납니다.Duplicate entry '4294967295' for key 'PRIMARY'
컬럼이 [Primary Key](프라이머리 키)로 설정되어 있는 경우는, ID가 중복됩니다.
2가지 가능한 해결책:
- 쉬운 접근: Dan Armstrong이 말한 것처럼 ID를 서명 없이 BIGINT로 설정하여 제한을 확장합니다.그렇다고 해서 깨지지 않는 것은 아닙니다.테이블이 커지면 퍼포먼스에 영향을 줄 수 있습니다.
- 어려운 접근법:파티셔닝은 조금 더 복잡하지만 성능이 향상되고 데이터베이스 제한이 없습니다(물리 하드 디스크의 크기만 제한).Twitter(및 이와 유사한 대형 웹사이트)는 하루에 수백만 건의 트윗(음반)에 대해 이 방법을 사용합니다.
언급URL : https://stackoverflow.com/questions/10707072/what-is-the-biggest-id-number-that-autoincrement-can-produce-in-mysql
'programing' 카테고리의 다른 글
Django ModelAdmin의 list_display는 ForeignKey 필드의 속성을 표시할 수 있습니까? (0) | 2023.01.12 |
---|---|
MySQL 대소문자를 구분하는 쿼리 (0) | 2023.01.12 |
pytest에서 콘솔에 인쇄하는 방법 (0) | 2023.01.12 |
Java 8에서 문자열 목록으로 열거 값 가져오기 (0) | 2023.01.12 |
MariaDB 10에서 대용량 인덱스를 활성화하려면 어떻게 해야 합니까? (0) | 2023.01.12 |