2008-10-07 9 views
0

현재 시스템의 기본 키 길이는 10 자리이며 자바 정수 제한을 약간 넘습니다. 이러한 키의 숫자 오버 플로우로 인한 유지 관리 문제를 피하기를 원하지만, 필자는 절대로 필요없는 무한히 많은 수의 시스템 성능을 희생하고 싶지 않습니다.시퀀스 생성 기본 키의 적절한 크기는 무엇입니까?

기본 키 크기 관리는 어떻게 처리합니까? Java 정수를 사용하는 것이 더 좋습니다. 더 큰 Long에 비해 성능이 향상되고 필요한 경우 크기가 커지거나, 총알을 물리거나, PK의 대부분을 Java Long으로 가져와야하며, 넘쳐나는 것에 대해 걱정할 필요가 없습니다. 시퀀스 크기?

+0

실제로 어떤 DBMS를 사용하십니까? 번호 구현은 플랫폼에 따라 다릅니다. –

답변

1

필자는 거의 모든 상황 (극단적 인 데이터 저장 응용 프로그램)에서 이런 상황이 발생할 가능성을 제거하기 때문에 항상 긴 키 (숫자 18,0)를 사용했습니다. 키의 모든 테이블에서 동일한 데이터 유형을 사용한다는 것은 부모 클래스의 모든 모델 객체에서 해당 필드를 공유 할 수 있다는 것을 의미합니다. 또한 SQL getter 등의 일관된 코드를 유지할 수 있습니다.

2

자바 정수를 데이터로 오버플로 할 가능성에 따라 대답이 달라집니다. 그리고 당신의 데이터가 무엇인지 알지 못한다면 그것을 알 수있는 방법이 없습니다.

+0

솔직히 말해서, 그것은 다릅니다. 우리는 몇 가지 엔트리 이상을 가질 수없는 테이블과 아마도 매우 커질 테이블을 가질 것입니다. 나는 길 아래로 몇 년 동안이 위험을 안고있는 테이블이 있다고 규정 할 것이다. – JasonB

1

성능상의 이점은 무시할 수 있습니다. 따라서 제 조언은 긴 키를 사용하는 것입니다. 길을 따라 가면서 대처하는 것이 중요한 번거 로움 일 것입니다.

0

long 정수를 저장하고 사용하는 비용과 32 비트 정수가 넘칠 확률 사이의 균형입니다.

부호없는 32 비트 정수가 40 억 개가 넘는 값을 저장한다고 생각하십시오. 다음 136 년 동안이 테이블에서 매초마다 평균 1 회의 새 행을 만들 것이라고 생각하면 Long을 사용해야합니다.

0

자바의 32 비트 정수는 부호있는 정수이므로 20 억 개입니다. 어떤 이유로 든 SEQUENCE가 계속 점프를 계속하면 PK 사이에 약간의 간격이 생깁니다.

내가 항상 긴 사용, 따라서

:-) (일부 COBOL 개발자들이 ?? 날짜에 몇 바이트를 절약 할 수 있다고 생각하기 때문에 Y2K 문제가 일어난 것을 기억) 긴을 다치게하지 않습니다.