2013-08-14 3 views
0

MySQL에서 실행중인 새로운 Joomla 3.0 설치가 있고 Workbench를 사용하고 있습니다. 나는 매우 느린 쿼리를 계속 실행합니다. 그러나 매우 구체적인 쿼리가 아닌 것 같습니다. 예 :MySQL 쿼리가 매우 느리게 실행 중 - 일부만

SELECT * FROM joom_users 

매우 느리게 실행되고 연결이 끊기는 경우가 있습니다. 그러나 UPDATE와 INSERT는이 테이블에서 잘 작동합니다. 필자도 CSV 파일을 가져 왔고 빠르게 타오르는 모습이었습니다. 이미 실행했습니다

EXPLAIN SELECT * FROM joom_users 

분명히 잘못된 표는 없었습니다. 모든 인덱스가 있고 테이블 자체는 매우 작습니다 (약 300 행). 나는 와일드 카드가 그것을 던져 버릴지도 모른다고 생각했기 때문에 와일드 카드를 필드로 바꾸었고 2 개의 필드 (그리고 어떤 경우에는 행이없는)를 가진 다른 테이블에서 쿼리를 시도하고 ALSO가 느리게 실행된다.

또한 테이블을 변경하라는 요청도 느리게 실행됩니다. 마지막으로 Workbench (하나의 Win7, 다른 OSX)를 사용하여 여러 대의 컴퓨터를 시험해 보았습니다. 둘 다 천천히 실행되므로이 ​​문제를 일으킬 수있는 문제는 모두 제거되었습니다.

나는 이것에 당황하고 있습니다. 도움!

+0

공유 서버에서 mysql을 실행 중입니까? – akatakritos

+0

@Jim Beam 인덱스 사용이나 설명문을 이해하지 못합니다. SELECT * FROM joom_users는 인덱스를 사용할 수 없으며 인덱스를 사용하지 않으며 전체 테이블 스캔을 수행 한 다음 300 레코드를 반환해야합니다. 추가 열이 "임시 테이블 사용"과 같은 것을 제공합니까? –

+1

서버가 그 시간에 다른 작업을하고 있거나 (느린 로그를 읽으십시오) 테이블을 더 크게 변경 한 후에 최적화해야합니다. MyISAM은 많은 경우 암시 적 잠금을가집니다. 시간 패턴 (백업과의 충돌 가능성이 있음)을 찾아보십시오. joomla가 InnoDB를 지원하는지 모르겠지만 InnoDB를 사용하면 요청의 동시성이 확실히 향상됩니다 (충분한 RAM을 확보하자마자). – flaschenpost

답변

0

예제 검색어에 암묵적으로 잘못된 것은 없습니다. Theres는 사용할 수있는 인덱스가 없지만 정말 넓은 테이블이 아니면 매우 빠르다고 기대합니다.

공유 서버 환경에서는 얼마나 많은 다른 데이터베이스가 호스트되고 있는지 또는 얼마나 많이 사용되고 있는지 알 수 없습니다. 로컬 데이터베이스로 마이그레이션 할 수 있다면 성능이 향상되는지 확인할 수 있습니다.

300 명의 활성 사용자가있는 경우 전체 테이블 잠금을 사용하는 MyISAM에서 특히 많은 잠금 경합이 발생할 수 있습니다. 예를 들어 Joomla 사용자 표에 lastVisitDate이있는 것 같습니다. 로그인 한 사용자가 페이지를로드 할 때마다 페이지가 업데이트되면 잠금 문제가 발생할 수 있습니다.

관련 문제