MYSQL

데이터 100,000 건 insert 테스트

앤탐. 2023. 4. 11. 16:45

기존 INSERT: insert into table values(1,2,3);

  • 153초 ~ 161초

다중 INSERT: insert into table values(1,2,3),(3,4,5) ... ;

  • 약 11.5초 ~ 12초

auto commit = 0 일때 INSERT: start transaction; insert into table values(1,2,3);

  • 약 15.3초 ~ 16초

auto commit = 0 일때 다중 INSERT: start transaction; insert into table values(1,2,3),(3,4,5) ... ;

  • 약 3.3초~ 4초

 

PHP 는 $pdo->beginTransaction() 를 실행시키면 트랜잭션모드가 실행된다.

autocommit이 자동으로 false 로 변하면서 트랜잭션 내부에서 쿼리가 도는데

 

솔직히  사용했을경우 멀티플 insert를 하나 안 하나 큰 차이가 없을 줄 알았는데 차이가 심했다.

 

테이블 제약조건 이였나 유니크 키나 insert 하는 거에 있어서 if 문 쓰듯 체크하는 조건은 먼저 없애준 후에

INSERT 하고 그 후에 제약조건 다시 걸어주면 빠르다고 하던데 나중에 한번 테스트해봐야겠다.