Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- Katalon Recorder 사용법
- 국세청 해외주식 양도세 신고방식
- git 연동
- java.sql.SQLSyntaxErrorException
- 톰캣 실시간 로그
- 해외주식 양도세 신고
- 최대공약수 예제
- javascript 자동완성
- 피보나치함수 예제
- 피보나치함수
- 피보나치 예제
- 재귀 예제
- bfs 미로탐색 java
- tomcat log
- 한국투자증권 양도세 신고
- katalon xpath
- katalon 자동화
- 해외증권 양도세 한국투자증권
- 한국투자증권 해외주식 양도세
- CSTS 폭포수 모델
- 홈택스 해외주식 양도세
- js 자동완성
- recursion example
- 테스트 자동화
- katalon 사용법
- oracle group by
- 재귀함수 예제
- katalon
- 주식 양도세 신고방법
- katalon 비교
Archives
- Today
- Total
엄지월드
[5차시] 데이터베이스 및 SQL 튜닝 : 데이터 처리 성능 극대화 본문
데이터베이스 성능 최적화 개요 및 전략
- 쿼리 최적화 전략
- 서브쿼리 대신 조인 사용
- 인덱스 설정 최적화
- 복합 인덱스를 사용하여 다중 조건 쿼리 성능 개선
- 인덱스 스캔과 인덱스 시크의 차이 이해
- 인덱스 스캔 : 전체 데이터를 훓음
- 인덱스 시크 : 필요한 데이터만 빠르게 찾아가는 방식
- B-Tree 인덱스와 Hash 인덱스의 사용
- B-Tree 인덱스 : 범위 검색
- Hash 인덱스 : 필요한 데이터만 빠르게 찾아감
- 메모리 및 캐시 최적화
- 버퍼 풀(Buffer Pool) 최적화로 디스크 I/O 최소화
- 쿼리캐시 : 자주 사용되는 쿼리 결과를 메모리에 저장
- Shared Buffers와 Work Mem의 적절한 크기 설정
- 캐시 무효화 정책을 통한 데이터 최신 상태 유지
- 디스크 I/O 최적화
- 파티셔닝을 통해 데이터 분할 처리
- I/O 대기 시간 분석 및 개선
- 하드웨어 최적화 전략
- CPU 코어 수 증가로 병렬 처리 능력 향상
- 고속 네트워크 설정으로 데이터 전송 속도 개선
- 디스크 성능 : SSD 사용과 RAID 구성으로 처리량 증가
- 데이터베이스 설정 튜닝
- MySQL : InnoDB 버퍼 풀과 쿼리 캐시 조정
- PostgreSQL : Shared Buffers, Work Mem 설정 최적화
- Oracle : SGA와 PGA 메모리 설정, AWR 보고서를 통한 성능 분
SQL 성능 최적화
- WHERE절 최적화
- 인덱스를 사용하는 조건으로 필터링
- LIKE나 OR 대신 IN 절 사용
- WHERE 절 조건의 순서를 최적화하여 성능 개선
- JOIN 최적화
- INNER JOIN과 OUTER JOIN의 성능 차이
- 인덱스가 적용된 컬럼으로 JOIN
- JOIN 순서 최적화로 성능 개선
- 불필요한 조인은 성능 저하의 원인
- 서브쿼리 대신 JOIN 사용
- 서브쿼리는 성능 저하의 주 원인
- JOIN을 사용하여 쿼리 재작성
- 서브쿼리가 필수일 때는 인덱스 활용
- SELECT 최적화
- DISTINCT는 불필요하게 사용하지 말 것
- LIMIT와 OFFSET 최적화
- LIMIT와 OFFSET을 사용한 페이징 처리
- 서브쿼리를 통해 성능 개선
- 대량 데이터의 페이징에서 성능 문제 발생 가능성
- 인덱스 기반 페이징을 사용하여 OFFSET 문제 해결
- 데이터베이스에 적합한 페이징 전략 설계
- 서브쿼리 최적화를 통해 OFFSET 문제 완화
- OFFSET이 클수록 성능이 떨어짐
- 파티셔닝을 통한 성능 최적화
- 파티셔닝을 사용하여 대용량 데이터를 효율적으로 관리
- Range 파티셔닝과 Hash 파티셔닝 활용
- 쿼리가 특정 파티션만 조회하도록 최적화
- SQL 힌트(Hints) 사용
- 힌트를 통해 쿼리 실행 계획 제어
- 특정 인덱스 사용 강제
- 병렬 처리를 통한 성능 개선
인덱스(INDEX) 최적화
- 인덱스의 기본 개념
- 인덱스는 테이블의 특정 컬럼에 대한 색인 역할
- 인덱스를 사용하면 데이터 조회 속도를 크게 향상
- B-Tree 인덱스가 가장 일반적으로 사용됨
- 인덱스 스캔과 테이블 스캔
- 인덱스 스캔 : 인덱스를 사용해 데이터를 조회
- 테이블 스캔 : 전체 테이블을 스캔하여 데이터 조회
- 인덱스를 사용하지 못하는 쿼리는 테이블 스캔을 유발할 수 있음
- Clustered 인덱스와 Non-Clustered 인덱스
- Clustered 인덱스 : 테이블의 물리적 데이터가 인덱스 순서에 따라 정렬
- Non-Clustered 인덱스 : 인덱스와 데이터가 분리되어 관리
- 한 테이블에 하나의 Clustered 인덱스만 생성 가능
- Non-Clustered 인덱스는 다중 생성 가능, 조회 성능 향상에 사용
스프링 부트 데이터베이스 커넥션풀(HikariCP) 최적화
- HikariCP 고급 설정
- Leak Detection Threshold : 커넥션 누수 감지 시간 설정
- Max Life time : 커넥션의 최대 수명 설정(기본값 : 30 분)
- Validation Timeout : 커넥션 유효성을 검사하는 시간 설정
- Auto Commit : 자동 커밋 여부 설정 (기본값 : true)
'기타' 카테고리의 다른 글
[4차시] 캐싱 전략과 최적화 기법 : 속도와 자원을 동시에 잡는 방법 (0) | 2025.03.18 |
---|---|
[3차시] 스프링 부트 내장 톰캣 최적화 및 NGINX 연계 : 효율적 요청 처리 환경 만들기 (0) | 2025.03.17 |
[2차시] 애플리케이션 구동 시간 단축하기 : 빠른 스타트업을 위한 전략과 기법 (2) | 2025.03.17 |
[1차시] 스프링 부트 성능 최적화 전략 : 기본 개념부터 핵심 원칙까지 (0) | 2025.03.17 |
[1차시] 머신러닝 기초 개념 / Google Colab 소개 (2) | 2024.05.09 |
Comments