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 |