ПОКАЗАТЬ ТАБЛИЦЫ нелепо медленно в Rails - PullRequest
4 голосов
/ 26 июля 2010

По какой-то причине очень простые запросы, такие как SHOW TABLES, могут занимать много времени на моей локальной машине.

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

Если я выполняю тот же запрос в dbconsole вручную, он выполняется в <0.01s </p>

Просматривая журналы для любых длительных запросов, кроме миграций, они все ПОКАЗЫВАЮТ ТАБЛИЦЫ.

  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)

Была эта проблема на Rails 2 и Rails 3.

Ответы [ 2 ]

1 голос
/ 06 ноября 2010

Попробуйте переключиться на новый драгоценный камень mysql2. Это может решить проблему.

/ Карстен

0 голосов
/ 06 ноября 2010

Вы можете попробовать «кэшировать» столбцы:

В initializers / some_file.rb сделайте это:

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

Это будет выполнено при запуске сервера, поэтому первыйкогда вы выполняете запрос, он не будет задерживаться запросом SHOW TABLES.

Это не решение, конечно, в ваших таблицах должно быть что-то не так, кроме того, я этим не пользуюсьв работе я использую этот трюк при отладке чего-либо в консоли, чтобы Rails не отображал все запросы SHOW TABLES.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...