[Pandas] to_sql 속도 개선
- create_engine 옵션
- use_batch_mode=True : 소스에서 create_engine(url, client_encoding='utf8', use_batch_mode=True) 처럼 사용. (mysql 지원하지 않음, Postgre만 지원하는 듯)
- fast_executemany=True : 이건 python odbc 드라이버를 사용할 때 사용할 수 있는 옵션 같은데 아직 테스트해보지 못했음.
- 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
Chunksize | Memory (MiB) | Time (s) |
---|---|---|
100 | 142.13 | 36.9 |
1,000 | 141.38 | 13.8 |
10,000 | 141.38 | 12.1 |
100,000 | 209.88 | 12.7 |
200,000 | 312.15 | 12.5 |
댓글
댓글 쓰기