programing

자동 증가가 mysql에서 생성할 수 있는 가장 큰 ID 번호는 무엇입니까?

bestcode 2023. 1. 12. 22:13
반응형

자동 증가가 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가지 가능한 해결책:

  1. 쉬운 접근: Dan Armstrong이 말한 처럼 ID를 서명 없이 BIGINT로 설정하여 제한을 확장합니다.그렇다고 해서 깨지지 않는 것은 아닙니다.테이블이 커지면 퍼포먼스에 영향을 줄 수 있습니다.
  2. 어려운 접근법:파티셔닝은 조금 더 복잡하지만 성능이 향상되고 데이터베이스 제한이 없습니다(물리 하드 디스크의 크기만 제한).Twitter(및 이와 유사한 대형 웹사이트)는 하루에 수백만 건의 트윗(음반)에 대해 이 방법을 사용합니다.

언급URL : https://stackoverflow.com/questions/10707072/what-is-the-biggest-id-number-that-autoincrement-can-produce-in-mysql

반응형