2010-07-26 55 views
4

由於某些原因,極其簡單的查詢(如SHOW TABLES)可能會在本地計算機上花費很長時間。顯示錶在軌道上荒謬緩慢

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

如果我在DBCONSOLE手動執行相同的查詢,它運行在< 0.01秒

通過日誌對於任何長時間運行的查詢來看,除了移民,他們都表現出表。

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 

運行Mac OS X與Server version: 5.1.46 MySQL Community Server (GPL)

對梁2個Rails這個問題3.

+1

那裏有特別大的表格嗎?你對這些指標感到滿意嗎? – bjg 2010-07-26 21:16:27

+1

沒有大表,一切都被索引。如果這是問題,我不明白爲什麼直接通過控制檯執行速度會快上千倍。 – 2010-07-27 05:14:39

回答

1

嘗試切換到新的mysql2寶石。這可能會解決問題。

/卡斯滕

0

你可以試試 '緩存' 列:

在初始化/ some_file.rb做到這一點:

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

當你火的服務器最多這將被執行,所以第一次執行查詢時,它不會被SHOW TABLES查詢延遲。

這不是一個解決方案,當然,你的表格肯定有什麼問題,另外,我不在生產中使用它,當我在控制檯中調試某些東西時使用這個技巧來避免Rails顯示所有SHOW TABLES查詢。