Java

[Java] Time Orderd UUID

예은파파 2022. 2. 23. 15:59

UUID를 Primary Key로 썼을 경우

  • MariaDB InnoDB 테이블의 Primary Key는 Clustered 인덱스로 물리적으로 순서대로 유지가 가능
  • UUID의 값은 unique하긴 하나 랜덤하게 발생되는 값으로, Primary Key 컬럼일 경우 Clustered Index로 재배열하게 되어, InnoDB 스트로지 엔진의 부하가 발생.

 

 

해결방안

  • UUID를 랜덤하게 생성하되 이 값을 sequencial 하게 생성하여, DB 입장에서 새로운 데이터가 들어오더라도 indexing으로 인해 드는 리소스가 랜덤값보다 현저히 감소.
  • Java UUID Generator (JUG) Library 사용 ( 아래 dependecy 추가 )
<dependency>
	<groupId>com.fasterxml.uuid</groupId>
	<artifactId>java-uuid-generator</artifactId>
	<version>4.0.1</version>
</dependency>
TimeBasedGenerator gen = Generators.timeBasedGenerator(EthernetAddress.fromInterface());
UUID uuid = gen.generate();
UUID anotherUuid = gen.generate();
		
System.out.println( uuid );
System.out.println( anotherUuid );

----------------------------------------------------------------------------------------------
결과 
d8a551a6-9475-11ec-8083-00d86126fd1a
d8a551a7-9475-11ec-8083-00d86126fd1a

 

'Java' 카테고리의 다른 글

[Java] JMX를 통한 자원 모니터링  (0) 2021.06.11
[Java] 공개키(Public Key) 와 개인키(Priviate Key)  (0) 2020.12.10
[Java] 암호 알고리즘 / 운용 모드 / Padding  (0) 2020.11.28
[Java] Reflection  (0) 2020.11.19
[Java] Optional  (0) 2020.11.15