2010-07-26 2 views
4

어떤 이유에서든 SHOW TABLES과 같은 매우 간단한 쿼리는 로컬 컴퓨터에서 오랜 시간이 걸릴 수 있습니다. 내가 수동으로 dbconsole에서 동일한 쿼리를 실행하면레일에서 천천히 테이블을 느리게 표시합니다.

# line from log/development.log 
SQL (955.1ms) SHOW TABLES 

, 그것은 그들이 모든 쇼 테이블이야, 마이그레이션을 제외하고, 모든 장기 실행 쿼리 로그를 통해 찾고 < 0.01 초

에서 실행됩니다. Server version: 5.1.46 MySQL Community Server (GPL)

와 맥 OS X를 실행

SQL (170.6ms) SHOW TABLES 
    SQL (165.7ms) SHOW TABLES 
    SQL (166.1ms) SHOW TABLES 
    SQL (176.9ms) SHOW TABLES 
    SQL (166.1ms) SHOW TABLES 
    SQL (273.7ms) SHOW TABLES 
    SQL (165.9ms) SHOW TABLES 
    SQL (145.6ms) SHOW TABLES 
    SQL (142.8ms) SHOW TABLES 
    SQL (165.8ms) SHOW TABLES 
    SQL (165.9ms) SHOW TABLES 
    SQL (166.1ms) SHOW TABLES 
    SQL (199.2ms) SHOW TABLES 
    SQL (155.0ms) SHOW TABLES 
    SQL (143.7ms) SHOW TABLES 
    SQL (143.4ms) SHOW TABLES 
    SQL (153.1ms) SHOW TABLES 
    SQL (354.5ms) SHOW TABLES 
    SQL (210.3ms) SHOW TABLES 
    SQL (1060.0ms) SHOW TABLES 
    SQL (854.7ms) SHOW TABLES 
    SQL (254.4ms) SHOW TABLES 

새로운 mysql2 보석으로 전환하는 레일 2 개 레일에서이 문제 3.

+1

특별히 큰 테이블 테이블이 있습니까? 그 색인에 만족하십니까? – bjg

+1

큰 테이블이 없으며 모든 것이 인덱싱됩니다. 그게 문제 였다면 콘솔을 통해 직접 할 때 왜 1000 배나 더 빨리 돌아갈 지 알 수 없었습니다. –

답변

1

시도를했다. 이렇게하면 문제가 해결 될 수 있습니다.

/카슨

0

당신은 '캐시'열 시도 할 수 있습니다 : 초기화에

가/이렇게 some_file.rb을 :

User.columns 
OtherModel.columns 
and so on... 

서버를 불 때 실행됩니다, 처음으로 조회를 실행하면 SHOW TABLES 조회로 지연되지 않습니다.

이것은 해결책이 아닙니다. 물론 테이블에 문제가있을 수 있습니다. 또한 프로덕션 환경에서는 사용하지 않습니다. 콘솔에서 콘솔을 디버그하여 레일스를 피할 때이 트릭을 사용합니다. 모든 SHOW TABLES 쿼리를 보여줍니다.