2010-03-02 2 views
1

12 개 레코드가있는 테이블에 INSERT하려면 10-11 초가 걸립니다. - 당신이 동의20K가 내 테이블에 INSERT하는 것을 느리게 읽습니까? 외래 키 오류는 어떻습니까?

0.29 inserts/s, 0.03 updates/s, 0.09 deletes/s, 20365.73 reads/s. 20.37K reads/s 

이 많은 것 같다 :

나는 내 데이터베이스의 InnoDB의 상태에서 다음을 받고 있어요? 나는 20K의 읽기가 모두 같은 테이블이라는 것을 확신하지 못하지만, 꽤 가능하다.

또한 수 외래 키 제약 실패 느린 것을 아래로

Foreign key constraint fails for table record_lock. 

를 얻을?

다음은 삽입 할 서버에 데이터를 보내는 방법에 대한 스키마 삽입 속도의 대부분

CREATE TABLE IF NOT EXISTS `record_lock` (
    `module_id` int(10) unsigned NOT NULL, 
    `module_record_id` int(10) unsigned NOT NULL, 
    `site_id` int(10) unsigned NOT NULL, 
    `user_id` int(10) unsigned NOT NULL, 
    `expiration_date_time` datetime NOT NULL, 
    `date_time_created` datetime DEFAULT NULL, 
    PRIMARY KEY (`module_id`,`module_record_id`), 
    KEY `record_lock_site_id` (`site_id`), 
    KEY `index_user_id` (`user_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 

답변

3

달려있다. 수천 줄의 다음 insert 문 다음에 하나의 insert 문을 나열하는 경우이를 구문 분석하고 처리하는 데 몇 초가 걸립니다. 그것도 네트워크를 통해 전송하는 데 시간이 걸립니다. 그것이 당신의 타이밍을 고려하고 있는지 나는 모른다.

내가 추측해야만 키가 크게 달라지는 것은 아닙니다.

많은 레코드를 신속하게 삽입하려면 MySQL의 LOAD DATA INFILE 기능을 사용해야합니다. 나는 이것을 사용했고 10-30 초에서 1 초 미만으로 인서트 성능 시간을 줄였습니다.

http://dev.mysql.com/doc/refman/5.1/en/load-data.html