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 하고 그 후에 제약조건 다시 걸어주면 빠르다고 하던데 나중에 한번 테스트해봐야겠다.