-
테이블 캐시를 관리하는 방법프로그래밍 2024. 10. 4. 20:51
개발자는 종종 데이터 조회를 위해 DB 조회 쿼리를 작성하고 조회 성능에 민감하게 된다.
각종 DB 튜닝 작업 - 인덱스, 서브쿼리 제거, 임시 테이블 사용 등등 - 을 진행하고 그럼에도 불구하고 성능 문제 및 리소스 문제로 고통 받는 경우가 있다.
아래에 설명할 테이블 Cache 방법은 효율적인 Cache를 하기 위한 방법 중 하나이다.
우리가 테이블 Cache 또는 조회 결과를 캐시 할 때는 먼저 몇 가지 사전 조건이 걸린다.
1. 조회 데이터가 얼마나 자주 변경 되는가?
2. 조회 데이터가 얼마나 자주 사용 되는가?
만약, 해당 조회가 자주 변경되는 내용이라면 Cache는 큰 도움이 되지 않을 것이다.
또한, 그러한 데이터라면 Cache를 고려하지 않을 것이다.
그럼 자주 변경되지 않으면서 자주 사용되는 데이터가 캐시 대상이 될 것이다.
주로 아래와 같은 데이터가 캐시 대상이 된다.
1. 대시보드용 통계 데이터
2. 각종 전일 집계 통계 데이터
3. 화면 레이아웃을 위한 설정 데이터
4. 사용자 설정 데이터
등은 모두 캐시 대상이 될 수 있는 대상이 되겠다.
그렇다면 어떻게 캐시하는게 좋을까?
일반적으로 캐시 대상의 결과 데이터를 캐시 하는 것이 당연할 것이다.
하지만, 일부 조합형 데이터나 서로 다른 테이블의 데이터를 캐시하고자 할 경우 아래와 같은 방법을 사용할 수 있다.
위와 같은 A, B 테이블이 있을 경우 컬럼 A,B,C는 모두 같은 키를 갖는다.
B 테이블은 이외에 D,E,F 키를 가지고 있다.
따라서 우리는 컬럼 A,B,C가 동일하다고 한다면 해당 테이블의 값을 Hash로 만들수 있다.
이는 캐시를 할 경우 매우 중요한데, 캐시는 대부분 KEY, VALUE로 이루어지고 KEY는 고유해야 하기 때문이다.
Hash는 특정데이터 - KEY Value-는 위에서와 같을 경우 PK이고 테이블의 KEY는 유일성을 보장하므로 Hash 대상이 될 좋은 데이터이고 해당 데이터를 Hash화 할 경우 동일한 Hash 값을 얻을 수 있을 것이다.
따라서, 테이블 A, B를 캐시 할때는 테이블 A와, B는 컬럼 A,B,C를 기본 Hash값으로 가지며, B테이블은 D,E,F 컬럼을 옵션으로 Hash화 할 수 있다.
캐시를 갱신하려고 한다면 공통 컬럼 A,B,C를 찾아 모두 삭제하면 된다.
또한, 신규로 캐시를 할 경우 위 논리의 반복이 되겠다.
조합형 데이터 또는 테이블 캐시를 해야 할 경우 위와 같은 방법을 고려한다면 매우 유용할 것이다.
도움이 되길 바라며.
'프로그래밍' 카테고리의 다른 글
Entity Framework는 Unit of Work가 필요한가? (0) 2024.10.14 멀티스레드 환경에서의 데이터 전송에 대한 안정성 향상 방법 (3) 2024.10.10 EF Core Code First Entity Model을 작업하는 방법 (0) 2024.09.24 python + .net core integration, use pythonnet (0) 2024.07.26 Node 앱을 위한 타입스크립트 설정 (0) 2024.03.26