우선 순위대로 차례로 정리해본다.
각 번호(대 분류)마다, 순서대로 고려. 번호-n(소 분류)마다, 상황에 따라 고려.
1. DB 최적화, 자료구조(운영체제 공부, DB 공부 선행할 것)
=> 기본적인 속도를 높여 최적화한다.
=> 데이터 구조 자체를 효율적으로 해야 한다.
1-1. 인덱싱
1-2. 파티셔닝
1-3. 정규화 vs 반정규화
1-4. 조회/갱신 쿼리 튜닝
1-4-1. JOIN
https://icanchangeworld.tistory.com/167
JOIN(NLJ와 Hash Join)
1. NLJ(스트리밍/파이프라인 방식)=> 인덱스를 탈 수 있는 쿼리에서는 옵티마이저는 무조건 NLJ 방식을 사용한다.=> NLJ는 Nested Loop Join으로 그냥 루프를 돌려 조인을 수행한다고 보면 된다.1-1. NLJ는
icanchangeworld.tistory.com
1-5. 자료구조
2. 락 최적화
=> 요구사항에 따라 발생할 수 있는 동시성 문제를 알고, 락의 수준을 고려하여 최적화 한다.
=> 병목 현상을 파악 후 병렬성을 확보한다.
2-1. 비관 락
https://icanchangeworld.tistory.com/163
비관 락, 컨디션 변수, 세마포어, 블록
icanchangeworld.tistory.com
2-2. 낙관 락
https://icanchangeworld.tistory.com/156
CAS, 낙관적 락, Atomic VS LongAdder(Accumulator)
이 글은 Lock-Free 방식 중 하나를 설명한다. 1. CAS 기법이란=> 가정1: CompareAndSwap함수는 원자적으로 실행된다고 가정한다.=> 가정2: ptr은 모든 프로세서가 공유할 수 있는 Volatile 메모리이다. 1. 일단,
icanchangeworld.tistory.com
2-3. 트랜잭션 격리 수준
https://icanchangeworld.tistory.com/161
트랜잭션 격리 수준과 락
1. 이 개념으로 어떻게 최적화를 할 수 있을까?=> 트랜잭션을 적용=> 비즈니스 로직 특성을 고려하여, 발생할 수 있는 이상현상 체크=> 락이나, Lock-Free 등의 정합성을 해결할 수 있는 방법을 고안=>
icanchangeworld.tistory.com
2-4. Lock-Free/Wait-Free
2-5. 락과 동시성 문제
https://icanchangeworld.tistory.com/165
락과 동시성 문제
=> 동시성 문제는 비교착상태, 교착상태 이 두 가지로 나뉜다.1. 비교착 상태 문제1-1. 원자성 위반 오류=> 원자성 위반 오류는 문맥 교환이 발생하지 않을 것이라 생각하여 발생한다.=> 단순 +1 연
icanchangeworld.tistory.com
3. 캐시 전략(네트워크 공부 선행 할 것)
=> 읽기가 많은 시스템에서 DB 최적화를 넘어 추가 비용을 고려해 캐시를 적용한다.
=> 캐시와 스토리지의 정합성을 신경써야 한다.
=> 분산 캐시일 시 데이터 손실 가능성 고
3-1. InMemory
3-2. 분산 캐시
3-2-1. Redis
3-2-2. MemCached
3-3. 캐시 갱신 정책
3-3-1. TTL, LRU, LFU
3-3-2. Write-Through, Write-Back, Write-Around
3-4. 캐시 무효화 전략
3-5. 계층형 캐시 구성
4. 비동기
=> 블록을 사용하지 않고, 응답을 최대한 빠르게 보낼 수 있게 한다.
=> 백 프레셔 등 고려해야할 사항이 많기에 가장 뒤에 고려해본다.
4-1. 비동기 실행
4-2. 비동기 큐/메시징
4-3. 백프레셔
4-4. 이벤트 버퍼링/Batching
4-5. 실패 복구 전략
계속 추가 예정
'성능 최적화' 카테고리의 다른 글
락과 동시성 문제 (0) | 2025.04.23 |
---|---|
비관 락, 컨디션 변수, 세마포어, 블록 (0) | 2025.04.21 |
트랜잭션 격리 수준과 락 (0) | 2025.04.20 |
CAS가 적용된 다양한 자바 클래스들 (1) | 2025.04.19 |
CAS, 낙관적 락, Atomic VS LongAdder(Accumulator) (0) | 2025.04.17 |