[Pandas] to_sql 속도 개선

 

  1. create_engine 옵션
    1. use_batch_mode=True : 소스에서 create_engine(url, client_encoding='utf8', use_batch_mode=True) 처럼 사용. (mysql 지원하지 않음, Postgre만 지원하는 듯)
    2. fast_executemany=True : 이건 python odbc 드라이버를 사용할 때 사용할 수 있는 옵션 같은데 아직 테스트해보지 못했음.
  2. to_sql 옵션 : method='multi'
    • df.to_sql('table_name', con=engine, if_exists='append', chunksize=1000, index=False, method='multi')

각각의 방법으로 1000, postgresql  insert 하는 시간 테스트해본 결과.

  • 원래 소스(옵션 적용 없는 상태) : 58.40686011314392 seconds
  • use_batch_mode=True (1.1) 만 적용했을 때 : 11.04028344154358 seconds
  • use_batch_mode=True 와 method='multi' 적용 ( 1.1 + 2 ) : 3.76364803314209 seconds

ChunksizeMemory (MiB)Time (s)
100142.1336.9
1,000141.3813.8
10,000141.3812.1
100,000209.8812.7
200,000312.1512.5


댓글

이 블로그의 인기 게시물

[Django Install] 11. Install Python3 for Centos8/RedhatLinux8

[windows] filebeat 스케쥴링 테스트

[Django Install] 9.1 sc제일은행 nginx-django 연결