Inno-Tables를 통한 가져 오기 속도에 관한 이전 질문 에 대한 후속 조치가 있습니다 (놀람!).
시나리오
적절한 시간 내에 로컬 dev 시스템에서 일부 큰 * 데이터베이스 덤프를 가져 오려고합니다. 우리는 KEY
병목 현상으로 판명되었지만 라이브 시스템에 여전히 중요한 테이블에 많은 것을 첨부했습니다.
위의 질문을 한 후 내 접근 방식 KEY ...
은 덤프에서 명령문 을 삭제 하고 키를 가져오고 다시 추가하는 것이 었습니다 .
그러나 종종 로컬에서 가져 오기 위해 현재 덤프를 편집하고이 재미있는 "설명"(- disable/enable keys
라인)을 우연히 발견했습니다.
--
-- Dumping data for table `monster`
--
LOCK TABLES `monster` WRITE;
/*!40000 ALTER TABLE `monster` DISABLE KEYS */;
INSERT … INSERT … INSERT
/*!40000 ALTER TABLE `monster` ENABLE KEYS */;
UNLOCK TABLES;
그러나 실제로 이러한 "주석"은 조건부 MySql-Statements입니다.
출력 양식을 mysql --version
보면 모든 것이 나에게 잘 어울리는 것을 감안할 때 그것은 뉴스이지만 괜찮 습니다.
mysql Ver 14.14 Distrib 5.5.38, for debian-linux-gnu (x86_64) using readline 6.3
내가 생각
하는 것 테이블이 잠겨 있습니다 (좋아요, 개발자 mashine에 있습니다.). 그런 다음 테이블 스키마에 정의 된 키가 비활성화되고 데이터를 가져오고 키가 활성화됩니다.
따라서 "데이터 삽입"단계에서는 키에 시간을 낭비하지 말고 모든 데이터를 삽입 한 후에 검사해야합니다.
KEY 'foo' (foo)'
덤프에서 모든 행을 삭제 하고 덤프를 가져온 ADD KEY 'foo' ...
후 나중에 스크립트를 실행하는 것과 동일한 동작이라고 생각합니다 .
내가 관찰
이 것은 다음 조건에 의존 키, 가져 오기 및 다시 추가 키를 삭제 빠르게 수동에 방법입니다 DISABLE KEYS
생성 문 제mysqldump
덤프 + mysql 가져 오기 수동 편집 + 키 추가 = 15 + 8 + 8 ≈ 30 분
일반 mysql 가져 오기 : 포기했습니다.
나는 도울 수 없지만 여기에 매우 근본적인 것이 빠져 있다고 생각합니다 (또는 데이터베이스가 나를 트롤링하고 있습니다).
mysqldump --innodb-optimize-keys
Percona percona.com/doc/percona-server/5.5/management/… 에서 사용 장기 : mysqldump 사용을 중지하고 mydumper 또는 xtrabackup을 사용하십시오.