-
[node.js] oracle -> mysql 데이타 전송 테스트 ( 시간측정 포함 )Tech Shared 2022. 10. 5. 01:03
데이타 전송 프로그램 개발
작업 ORACLE에 있는 데이타 1,586,385 건을 조회하여 MYSQL에 입력 프로그램 node.js RDBMS Oracle, MySQL 성능이슈
MySQL에 입력할때 1건씩 입력할 경우, 실행속도가 늦어져서 bulk insert 방식을 택함
MySQL 메모리 설정 수정
MYSQL bulk insert 를 이용하여 데이타 입력하기
node.js 를 이용한 mysql bulk insert 참고 URL : https://github.com/sidorares/node-mysql2/issues/830
Warning: got packets out of order. Expected 41 but received 5 Error: Got a packet bigger than 'max_allowed_packet' bytes at PromiseConnection.query (/Users/starlits/work/retina_rapi_nodejs/node_modules/mysql2/promise.js:93:22) at SP_I_MSG_QUEUE (file:///Users/starlits/work/retina_rapi_nodejs/bin/sms_auto_sync.js:52:26) at processTicksAndRejections (node:internal/process/task_queues:96:5) at async main (file:///Users/starlits/work/retina_rapi_nodejs/bin/sms_auto_sync.js:20:22) { code: 'ER_NET_PACKET_TOO_LARGE', errno: 1153, sql: "INSERT INTO ........(중간생략)........ (1, '02"... 408707455 more characters, sqlState: '08S01', sqlMessage: "Got a packet bigger than 'max_allowed_packet' bytes" }
해결방안 ( max_allowed_packet 1G로 설정 )
mysql> show variables like 'max_allowed_packet%'; +--------------------+----------+ | Variable_name | Value | +--------------------+----------+ | max_allowed_packet | 67108864 | +--------------------+----------+ 1 row in set (0.05 sec) mysql> exit # vi /etc/mysql/mysql.conf.d/mysqld.cnf [mysqld] max_allowed_packet = 1024M # service mysql stop # service mysql start # mysql mysql> show variables like 'max_allowed_packet%'; +--------------------+------------+ | Variable_name | Value | +--------------------+------------+ | max_allowed_packet | 1073741824 | +--------------------+------------+ 1 row in set (0.01 sec)
시간측정
$ node sync.js Wed Oct 05 2022 01:00:02 GMT+0900 (대한민국 표준시) main start Wed Oct 05 2022 01:04:47 GMT+0900 (대한민국 표준시) PKG_RTN_SMS_TEST_SP_L_STRESS Wed Oct 05 2022 01:11:16 GMT+0900 (대한민국 표준시) END ---------------------------------- Oracle 데이타 SELECT 시간 : 4분 45초 MySQL 데이타 INSERT 시간 : 6분 29초
더 생각해 보기
- 맥북으로 성능 테스트를 했기 때문에 서버에서 실행했을때 성능차이가 있는지 비교 필요
- node.js 이외의 프로그램을 했을 경우, 성능향상이 있을 수 있다.
- 성능과 관련된 옵션 중에 적용하지 못한 것이 있는지 확인 필요.
'Tech Shared' 카테고리의 다른 글
MySQL 컬럼 DATA-TYPE (0) 2023.01.01 [javascript] 4bytes 이모지(emoji) 제한하기 (0) 2022.10.05 MacOS 에서 SQLDeveloper 설정 (0) 2021.12.26 ubuntu 서버에 Microsoft ODBC Driver 설치 (0) 2021.10.07