MySQL InnoDB 삽입 작업의 성능 문제
소개
다음을 사용하여 MySQL 테이블에 데이터 삽입 InnoDB 엔진은 특정 시나리오에서 예상보다 훨씬 오래 걸릴 수 있습니다. 이 문서에서는 이러한 성능 문제를 다루고 솔루션을 제공합니다.
주요 질문
MySQL InnoDB 테이블에 데이터를 삽입하는 것이 지나치게 느린 이유는 무엇입니까?
분석
제공된 테스트 스크립트는 삽입 성능의 극명한 차이를 보여줍니다. MyISAM과 InnoDB 스토리지 엔진 사이. MyISAM은 약 6초 만에 100만 행 삽입을 완료하는 반면, InnoDB는 동일한 작업에 3400초 이상이 필요합니다.
설명
이러한 성능 격차의 주요 원인 MyISAM과 InnoDB의 근본적인 디자인 차이점에 있습니다. MyISAM에는 트랜잭션 지원이 부족하여 데이터를 보다 효율적으로 삽입할 수 있습니다. 대조적으로, InnoDB는 트랜잭션 무결성을 강화하여 각 명령문 후에 커밋 작업을 요구합니다. 기본적으로 InnoDB는 삽입할 때마다 디스크에 로그 플러시를 수행하므로 상당한 성능 오버헤드가 발생합니다.
해결책
이 성능 문제를 완화하려면 다음을 활용하는 것이 중요합니다. InnoDB의 트랜잭션 처리 기능을 효과적으로 처리합니다. 삽입 문을 명시적 트랜잭션 내에 포함시킴으로써 디스크 쓰기 빈도를 줄이고 삽입 속도를 획기적으로 향상시킬 수 있습니다.
이를 달성하려면 삽입 루프를 시작하기 전에 다음 문을 실행하세요.
START TRANSACTION
삽입 작업을 완료한 후 다음 문을 사용하여 트랜잭션을 커밋합니다.
COMMIT
위 내용은 InnoDB INSERT 성능이 MyISAM보다 훨씬 느린 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!