본문 바로가기

개발/성능개선6

비동기 방식 비동기를 활용하는 상황 동기방식으로 처리를 해야하는 작업이 아니라면 비동기 방식을 고민해보는 것도 좋지 않을까? 동기방식이 맞는 경우 결제 API 에서 pg사로 결제 요청을 한 경우 pg사에서 정상적으로 결제처리가 완료되었다는 응답을 받고 추가 작업을 진행하는 경우 사전 작업 완료가 된 후 이어서 다음 작업을 할 수 있는 경우 비동기방식을 활용해도 되는 경우 100명에 사용자에게 쿠폰 발송을 한다면 1번 사용자 발송이 완료되고 2번 사용자를 발송하고 이런 발송 처리 java completeFuture 를 활용한 비동기처리 캐싱과 인덱싱에 사용했던 공지사항 테이블을 사용 상황 : 공지사항 전체 데이터를 조회하고 그 만큼을 로그 발송 처리 발송을 → log 로 대체 발송처리에 드는 작업 시간을 → Threa.. 2024. 3. 10.
인덱스를 타지 않는 경우 인덱스를 타지 않는 경우 테이블에 인덱스를 제대로 생성을 했지만 인덱스를 타지 않는 경우 인덱스는 제대로 걸려있지만 왜 인덱스를 안타는지에 대한 경우를 나누어서 직접 조회해보며 정리 notice 테이블 기반으로 확 이를 통해 인덱스를 잘 탈 수 있게 쿼리 튜닝을 할 수 있다. -- 2023.01.15 ~ 2023.02.14 한달 데이터 조회 explain SELECT * FROM notice WHERE createDate BETWEEN '2023-01-15 00:00:00' AND '2023-02-14 23:59:59' ; explain을 붙여서 실행하여 실행계획을 확인해보면 key 칼럼 idx_notice_createDate 인덱스를 타는것을 확인 가능 1. 함수나 연산자를 사용하는 경우 쿼리에서 컬럼.. 2024. 3. 9.
Mysql Profiling으로 수치 확인 Mysql Profiling 사용을 위한 설정 MySQL 에서는 쿼리가 처리되는 동안 각 단계별 작업에 시간이 얼마나 걸렸는지 확인할 수 있는 기능을 제공 프로파일링 기능을 활성화 설정 // profiling 기능 활성화하기 set profiling=1; set profiling_history_size=100; 확인할 Query_ID 찾기 profiling 기능을 통해 확인하고자 하는 쿼리 실행 show profiles ; 명령어 실행 후 실행한 쿼리를 찾아서 Query_id 찾기 SELECT * FROM study_db.notice WHERE createDate BETWEEN '2023-01-15 00:00:00' AND '2023-02-14 23:59:59' ; show profiles ; 5번 Qu.. 2024. 3. 9.
인덱스 활용 인덱싱 장점 검색 성능 향상 WHERE 절에서 특정 칼럼을 이용한 조건 검색이 빨라집니다. 인덱스가 없으면 데이터베이스 엔진은 테이블 전체를 스캔하여 조건에 맞는 행을 찾아야 합니다. 하지만 인덱스가 있다면 인덱스를 사용하여 더 빠르게 검색이 가능합니다. 조인 성능 향상 JOIN절에서 조인할 때 인덱스가 있는 경우, 데이터베이스 엔진은 인덱스를 이용하여 조인을 수행할 수 있습니다. 이는 두 테이블 간의 매칭되는 행을 효율적으로 찾을 수 있도록 도와줍니다. 정렬 및 그룹화 성능 향상 인덱스는 정렬 및 그룹화 작업에도 도움을 줍니다. 특히, ORDER BY 나 GROUP BY 절에서 인덱스를 사용하면 정렬이나 그룹화 작업이 빨라집니다. 범위 검색 최적화 일부 인덱스는 범위 검색에 특히 유용합니다. 예를 들어.. 2024. 3. 8.
Ehcache ehcache.xml 설정 name : 캐시의 이름 maxElementsInMemory : 메모리에 저장할 수 있는 최대 요소 수 maxElementsOnDisk : 디스크에 저장할 수 있는 최대 요소 수 eternal : 캐시 항목이 영원히 유지되는지 여부 false로 설정하면 캐시 항목은 유효 기간(timeToLiveSeconds) 또는 유휴 기간(timeToIdleSeconds)이 지나면 제거 statistics : JMX 통계정보 갱신 옵션 timeToIdleSeconds 설정된 시간 동안 유지 후 갱신 캐시 된 데이터의 전체 수명 overflowToDisk : 메모리에 캐시된 데이터가 메모리 한계를 초과하는 경우 디스크로 넘길지 여부를 지정 diskPersistent : 디스크에 저장된 데이터가.. 2024. 3. 8.
nGrinder 용어 TPS(Transactions Per Second) 처리량 초당 처리 가능한 트랜잭션의 수 TPS가 100이면 초당 처리 할 수 있는 작업은 100 TPS 수치가 높을 수록 짧은 시간에 많은 작업을 처리 할 수 있다. Vuser (Virtual User) 가상 사용자 EX) vUser10 가상 사용자 10명 부하 테스트 시나리오에서 10명의 가상 사용자가 동시에 시스템 또는 애플리케이션에서 동작하고 있다는 것을 의미 TPS : 평균 TPS TPS 수치가 높을 수록 성능적으로 우수하다. Peak TPS : 최고 TPS Mean Test Time : 평균 테스트 시간 Mean Test Time이 낮을 수록 성능적으로 우수하다. Executed Tests : 테스트 실행 횟수 Successful Tests :.. 2024. 3. 5.