본문 바로가기

DB

Hot Key

  • 과도하게 읽기/쓰기 요청이 집둥되게 되는 Key를 의미한다.
  • 해당 Key의 접근으로 인해 Storage(DB, Cache) 성능 저하가 발생하게 된다.

문제 상황

Cache Server의 최대 성능은 100,000 TPS라고 가정한다.

API Server로 부터 A Key에 대한 요청이 150,000개가 발생한다면, Cache Server에 해당 Key가 존재하지만 서버 부하가 높아져 응답할 수 없어 Timeout이 발생하고 50,000 개의 요청은 DB Server로 보내지게 된다.

 

Hot Key에 대한 일반적인 해결책

  • Query Off (Read From Secondry)
    • Read Replica를 여러 개 생성해두고 요청을 나누어 처리한다.
    • Write는 Primary, Read는 Secondary를 사용해서 Read의 부하를 줄인다.

  • Local Cache
    • API Server 내에서 특정 Key에 대한 Value를 캐시해두고 응답한다.
    • 데이터가 변경되었을 때, 이를 통지 받는 메커니즘이 필요하다.
    • 변경 통지가 없다면, TTL이 끝날 때까지 데이터의 불일치가 발생한다. -> Client-Side Caching을 사용해서 해결할 수 있다.

  • Multiple Write And Read From One
    • Hot Key를 여러 Server에 저장하고 요청을 나누어 처리하며, Update 가 발생 시 여러 Server 전부를 Update한다.

'DB' 카테고리의 다른 글

[DB] 문자열 데이터 타입에 글자(한글) 수 제한하기  (0) 2023.07.29
[DB] 정규화  (0) 2022.12.15
[DB] MySQL  (0) 2022.12.08
[DB] MySQL vs PostgreSQL  (0) 2022.11.19