검색결과 리스트
글
카드 시스템 분석 자료
링크 :
- 1. 데이터 파일의 구조
- 2. DBMS 메모리 구조
- 3. 인덱스 기본
- 4. 정렬을 제거하는 방법
- 5. 프로시져 캐시 경합 확인하기
- 6. Loop 쿼리 제거하기
- 7. 튜닝 결과 샘플 보기
개선 방법은 대부분 인덱스 수정 (순서 변경, 추가, 삭제)
더 좋은 해결 방법이 있다면 서버 비지니스 로직 변경 + 인덱스 & 쿼리 튜닝
Loop 쿼리는 One 쿼리로 변경 후 서버 비지니스 로직 변경 등..
내용 : 카드 삭제
문제 : 클러스터형 인덱스 파편화 심화 유발, 스레드당 최대 30번의 Execute Call 발생
개선방향 : 삭제 플래그 형식으로 변경, 삭제코드를 array로 넘긴 후 파싱 Execute Call 감소
쿼리 수정
- 삭제 대상 시퀀스를 문자열로 조합 후 쿼리에 전달 해당 쿼리는 파싱 후 처리
- 수정 후 Execute Call 은 스레드당 무조건 한 번
내용 : 경험치 증/감
문제 : 조건문 적용 순서 오류, 불필요한 SELECT, 스키마 누락
개선 방향
- 조건문을 직관적으로 변경
- UPDATE 구문 수정으로 첫번째 SELECT 제거
- 스키마 추가
결과
- SELECT문 2 -> 1
- 수행 시간 12% 감소
내용 : 업그레이드 카드 목록 얻기 (레전드 만들기)
문제 : 랜덤 액세스 발생이 심각함
개선 방향 : 랜덤 액세스 제거 & 정렬 제거, 비클러스터형 인덱스 수정
결과
- 랜덤 액세스 제거
- 인덱스 순서를 변경하면 정렬 제거가 가능하다. (CharacterNO ASC 두 번째로)
- 해당 쿼리에 맞는 인덱스 추가 가능 ( INSERT I/O 비용 0.01 증가 )
내용 : 업그레이드 카드 목록 얻기 (특정 클래스만
문제 : 랜덤 액세스 발생 심각함
개선 방향 : 랜덤 액세스 제거 & 정렬 제거, 비클러스터형 인덱스 수정
결과
- 랜덤 액세스 제거
- 정렬 제거 (특정 클래스만 탐색하기 때문에 가능)
- 처리 비용 89% 감소
내용 : 캐릭터 카드 목록을 얻는다.
문제 : 랜덤 액세스 심각, 불필요한 업데이트 구문, 정렬
개선 방향 : 랜덤 액세스 제거, 불필요한 구문 제거, 비클러스터형 인덱스 수정
결과
- 랜덤 액세스 제거
- UPDATE 구문 제거
- 처리 비용 46% 감소 (정렬 제거 시 58% 감소)
내용 : 강화 재료 카드 목록을 얻는다.
문제 : 보유 수량만큼 INNER JOIN, 클러스터형 인덱스와 조인, 랜덤 액세스, 정렬
총 네 번의 INNER JOIN이 발생
개선 방향 : 불필요한 JOIN, 랜덤 액세스, 정렬 제거, 인덱스 수정
결과
- INNER JOIN 감소 ( 4 -> 1)
- 랜덤 액세스 제거
- 정렬 제거
- 처리 비용 88% 감소
튜닝전 UPS_GetCharacterCardList_Enchant 실행 계획
튜닝 후 UPS_GetCharacterCardList_Enchant 실행 계획
운영툴 대회채널 결과 페이지 튜닝전 실행 계획
운영툴 대회채널 결과 페이지 튜닝 후 실행 계획
파란 박스로 체크한 결과가 튜닝 후 쿼리 실행 시 결과를 얻는데 걸리는 시간(ms)
RECENT COMMENT