GUID가 100 % 고유한가요?
여러 스레드에서 고유하게 유지됩니까?
답변
생성 된 각 GUID가 고유 한 것은 아니지만 총 고유 키 수 ( 2128 또는 3.4 × 10 38 )는 너무 커서 같은 수의 두 번 생성 될 확률이 매우 작습니다. 예를 들어, 약 5 × 10 22
개의 별 을 포함하는 관측 가능한 우주를 고려하십시오 . 모든 별은 6.8 × 10 15 개의 보편적으로 독특한 GUID 를 가질 수 있습니다 .
에서 위키 백과 .
다음은 GUID를 만드는 방법 (.NET 용)과 올바른 상황에서 동일한 GUID를 얻는 방법에 대한 좋은 기사입니다.
https://ericlippert.com/2012/04/24/guid-guide-part-one/
https://ericlippert.com/2012/04/30/guid-guide-part-two/
https://ericlippert.com/2012/05/07/guid-guide-part-three/
답변
동일한 GUID 값이 무서워지면 두 값을 서로 옆에 두십시오.
Guid.NewGuid().ToString() + Guid.NewGuid().ToString();
편집증이 너무 심하면 3을 넣으십시오.
답변
간단한 대답은 그렇습니다.
Raymond Chen은 GUID와 GUID의 하위 문자열이 고유 하지 않은 이유에 대한 훌륭한 기사 를 썼습니다 . 이 기사는 설명에 약간의 길이로 가야한다 그들이 고유성을 보장하기 위해 사용하는 GUID를 생성하는 방법과 데이터에 일부 깊이에가는 이유 가 있습니다 🙂
답변
부수적으로, 나는 Windows XP에서 Volume GUID를 가지고 놀았습니다. 이것은 3 개의 디스크와 14 개의 볼륨이있는 매우 모호한 파티션 레이아웃입니다.
\\?\Volume{23005604-eb1b-11de-85ba-806d6172696f}\ (F:)
\\?\Volume{23005605-eb1b-11de-85ba-806d6172696f}\ (G:)
\\?\Volume{23005606-eb1b-11de-85ba-806d6172696f}\ (H:)
\\?\Volume{23005607-eb1b-11de-85ba-806d6172696f}\ (J:)
\\?\Volume{23005608-eb1b-11de-85ba-806d6172696f}\ (D:)
\\?\Volume{23005609-eb1b-11de-85ba-806d6172696f}\ (P:)
\\?\Volume{2300560b-eb1b-11de-85ba-806d6172696f}\ (K:)
\\?\Volume{2300560c-eb1b-11de-85ba-806d6172696f}\ (L:)
\\?\Volume{2300560d-eb1b-11de-85ba-806d6172696f}\ (M:)
\\?\Volume{2300560e-eb1b-11de-85ba-806d6172696f}\ (N:)
\\?\Volume{2300560f-eb1b-11de-85ba-806d6172696f}\ (O:)
\\?\Volume{23005610-eb1b-11de-85ba-806d6172696f}\ (E:)
\\?\Volume{23005611-eb1b-11de-85ba-806d6172696f}\ (R:)
| | | | |
| | | | +-- 6f = o
| | | +---- 69 = i
| | +------ 72 = r
| +-------- 61 = a
+---------- 6d = m
GUID가 매우 유사한 것은 아니지만 모든 GUID에 “mario”라는 문자열이 있다는 사실입니다. 우연의 일치입니까, 아니면 그 뒤에 설명이 있습니까?
이제 GUID에서 파트 4 를 검색 할 때 볼륨 GUID로 약 125.000 개의 히트를 발견했습니다.
결론 : Volume GUID와 관련하여 다른 GUID만큼 고유하지 않습니다.
답변
일어나서는 안됩니다. 그러나 .NET에 과부하가 걸리면 중복 guid를 얻을 수 있습니다. 두 개의 다른 SQL 서버를 사용하는 두 개의 다른 웹 서버가 있습니다. 데이터를 병합하려고했는데 1,500 만 개의 guid와 7 개의 복제본이있는 것으로 나타났습니다.
답변
예, GUID는 항상 고유해야합니다. 하드웨어와 시간, 그리고 몇 가지 추가 비트를 기반으로 고유한지 확인합니다. 이론적으로는 두 개의 동일한 것으로 끝날 수 있지만 실제 시나리오에서는 거의 불가능합니다.
다음은 Guids에 대한 Raymond Chen의 훌륭한 기사입니다.
https://blogs.msdn.com/oldnewthing/archive/2008/06/27/8659071.aspx
답변
길드는 통계적으로 독특합니다. 동일한 Guid를 생성하는 서로 다른 두 클라이언트의 가능성은 무한히 작습니다 (Guid 생성 코드에 버그가 없다고 가정). 우주 광선으로 인해 프로세서 글리치가 발생하고 오늘날 2 + 2 = 5로 결정하는 것에 대해 걱정할 수도 있습니다.
새 guid를 할당하는 여러 스레드는 고유 한 값을 갖지만 호출하는 함수는 스레드로부터 안전해야합니다. 어떤 환경입니까?
