※ 이 글에서 다룬 기반기술, 프론트엔드, 백엔드, 데브옵스 등 풀스택 개발 지식은 모두 한화시스템 Beyond SW Camp 12기에서 배운 내용을 복습한 것입니다.
적은 데이터로는 성능 차이가 들어나지 않아서 대량의 데이터를 삽입을 위한 Data import 작업을 실행하였다.
어느 sql 파일로 어느 DB에 데이터를 넣을건지 설정을 해줘야한다.
이렇게 하면은 데이터가 대량으로 삽입되었고 성능 테스트할 준비가
1. 기본 성능 확인 (Explain)
SELECT COUNT(*) FROM customers;
SELECT * FROM customers WHERE country='USA';
EXPLAIN SELECT * FROM customers WHERE country='USA';
COUNT(*)를 해서 테이블의 총 행 갯수를 확인해보고 SELECT문을 통해 country가 'USA'인 모든 행을 반환도 해봤다.
그 후 country가 'USA'인 모든 행을 반환하는 쿼리의 실행 계획을 보여주는 SQL문장을 실행해보았다.
type이 ALL이라는건 테이블의 모든 행을 스캔하겠다는 것이다. 즉, 성능면에서는 좋지 않다는 것이다.
이 외에도 index(인덱스 전체 스캔), range(특정 범위 스캔), ref(참조 스캔) 등 여려 가지 type이 있다.
2. 쿼리 성능 분석 (profiling)
SET profiling = 1; # profiling 기능 켜는 설정
SELECT * FROM customers WHERE country='USA';
SELECT * FROM customers WHERE country='USA';
SHOW PROFILES; # profiling 결과 조회
SHOW PROFILE FOR QUERY 21; # 특정 쿼리의 실행 과정 상세 조회
프로파일링(Profiling) : 데이터베이스에서 쿼리나 시스템 성능을 분석하고 최적화하기 위해 실행되는 쿼리의 상세한 실행 정보를 수집하는 과정
SET profiling = 1; 은 profiling 활성화하는 설정이다. 0으로 하면 비활성화 된다.
두 문장을 실행한 후 SHOW PROFILES를 통해 profiling 결과를 조회해보았다.
- Query ID : 각 쿼리를 식별하는 고유 번호
- Duration : 쿼리가 실행되는데 걸린 시간
자등으로 생성된 쿼리의 고유 번호로 특정 쿼리의 실행 과정만 상세 조회하는 것도 가능하다.
'한화시스템 Beyond SW Camp > 기반기술' 카테고리의 다른 글
[리눅스] DB 분산 (DRP, HAProxy, mariaDB, Master-Slave(Mirror Site) 방식) (0) | 2024.12.03 |
---|---|
[Database] INDEX, 스토어드 프로시저, View, 반정규화 (0) | 2024.12.02 |
[Database] 코딩테스트 (프로그래머스) (1) | 2024.12.01 |
[Database] 이론 및 기본 문법(DDL, DML, DCL) (1) | 2024.11.28 |
[네트워크] 3계층 구조 (3 tier architecture) (0) | 2024.11.28 |