2013-05-10 4 views
1

우리 서버 데이터베이스는 mysql에 있습니다. 우리는 우리의 데이터베이스에 754 개의 테이블을 가지고 있습니다. 우리는 각 프로젝트에 대한 테이블을 만듭니다. 테이블의 큰 번호 따라서. 지난 1 주일부터 삽입 및 업데이트에 매우 긴 지연을 알게되었습니다. 새 테이블을 만들고 삽입하면 300 자 정도의 레코드를 삽입하는 데 1 분이 걸립니다.mysql 삽입, 매우 천천히 업데이트

같은 서버에있는 우리의 테스트 데이터베이스는 597 개의 테이블을 가지고 있습니다. 동일한 삽입은 테스트 db에서 매우 빠릅니다.

기본 엔진은 MYISAM입니다. 그러나 INNODB에는 테이블이 거의 없습니다.

몇 가지 트리거가 실행 중입니다. 트리거를 삭제 한 후에는 더 빨리 수행됩니다. 그러나 그것은 충분히 빠르지 않습니다.

답변

0

@swapnesh가 언급 하듯이 DESCRIBE 명령은 성능 디버깅에 매우 유용합니다. 또한 사용 문제에 대한 설치를 확인할 수 있습니다

당신은 다음과 같이 사용 : 물론

wget https://raw.github.com/rackerhacker/MySQLTuner-perl/master/mysqltuner.pl 
chmod +x mysqltuner.pl 
./mysqltuner.pl 

, 여기에 당신이 어떤 종류의를 실행하는 것이 가정입니다 유닉스 기반 시스템.

OPTIMIZE을 사용할 수 있습니다.

은 테이블 데이터의 물리적 스토리지 및 관련 인덱스 데이터 저장 공간을 줄이고 테이블을 액세스 할 때 I/O 효율을 개선하기를 재구성합니다 : 설명서에 따라 다음과 같은 않습니다. 각 테이블에 적용된 정확한 변경 에 해당 테이블에 의해 사용 된 스토리지 엔진 의존

구문 : 벌크보다는 순차적으로 이루어진 경우

OPTIMIZE TABLE tablename 
0

인서트는 통상적으로 빠르다. 명령문 당 10, 30 또는 100 개의 레코드를 삽입 해보십시오.

jdbc를 사용하는 경우 SQL을 변경하지 않고도 일괄 처리와 동일한 효과를 얻을 수 있습니다.