빠른 시작
프로파일링 활성화
프로파일러 API
프로파일러 가져오는 방법
report()
| 매개변수 | 유형 | 기본값 | 설명 |
|---|---|---|---|
min_duration_ms | float | 0.1 | 이 값 이상의 소요 시간을 가진 단계만 표시합니다 |
- 각 단계의 소요 시간(밀리초)
- 상위 단계 시간/전체 시간 대비 비율
- 작업의 계층적 중첩 구조
- 각 단계의 메타데이터(예:
ops_count,ops)
step()
clear()
summary()
보고서 살펴보기
단계 이름
| 단계 이름 | 설명 |
|---|---|
Total Execution | 전체 실행 시간 |
Query Planning | 쿼리 계획 수립에 소요된 시간 |
SQL Segment N | SQL 세그먼트 N 실행 |
SQL Execution | 실제 SQL 쿼리 실행 |
Result to DataFrame | 결과를 pandas로 변환 |
Cache Check | 쿼리 캐시 확인 |
Cache Write | 결과를 캐시에 쓰기 |
소요 시간
- 계획 단계 (쿼리 계획): 일반적으로 빠릅니다
- 실행 단계 (SQL 실행): 실제 작업이 수행되는 단계입니다
- 전송 단계 (결과를 DataFrame으로): 데이터를 pandas로 변환하는 단계입니다
병목 지점 파악
프로파일링 패턴
단일 쿼리 프로파일링
여러 쿼리 프로파일링하기
접근 방식 비교
최적화 팁
1. SQL 실행 시간 확인
SQL execution이 병목이라면:
- 데이터 양을 줄일 수 있도록 필터를 더 추가합니다
- CSV 대신 Parquet를 사용합니다
- 적절한 인덱스가 설정되어 있는지 확인합니다(데이터베이스 소스의 경우)
2. I/O 시간 확인
read_csv 또는 read_parquet가 병목이라면:
- Parquet 사용(열 지향, 압축 형식)
- 필요한 컬럼만 읽기
- 가능하면 원본 데이터에서 필터링
3. 데이터 전송 확인
to_df가 느리다면:
- 결과 집합(result set)이 너무 클 수 있습니다
- 필터를 더 추가하거나 limit를 설정하세요
- 미리 보려면
head()를 사용하세요