강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

jkyunjang님의 프로필 이미지
jkyunjang

작성한 질문수

실리콘밸리 데이터 리더가 알려주는 Airflow 기초

앞서 Airflow 예제를 개선해보자 (v4) - 실습

copy into 성능 저하

작성

·

17

1

안녕하세요 한기용 지식공유자님.
37. 앞서 Airflow 예제를 개선해보자 (v4) - 실습 강의에서 데이터의 벌크 업로드를 위해 dag의 insert into 코드를 copy into로 변경했습니다.

그러나 이 경우 기존에 한 줄씩 insert into 하던 방식보다 더 느린 결과가 나옵니다(insert into의 경우 2분, copy into의 경우 3분)

개인적으로는 제 컴퓨터의 IO 연산이 좋지 않고, 데이터의 양이 크지 않아서 오버헤드가 더 크기 때문인 것으로 예상하고 있는데, 지식공유자님의 의견도 알고 싶습니다 🙂

답변 2

0

한기용님의 프로필 이미지
한기용
지식공유자

안녕하세요? 예상하신대로 입니다. COPY INTO는 Stage를 앞단에 만드는 노력이 필요하기에 어느 정도 레코드 수가 되지 않는다면 INSERT INTO를 반복하는 것보다 느리게 동작합니다. 명확한 규칙이 있지는 않지만 기본적으로 회사 일이라면 그냥 COPY INTO를 사용하는 모듈을 하나 만들어두고 모두 그 모듈을 사용하는 형태로 가는 것이 좋습니다. 그래야 일관성도 생기고 처리하는 데이터의 크기가 나중에 커져도 문제가 되지 않습니다. 좋은 질문 감사드립니다!

0

안녕하세요, 인프런 AI 인턴입니다. jkyunjang님.

Airflow에서 데이터의 벌크 업로드 성능 차이에 대해 질문 주셨군요. 일반적으로 COPY INTO 명령어는 대량의 데이터를 일괄적으로 처리하게 설계되어 있으며, 작은 양의 데이터 또는 환경에 따라서 INSERT INTO 방식보다 비효율적일 수 있습니다. 여러 가지 이유가 있으나, 몇 가지 핵심 요소를 고려해 보시면 좋겠습니다.

  1. 데이터량: COPY INTO는 대량 데이터 처리에 최적화되어 있으며, 소량의 데이터에서는 오히려 준비 시간이 길어 성능 저하로 이어질 수 있습니다.

  2. 네트워크 속도 및 I/O 성능: 컴퓨터의 네트워크 상태나 디스크 I/O 성능도 영향을 미칠 수 있습니다. 만약 로컬 환경이 아닌 원격 서버로의 전송이라면, 네트워크 대역폭도 분석의 변수로 포함해야 할 것입니다.

  3. 파일 포맷 및 처리 방식: COPY INTO는 주로 파일 기반의 데이터 적재에 적합하며, 소량의 데이터를 파일로 전환하여 처리할 때 나타나는 오버헤드가 성능을 떨어뜨릴 수 있습니다.

관련 경험이 공유된 게시물도 함께 참고하시어 환경 설정을 점검해 보시면 좋습니다:
- Snowflake 성능 관련 문의

데이터 처리 방식에 따라 다를 수 있다는 점을 고려하여, 사용 환경에 맞는 최적화가 필요합니다. 실험적인 분석을 통해 성능을 최적화하는 방법을 계속 연구해보시길 권장드립니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

jkyunjang님의 프로필 이미지
jkyunjang

작성한 질문수

질문하기