SQL/RDBMS

쿼리 실행 속도 확인

dddzr 2024. 5. 30. 09:28

 1. SQL 실행 계획 확인

MySQL에서는 `EXPLAIN` 키워드를 사용하여 쿼리의 실행 계획을 확인할 수 있습니다. 이 명령은 쿼리가 실행될 때 데이터베이스가 어떤 인덱스를 사용하고, 각 단계에서 얼마나 많은 행을 처리할지를 보여줍니다.

EXPLAIN {QUERY};


이 명령을 실행하면, 테이블 스캔 방식, 사용된 인덱스, 처리된 행 수 등의 정보를 포함한 실행 계획이 출력됩니다.


2. 실제 실행 시간 측정

쿼리의 실제 실행 시간을 측정하려면, SQL 콘솔 또는 프로그래밍 언어에서 직접 쿼리를 실행하고 SHOW PROFILE를 사용하여 시간을 측정할 수 있습니다.

SET profiling = 1;  -- 프로파일링 활성화

-- 쿼리 실행
{QUERY};

SHOW PROFILES;  -- 모든 실행된 쿼리의 프로파일 목록을 보여줌

SHOW PROFILE FOR QUERY query_id;  -- 특정 쿼리의 프로파일을 보여줌


3. GUI도구 이용

MySQL Workbench/ dbeaver와 같은 GUI 도구를 사용하면 쿼리 실행 계획과 실행 시간을 시각적으로 확인할 수 있습니다. 

ex) dbeaver에서 윈도우 > showView > 쿼리관리자


 4. 성능 스키마

MySQL의 성능 스키마(Performance Schema)를 사용하여 쿼리 성능을 모니터링할 수 있습니다. 성능 스키마는 다양한 쿼리 성능 관련 데이터를 수집하고 이를 분석하는 데 도움을 줍니다.

SELECT * FROM performance_schema.events_statements_summary_by_digest
ORDER BY SUM_TIMER_WAIT DESC
LIMIT 10;

 

5. 프로그래밍 언어 사용

프로그래밍 언어에서 쿼리 실행 시간을 측정하는 방법입니다.

예를 들어, Python에서 MySQL 쿼리 실행 시간을 측정할 수 있습니다.

import mysql.connector
import time

# 데이터베이스 연결 설정
conn = mysql.connector.connect(
    host='hostname',
    user='username',
    password='password',
    database='database_name'
)
cursor = conn.cursor()

# 쿼리 실행 시간 측정
start_time = time.time()
cursor.execute("""
{QUERY}
""")
conn.commit()
end_time = time.time()

print(f"Query execution time: {end_time - start_time} seconds")

# 커서와 연결 종료
cursor.close()
conn.close()