2009-12-22 6 views
2

현재 작업중인 데이터베이스에 수천 개의 숫자가 추가되고 제거되며 이로 인해 자동 증분 키의 간격이 수십만 가지로 커지고 자동으로 증가합니다 - 수십억 달러의 숫자 증가.MYSQL의 자동 증가 간격을 수정해야하는시기

이 숫자는 개별 레코드를 참조하기 위해 저장되지 않지만 직접 계산을 수행 할 때 레코드를 참조하는 데 사용됩니다.

이러한 틈을 제거하고 자동 증가 번호를 재설정해야하는 이유가 있습니까? 아니면 중요하지 않습니까?

id 필드는 부호없는 정수입니다. 부호없는 큰 정수로 증가시켜야합니까? 내가 이해하는 바로는, 지금 그것이 4,294,967,295를 치면 그것은 깨질 것이다.

답변

3

내가 걱정할 유일한 이유는 2^32 한계에 가까워진다는 것입니다. 행 ID로 열을 사용하지 않는다면 걱정할 필요가 없습니다.

편집는 식별 정보를 모든 종류의이 열을 사용하는 경우, 당신은 거 GET 오버 플로우이기 때문에 그때하는 GUID 또는 뭔가 이상 열을 전환 할 것, 다음은 중복 값을 얻을 것이다 . 그리고 그건 부에노가 아닙니다.

+0

"10 억에 자동 증가 숫자." 2^32는 단지 40 억이며, 수억을주고받습니다. 아마 지금은 너무 늦기 전에 걱정하기 시작할 좋은 시간입니다. –

1

자동 증가 필드의 증가율을 알 수는 없지만 4294967295 한도에 도달 할 때를 예측하는 것은 간단합니다.

당신은 아직도 당신이 뭔가를 할 필요가 있다고 판단되는 경우

, 당신은 다음과 같은 옵션이 있습니다

  1. 1. 현재 카운트가 이상적으로이 작업을 수행 리셋 열을 삭제하고 다시 생성합니다. 참조 무결성을 위해이 필드를 사용하지 않으므로 다음 번에 간단하고 신속하게 해결해야합니다.
  2. 데이터 유형을 부호없는 BIGINT로 변경하십시오. 이제는 최대 18446744073709551615까지 올라갈 수 있습니다.하지만이 증가 된 양의 데이터를 저장하기 위해 힙에 더 많은 공간이 필요하며 문제를 연기했을뿐입니다.
  3. 자동 증가 (INT/BIGINT)에서 UUID으로 변경하십시오. 그러면 숫자와 무한 성질에 대해 걱정할 필요는 없지만 모든 클라이언트 코드를 변경해야 할 가능성이 큽니다.

별도의 메모에서, 나는 어딘가에 일찍이 어설픈 결정이나 어딘가에 두 가지를 느낀다.

+0

동의, 왜 정확히 10 대 수천의 레코드를 삭제하고 있습니까? 당신은 당신의 정규화를 재고 할 수 있습니다. – MindStalker

+0

테이블은 연구 데이터를 저장하는 데 사용됩니다. 일단 계산이 완료되면 더 이상 계산 데이터를 보존 할 이유가없고 삭제됩니다. – user103219

+1

하지만이 UUID에 대한 조언을 주셔서 감사합니다. – user103219