Согласно Innotop и Cacti, мой сервер баз данных обрабатывает примерно в 8 раз больше SHOW FIELDS
операторов, чем SELECT
или любой другой производительный запрос.Я использую Rails 3.0, поэтому он должен кэшировать столбцы после их загрузки.Я видел сообщения о том, что MySQL требует временную таблицу для каждого SHOW FIELDS
запроса, и мои данные мониторинга это подтверждают.
Правда, я использую ActiveRecord / Rails в нестандартной ситуации, которая включает запускмножество (~ 400) процессов на 100-200 компьютерах, каждый из которых загружает всю среду Rails.Эти процессы выполняются в течение по крайней мере нескольких минут, возможно, более 24 часов, делая короткие интервалы работы с базой данных каждые несколько минут.Обратите внимание, что эти процессы не используют обычный цикл запросов / ответов HTTP.
Есть ли способ избежать этого?У нас есть config.cache_classes = true
в нашем config/environments/production.rb
файле.Я на самом деле сталкиваюсь с проблемами масштабирования сервера баз данных, и я думаю, что эта проблема является основным фактором.