2011-10-30 1 views
2

:느린 삽입 추가 2 차 키 내가 알아낼 수없는 InnoDB의 테이블이있는 버프 문제가

  • 내가 4 열 기본 구성하는 5 열이있는 테이블이를 키가 있으며 3 개의 보조 키가 더 있습니다. 이 테이블에서 대량 삽입은 매우 오랜 시간이 걸립니다 - 최대 100,000 레코드 (최대 250 레코드/초)입니다.
  • 모든 보조 인덱스를 삭제하면 삽입 속도가 매우 빠릅니다. 100,000 레코드 (5000 레코드/초 또는 20 배 빠름)
  • 기본 키의 일부이기도 한 하나의 bigint 사용자 ID 열에 한 개의 보조 키를 추가하면 (특정 사용자의 데이터를 자주 검색해야 함) 인서트는 즉시 3-4 배 느려집니다.

여기서는 무슨 일이 벌어지고 있습니까? 나는 그 대답이 InnoDB가 인덱스를 저장하는 방식에 있다고 생각하지만, 많은 독서 후에, 나는 그것을 이해할 수 없다. 가장 이상한 점은 MyISAM 엔진이 항상 5000 레코드/초에서 작동하는 모든 인덱스가 추가 된 같은 테이블이라는 것입니다.

+0

보조 인덱스는 "고유"하므로 외래 키나 고유 인덱스가 없으므로 명백하게 느려질 수있는 것이 없습니다. –

답변

0

이유를 모르겠습니다. 하지만 MySQL 웹 사이트는 InnoDB에 보조 키를 삽입하기위한 성능 튜닝 팁을 제공합니다. (이것은 이것이 바로 그 방법이며이를 처리해야 함을 의미합니다.) "If you have UNIQUE constraints on secondary keys, you can speed up table imports by temporarily turning off the uniqueness checks during the import session..."

+0

감사합니다. 고유 한 제약 조건이 없기 때문에 테이블에 외래 키가 없기 때문에 언급해야합니다. MySQL의 조언은 실제로 도움이되지 않았다. –