문제 요약 : 로컬서버에서 데이터를 수집화 운영 DB에 데이터를 이관시 속도 문제 발생 및, RDS 명령어 사용 문제
발생 일시 : 2024년 6월 10일
발생 장소 : 운영 데이터베이스 서버
2. 증상 기술
상세 증상 :
레시피 데이터를 크롤링하여 RDS 서버에 로컬 서버에서 수집한 CSV 파일을 RDS 서버로 Import할때 워크벤치의 Table Data Import 사용하여 import 할때 10분당 3000건의 데이터를 Import하면서 약 200만건의 데이터를 이관하라면 시간과 비용적인 문제가 발생
LOAD DATA LOCAL INFILE 명령어 사용시 권환 문제 및 명령어 문제 발생
3. 원인 분석
원인 가설 :
Table Data Import은 SQL 쿼리를 사용하여 데이터를 삽입하여 대량의 데이터를 삽입 가능성
RDS사용시 명렁어를 통해 설정이 안되며, 파라미터 그룹으로 설정해야하는 가능성
데이터 베이스의 옵션 설정의 문제 가능성
검증 과정 :
GUI로 데이터를 삽입하는 방식과, LOAD DATA LOCAL INFILE 명령어를 사용하는 방식의 속도 체크
파라미터 그룹을 통해 LOAD DATA LOCAL INFILE 설정을 변경
Connection의 Advanced 옵션을 설정
최종 원인 : Table Data Import는 쿼리를 실행하여 삽입하는 문제가 있기때문에, 대량의 데이터를 삽입하는 방식은 속도가 “LOAD DATA LOCAL INFILE” 명령어를 사용하는 방식의 비해 현저히 느리며, 워크 벤치 내에서 명령어를 통해 환경변수를 변경하게되면 적용이되지않았으며, 파라미터 그룹을 통해 변경해야했으며, Connection의 Advanced 설정에서 “OPT_LOCAL_INFILE=1” 설정을 추가 하여 속도와 명령어 오류의 대해 확인
4. 해결 방법
조치 내용 :
RDS 의 파라미터 그룹 설정
Connection의 Advanced 의 설정 추가
변경 사항 :
파라미터 그룹의 “local_infile” 설정을 1로변경
워크 벤치의 Connection의 Advanced 부분에 “OPT_LOCAL_INFILE=1” 추가
결과 확인 : GUI를 사용한 Table Data Import을 통해 삽입하는 방식의 비해 LOAD DATA LOCAL INFILE 명렁어를 통해 데이터를 사입하는 방식의 명령어 오류 없이 빠른속도로 200만건의 데이터를 약 30초안에, 데이터를 삽입 되는것을 확인